May1145 1 anno fa
parent
commit
f780368a8a

BIN
trading-go/bin/trading-go


+ 10 - 1
trading-go/controller/chatcontroller.go

@@ -13,6 +13,9 @@ import (
 )
 
 var UP = websocket.Upgrader{
+	CheckOrigin: func(r *http.Request) bool {
+		return true
+	},
 	ReadBufferSize:  1024,
 	WriteBufferSize: 1024,
 }
@@ -46,12 +49,18 @@ func send(conn *websocket.Conn, uid uint) {
 			fmt.Println("link closed")
 			break
 		}
-		if data.Time == 1 {
+		if data.MsgType == 1 {
 			err = conn.WriteMessage(data.MsgType, msg)
 			if err != nil {
 				fmt.Println(err.Error())
 				break
 			}
+		} else if data.MsgType == 2 {
+			err = conn.WriteMessage(websocket.TextMessage, msg)
+			if err != nil {
+				fmt.Println(err.Error())
+				break
+			}
 		}
 	}
 }

+ 4 - 0
trading-go/controller/middleware.go

@@ -4,9 +4,11 @@ import (
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"net/http"
+	"trading-go/response"
 	"trading-go/util"
 )
 
+// Cors 跨域问题
 func Cors(c *gin.Context) {
 	method := c.Request.Method
 	c.Header("Access-Control-Allow-Origin", c.GetHeader("Origin"))
@@ -22,6 +24,7 @@ func Cors(c *gin.Context) {
 	c.Next()
 }
 
+// VerifyToken 验证token
 func VerifyToken(c *gin.Context) {
 	var tokenString string
 	tokenString = c.GetHeader("token")
@@ -29,6 +32,7 @@ func VerifyToken(c *gin.Context) {
 	if t.Valid {
 		c.Next()
 	} else {
+		response.Fail(c.Writer, "token lapsed", 400)
 		c.Abort()
 	}
 }

+ 10 - 4
trading-go/controller/piccontrller.go

@@ -1,9 +1,9 @@
 package controller
 
 import (
-	"fmt"
 	"github.com/gin-gonic/gin"
 	"strconv"
+	"strings"
 	"trading-go/model"
 	"trading-go/response"
 	"trading-go/util"
@@ -25,14 +25,21 @@ func Upload(c *gin.Context) {
 		response.Fail(c.Writer, msg, 500)
 		return
 	}
+	suffixs := strings.Split(file.Filename, ".")
+	suffix := suffixs[len(suffixs)-1]
+	err = util.CheckImg(suffix)
+	if err != nil {
+		msg := err.Error()
+		response.Fail(c.Writer, msg, 400)
+		return
+	}
+
 	path := util.MakePath(file.Filename)
-	fmt.Println(path)
 	if err != nil {
 		msg := err.Error()
 		response.Fail(c.Writer, msg, 500)
 		return
 	}
-	fmt.Println(path)
 	err = c.SaveUploadedFile(file, "."+path)
 	if err != nil {
 		msg := err.Error()
@@ -42,7 +49,6 @@ func Upload(c *gin.Context) {
 	url := "http://" + c.Request.Host + path
 	pic.Name = file.Filename
 	pic.Url = url
-	fmt.Println(pic)
 	err = pic.Save()
 	if err != nil {
 		msg := err.Error()

+ 40 - 17
trading-go/controller/usercontroller.go

@@ -27,12 +27,13 @@ func Register(c *gin.Context) {
 		response.Fail(c.Writer, msg, 500)
 		return
 	}
+
 	id := util.GetID()
-	if !util.CheckMobile(userJ.Phone) {
-		msg := util.PhoneFormatError.Error()
-		response.Fail(c.Writer, msg, 400)
-		return
-	}
+	//if !util.CheckMobile(userJ.Phone) {
+	//	msg := util.PhoneFormatError.Error()
+	//	response.Fail(c.Writer, msg, 400)
+	//	return
+	//}
 	user := model.User{
 		Uid:    uint(id),
 		Vid:    userJ.Vid,
@@ -40,6 +41,15 @@ func Register(c *gin.Context) {
 		Avatar: userJ.Avatar,
 		Phone:  userJ.Phone,
 	}
+
+	if !user.CheckVid() {
+		response.Fail(c.Writer, "user already exist", 400)
+	}
+
+	if user.Vid == "" {
+		response.Fail(c.Writer, "vid can not be null", 400)
+	}
+
 	err = user.Register()
 
 	go util.NewUser(uint(id))
@@ -65,6 +75,7 @@ func Login(c *gin.Context) {
 	var user model.User
 	user.Vid = c.PostForm("vid")
 	err, nu := user.Login()
+	fmt.Printf("%v", user.Vid)
 	if err != nil && err.Error() == "sql: no rows in result set" {
 		err = util.NoSuchUserError
 		msg := err.Error()
@@ -86,6 +97,7 @@ func Login(c *gin.Context) {
 		"token":     token,
 		"user_info": nu,
 	}
+	fmt.Println(data)
 	response.Success(c.Writer, "success", data)
 }
 
@@ -98,29 +110,38 @@ func Login(c *gin.Context) {
 // @Success 200 {object} response.Response
 // @Router /user/modify [post]
 func ModifyUser(c *gin.Context) {
-	var user model.User
-	err := c.ShouldBindJSON(&user)
+	var userJ model.UserJson
+	err := c.ShouldBindJSON(&userJ)
+	fmt.Printf("%#v", userJ)
+	user := userJ.Change()
 	if err != nil {
 		msg := err.Error()
 		response.Fail(c.Writer, msg, 500)
 		return
 	}
-	//fmt.Printf("%#v", user)
-	if err := user.SPhone(); err != nil {
-		if errors.Is(err, util.PhoneBeUsed) {
-			response.Fail(c.Writer, err.Error(), 403)
-		} else {
-			response.Fail(c.Writer, err.Error(), 500)
+	if user.Phone != "" {
+		if !util.CheckMobile(userJ.Phone) {
+			msg := util.PhoneFormatError.Error()
+			response.Fail(c.Writer, msg, 400)
+			return
+		}
+		if err := user.SPhone(); err != nil {
+			if errors.Is(err, util.PhoneBeUsed) {
+				response.Fail(c.Writer, err.Error(), 403)
+			} else {
+				response.Fail(c.Writer, err.Error(), 500)
+			}
+			return
 		}
-		return
 	}
-	err = user.Modify()
+	userOld := user.GetUser()
+	nu, err := user.Modify(&userOld)
 	if err != nil {
 		msg := err.Error()
 		response.Fail(c.Writer, msg, 500)
 	} else {
 		msg := "modify succeed"
-		response.Success(c.Writer, msg, nil)
+		response.Success(c.Writer, msg, nu)
 	}
 }
 
@@ -133,6 +154,7 @@ func ModifyUser(c *gin.Context) {
 func UserInfo(c *gin.Context) {
 	var u model.User
 	token := c.GetHeader("Authorization")
+	fmt.Println(token)
 	t, claim, err := util.ParseToken(token)
 	if err != nil {
 		response.Fail(c.Writer, "failed to parse token", 500)
@@ -144,7 +166,8 @@ func UserInfo(c *gin.Context) {
 	}
 	u.Uid = claim.UserId
 	nu, err := u.Info()
-	if err != nil {
+	fmt.Printf("%v", nu)
+	if err != nil || nu.Vid == "" {
 		response.Fail(c.Writer, "failed", 500)
 	}
 	response.Success(c.Writer, "success", nu)

+ 7 - 1
trading-go/docs/docs.go

@@ -1423,6 +1423,9 @@ const docTemplate = `{
                 "phone": {
                     "type": "string"
                 },
+                "sign": {
+                    "type": "string"
+                },
                 "uid": {
                     "type": "integer"
                 },
@@ -1443,6 +1446,9 @@ const docTemplate = `{
                 "phone": {
                     "type": "string"
                 },
+                "sign": {
+                    "type": "string"
+                },
                 "vid": {
                     "type": "string"
                 }
@@ -1466,7 +1472,7 @@ const docTemplate = `{
 // SwaggerInfo holds exported Swagger Info so clients can modify it
 var SwaggerInfo = &swag.Spec{
 	Version:          "1.0",
-	Host:             "124.222.126.172:8084",
+	Host:             "192.168.31.28:8084",
 	BasePath:         "/WeChatTrading/trading-go",
 	Schemes:          []string{},
 	Title:            "二手交易",

+ 7 - 1
trading-go/docs/swagger.json

@@ -11,7 +11,7 @@
         },
         "version": "1.0"
     },
-    "host": "124.222.126.172:8084",
+    "host": "192.168.31.28:8084",
     "basePath": "/WeChatTrading/trading-go",
     "paths": {
         "/appraise/create": {
@@ -1416,6 +1416,9 @@
                 "phone": {
                     "type": "string"
                 },
+                "sign": {
+                    "type": "string"
+                },
                 "uid": {
                     "type": "integer"
                 },
@@ -1436,6 +1439,9 @@
                 "phone": {
                     "type": "string"
                 },
+                "sign": {
+                    "type": "string"
+                },
                 "vid": {
                     "type": "string"
                 }

+ 5 - 1
trading-go/docs/swagger.yaml

@@ -111,6 +111,8 @@ definitions:
         type: string
       phone:
         type: string
+      sign:
+        type: string
       uid:
         type: integer
       vid:
@@ -124,6 +126,8 @@ definitions:
         type: string
       phone:
         type: string
+      sign:
+        type: string
       vid:
         type: string
     type: object
@@ -135,7 +139,7 @@ definitions:
       message:
         type: string
     type: object
-host: 124.222.126.172:8084
+host: 192.168.31.28:8084
 info:
   contact: {}
   description: 一个基于微信小程序的校园二手交易平台的api文档

+ 2 - 1
trading-go/go.mod

@@ -3,6 +3,7 @@ module trading-go
 go 1.19
 
 require (
+	github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4
 	github.com/gin-gonic/gin v1.9.1
 	github.com/go-ego/riot v0.0.0-20201013133145-f4c30acb3704
 	github.com/go-redis/redis/v8 v8.11.5
@@ -14,6 +15,7 @@ require (
 	github.com/swaggo/files v1.0.1
 	github.com/swaggo/gin-swagger v1.6.0
 	github.com/swaggo/swag v1.16.1
+	github.com/zhenghaoz/gorse v0.5.0-alpha.0.20230905121337-24d69b1426a0
 	gorm.io/driver/mysql v1.5.1
 	gorm.io/gorm v1.25.4
 )
@@ -80,7 +82,6 @@ require (
 	github.com/syndtr/goleveldb v1.0.0 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 	github.com/ugorji/go/codec v1.2.11 // indirect
-	github.com/zhenghaoz/gorse v0.5.0-alpha.0.20230905121337-24d69b1426a0 // indirect
 	go.etcd.io/bbolt v1.3.4 // indirect
 	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 // indirect
 	go.opentelemetry.io/otel v1.11.1 // indirect

+ 23 - 3
trading-go/go.sum

@@ -122,8 +122,11 @@ github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q
 github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4=
+github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4 h1:Z9J0PVIt1PuibOShaOw1jH8hUYz+Ak8NLsR/GI0Hv5I=
+github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4/go.mod h1:CEPcgZiz8998l9E8fDm16h8UfHRL7b+5oG0j/0koeVw=
 github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
 github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
 github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
 github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
 github.com/go-ego/cedar v0.10.0 h1:422oGVkurGN2JZ0kiOev4hF6gsQULbePfjQIB4JHl8M=
@@ -166,15 +169,20 @@ github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/
 github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
 github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU=
 github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
 github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
 github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
 github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
 github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
 github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
 github.com/go-playground/validator/v10 v10.14.1 h1:9c50NUPC30zyuKprjL3vNZ0m5oG+jU0zvx4AqHGnv4k=
 github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
 github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
 github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
+github.com/go-redis/redis/v9 v9.0.0-rc.1 h1:/+bS+yeUnanqAbuD3QwlejzQZ+4eqgfUtFTG4b+QnXs=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
@@ -187,6 +195,7 @@ github.com/go-vgo/gt/conf v0.0.0-20200606140533-a397c46789df/go.mod h1:MHs4G2Hbf
 github.com/go-vgo/gt/info v0.0.0-20200606140533-a397c46789df h1:ULtirwL4ObVnO6CrcLagDDk6k/GdB/QgHtxbd9xO13M=
 github.com/go-vgo/gt/info v0.0.0-20200606140533-a397c46789df/go.mod h1:oNEHyJBeLzb115lhNoO8XkhkgbXmw9wxF0uU6Jshun8=
 github.com/go-vgo/zlog v0.0.0-20200606142114-9aade0d23ce3/go.mod h1:ZGTLsWVYOOIAzYOYX/KNXrH7XuSxbNNORQ2BvaJcMc0=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
 github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -225,7 +234,6 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
 github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
 github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -304,14 +312,15 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
 github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
 github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
-github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
 github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
 github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -322,6 +331,7 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
 github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
@@ -351,12 +361,13 @@ github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
 github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
-github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMFtw=
 github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs=
 github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
 github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
 github.com/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0=
 github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -378,6 +389,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
 github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
 github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
 github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
 github.com/shirou/gopsutil v2.19.6+incompatible/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc=
@@ -435,7 +448,9 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP
 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
 github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
 github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
 github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU=
 github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
 github.com/vcaesar/tt v0.0.0-20191220180712-e14ab9e55f21/go.mod h1:GHPxQYhn+7OgKakRusH7KJ0M5MhywoeLb8Fcffs/Gtg=
@@ -482,6 +497,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
 golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA=
@@ -628,6 +644,8 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -801,6 +819,7 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
 google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
@@ -826,6 +845,7 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw=

+ 2 - 1
trading-go/main.go

@@ -15,9 +15,10 @@ import (
 // @license.name Apache 2.0
 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html
 
-// @host 124.222.126.172:8084
+// @host 192.168.31.28:8084
 // @BasePath /WeChatTrading/trading-go
 func main() {
+
 	r := routine.GetRoutine()
 	port := viper.GetString("web.port")
 	fmt.Println("[api文档] =====>>> http://124.222.126.172:8084/swagger/index.html#/")

+ 13 - 13
trading-go/model/goods.go

@@ -10,7 +10,7 @@ import (
 
 type Goods struct {
 	Id        uint   `db:"id"`
-	PicId     uint   `db:"pic_id"`
+	Pic       string `db:"pic"`
 	OwnerId   uint   `db:"owner_id"`
 	Desc      string `db:"desc"`
 	Title     string `db:"title"`
@@ -21,7 +21,7 @@ type Goods struct {
 }
 
 type GoodsJson struct {
-	PicId      uint   `json:"pic_id"`
+	Pic        string `json:"pic"`
 	OwnerId    uint   `json:"ownerId"`
 	Desc       string `json:"desc"`
 	Title      string `json:"title"`
@@ -33,7 +33,7 @@ type GoodsJson struct {
 }
 
 type GoodsSurfaceJson struct {
-	PicId     uint   `json:"picId"`
+	Pic       string `json:"pic"`
 	OwnerId   uint   `json:"ownerId"`
 	Title     string `json:"title"`
 	Price     uint   `json:"price"`
@@ -43,7 +43,7 @@ type GoodsSurfaceJson struct {
 
 type GoodsSurface struct {
 	Id        uint   `db:"id"`
-	PicId     uint   `db:"pic_id"`
+	Pic       string `db:"pic"`
 	OwnerId   uint   `db:"owner_id"`
 	Title     string `db:"title"`
 	Price     uint   `db:"price"`
@@ -53,7 +53,7 @@ type GoodsSurface struct {
 
 func (g *GoodsJson) Change() Goods {
 	return Goods{
-		PicId:     g.PicId,
+		Pic:       g.Pic,
 		OwnerId:   g.OwnerId,
 		Desc:      g.Desc,
 		Title:     g.Title,
@@ -66,13 +66,13 @@ func (g *GoodsJson) Change() Goods {
 
 func (g *Goods) Create() (id uint, err error) {
 	db := common.DB
-	sqlStr := "INSERT INTO goods(pic_id, owner_id, `desc`, title, price, integrity, place, state) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
-	_, err = db.Exec(sqlStr, g.PicId, g.OwnerId, g.Desc, g.Title, g.Price, g.Integrity, g.Place, g.State)
+	sqlStr := "INSERT INTO goods(pic, owner_id, `desc`, title, price, integrity, place, state) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
+	_, err = db.Exec(sqlStr, g.Pic, g.OwnerId, g.Desc, g.Title, g.Price, g.Integrity, g.Place, g.State)
 	if err != nil {
 		return
 	}
-	sqlStr = "INSERT INTO goods_surfaces(pic_id, owner_id, title, price, integrity, state) VALUES (?, ?, ?, ?, ?, ?)"
-	exec, err := db.Exec(sqlStr, g.PicId, g.OwnerId, g.Title, g.Price, g.Integrity, g.State)
+	sqlStr = "INSERT INTO goods_surfaces(pic, owner_id, title, price, integrity, state) VALUES (?, ?, ?, ?, ?, ?)"
+	exec, err := db.Exec(sqlStr, g.Pic, g.OwnerId, g.Title, g.Price, g.Integrity, g.State)
 	if err != nil {
 		return
 	}
@@ -119,13 +119,13 @@ func (g *GoodsSurface) GetCnt() (cnt int, err error) {
 
 func (g *Goods) Revise() error {
 	db := common.DB
-	sqlStr := "UPDATE goods SET pic_id = ?, owner_id = ?, `desc` = ?, title = ?, price = ?, integrity = ?, place = ?, state = ? WHERE id = ?"
-	_, err := db.Exec(sqlStr, g.PicId, g.OwnerId, g.Desc, g.Title, g.Price, g.Integrity, g.Place, g.State, g.Id)
+	sqlStr := "UPDATE goods SET pic = ?, owner_id = ?, `desc` = ?, title = ?, price = ?, integrity = ?, place = ?, state = ? WHERE id = ?"
+	_, err := db.Exec(sqlStr, g.Pic, g.OwnerId, g.Desc, g.Title, g.Price, g.Integrity, g.Place, g.State, g.Id)
 	if err != nil {
 		return err
 	}
-	sqlStr = "UPDATE goods_surfaces SET pic_id = ?, owner_id = ?, title = ?, price = ?, integrity = ?, state = ? WHERE id = ?"
-	_, err = db.Exec(sqlStr, g.PicId, g.OwnerId, g.Title, g.Price, g.Integrity, g.State, g.Id)
+	sqlStr = "UPDATE goods_surfaces SET pic = ?, owner_id = ?, title = ?, price = ?, integrity = ?, state = ? WHERE id = ?"
+	_, err = db.Exec(sqlStr, g.Pic, g.OwnerId, g.Title, g.Price, g.Integrity, g.State, g.Id)
 	return err
 }
 

+ 14 - 3
trading-go/model/orders.go

@@ -24,6 +24,15 @@ type OrderJson struct {
 	State   int    `json:"state"`
 }
 
+type OrderSurface struct {
+	GoodsImg string `json:"goodsImg" db:"pic"`
+	Price    uint   `json:"price" db:"price"`
+	State    int    `json:"state" db:"state"`
+	Title    string `json:"title" db:"title"`
+	BName    string `json:"bName" db:"name"`
+	Bid      uint   `json:"bid,string" db:"uid"`
+}
+
 func (o OrderJson) Change() Order {
 	return Order{
 		GoodsId: o.GoodsId,
@@ -42,10 +51,12 @@ func (o Order) GetAll() (orders []Order, err error) {
 	return
 }
 
-func (o Order) GetOwner(ownerId uint) (orders []Order, err error) {
+func (o Order) GetOwner(ownerId uint) (orderSurface []OrderSurface, err error) {
 	db := common.DB
-	sqlStr := "SELECT * FROM orders WHERE buyer_id = ?"
-	err = db.Select(&orders, sqlStr, ownerId)
+	sqlStr := `SELECT g.pic, g.price, o.state, g.title, u.name, u.uid 
+			   FROM orders as o, goods_surfaces as g, users as u
+			   WHERE o.buyer_id = ? AND o.goods_id = g.id AND g.owner_id = u.uid ;`
+	err = db.Select(&orderSurface, sqlStr, ownerId)
 	return
 }
 

+ 79 - 13
trading-go/model/user.go

@@ -2,29 +2,45 @@ package model
 
 import (
 	"fmt"
+	"strconv"
 	"trading-go/common"
 	"trading-go/response"
 	"trading-go/util"
 )
 
 type User struct {
-	Uid    uint   `db:"uid"`
-	Vid    string `db:"vid"`
-	Name   string `db:"name"`
-	Avatar string `db:"avatar"`
-	Phone  string `db:"phone"`
+	Uid    uint   `db:"uid" json:"uid,string"`
+	Vid    string `db:"vid" json:"vid"`
+	Name   string `db:"name" json:"name"`
+	Avatar string `db:"avatar" json:"avatar"`
+	Phone  string `db:"phone" json:"phone"`
+	Sign   string `db:"sign" json:"sign"`
 }
 
 type UserJson struct {
+	Uid    string `json:"uid"`
 	Vid    string `json:"vid"`
 	Name   string `json:"name"`
 	Avatar string `json:"avatar"`
 	Phone  string `json:"phone"`
+	Sign   string `json:"sign"`
+}
+
+func (u UserJson) Change() User {
+	uid, _ := strconv.Atoi(u.Uid)
+	return User{
+		Uid:    uint(uid),
+		Vid:    u.Vid,
+		Name:   u.Name,
+		Avatar: u.Avatar,
+		Phone:  u.Phone,
+		Sign:   u.Sign,
+	}
 }
 
 func (u User) Register() error {
 	db := common.DB
-	sqlStr := "INSERT INTO users(uid, vid,name, avatar, phone) values (:uid, :vid, :name, :avatar, :phone)"
+	sqlStr := "INSERT INTO users(uid, vid,name, avatar, phone, sign) values (:uid, :vid, :name, :avatar, :phone, :sign)"
 	exec, err := db.NamedExec(sqlStr, u)
 	if err != nil {
 		return err
@@ -62,21 +78,56 @@ func (u User) SPhone() error {
 }
 
 // Modify 修改信息
-func (u User) Modify() error {
+func (u User) Modify(old *User) (User, error) {
+	var user User
 	db := common.DB
-	sqlStr := "UPDATE users set name = ?,avatar = ?, phone = ? WHERE uid = ?"
-	exec, err := db.Exec(sqlStr, u.Name, u.Avatar, u.Phone, u.Uid)
+
+	if u.Name == "" {
+		u.Name = old.Name
+	}
+
+	if u.Avatar == "" {
+		u.Avatar = old.Avatar
+	}
+
+	if u.Phone == "" {
+		u.Phone = old.Phone
+	}
+
+	if u.Sign == "" {
+		u.Sign = old.Sign
+	}
+
+	sqlStr := "UPDATE users set name = ?,avatar = ?, phone = ?, sign = ? WHERE uid = ?"
+	exec, err := db.Exec(sqlStr, u.Name, u.Avatar, u.Phone, u.Sign, u.Uid)
 	if err != nil {
-		return err
+		return User{}, err
 	}
 	affected, err := exec.RowsAffected()
 	if err != nil {
-		return err
+		return User{}, err
 	}
 	if affected != 1 {
-		return util.UpdateFailError
+		return User{}, util.UpdateFailError
 	}
-	return nil
+	sqlStr = "SELECT * FROM users WHERE uid = ?"
+	err = db.Get(&user, sqlStr, u.Uid)
+	if err != nil {
+		return User{}, err
+	}
+	return user, nil
+}
+
+func (u User) FindByIds(ids []uint) (users []User, err error) {
+	db := common.DB
+	sqlStr := "SELECT * FROM users WHERE uid = ?"
+	for i := 0; i < len(ids); i++ {
+		err := db.Get(&users[i], sqlStr, ids[i])
+		if err != nil {
+			return nil, err
+		}
+	}
+	return
 }
 
 // Info 获取用户信息
@@ -104,3 +155,18 @@ func (u User) GetCnt() (cnt int, err error) {
 	err = db.Get(&cnt, sqlStr)
 	return
 }
+
+func (u User) CheckVid() bool {
+	db := common.DB
+	sqlStr := "SELECT COUNT(1) FROM users WHERE vid = ?"
+	cnt := 0
+	_ = db.Get(&cnt, sqlStr)
+	return cnt == 0
+}
+
+func (u User) GetUser() (user User) {
+	db := common.DB
+	sqlStr := "SELECT * FROM users WHERE uid = ?"
+	_ = db.Get(&user, sqlStr, u.Uid)
+	return
+}

BIN
trading-go/pics/1694489226Snipaste_2023-09-12_11-19-46.png


BIN
trading-go/pics/1694489322Snipaste_2023-09-12_11-19-46.png


BIN
trading-go/pics/1694494659R-C.jpg


BIN
trading-go/pics/1698427662hvwRB4SYIhB2d85dedb14362dc3a251c6c85705ec495.jpg


+ 3 - 2
trading-go/routine/routine.go

@@ -1,12 +1,13 @@
 package routine
 
 import (
+	limits "github.com/gin-contrib/size"
 	"github.com/gin-gonic/gin"
 	swaggerfiles "github.com/swaggo/files"
 	ginSwagger "github.com/swaggo/gin-swagger"
 	"net/http"
 	"trading-go/controller"
-	"trading-go/docs" // 千万不要忘了导入把你上一步生成的docs
+	"trading-go/docs"
 )
 
 func GetRoutine() *gin.Engine {
@@ -54,7 +55,7 @@ func GetRoutine() *gin.Engine {
 	pic := r.Group("pic")
 	{
 		pic.GET("/:page/:pageSize", controller.GetPicPaged)
-		pic.POST("upload", controller.Upload)
+		pic.POST("upload", limits.RequestSizeLimiter(2<<20), controller.Upload)
 		pic.GET("", controller.GetAllPic)
 		pic.DELETE("delete/:id", controller.DPic)
 	}

+ 11 - 0
trading-go/util/check.go

@@ -2,6 +2,8 @@ package util
 
 import "regexp"
 
+var img = []string{"jpeg", "tiff", "png", "gif", "eps", "jpg", "bmp"}
+
 // CheckMobile 检验手机号
 func CheckMobile(phone string) bool {
 	// 匹配规则
@@ -18,3 +20,12 @@ func CheckMobile(phone string) bool {
 	return reg.MatchString(phone)
 
 }
+
+func CheckImg(suffix string) error {
+	for _, i := range img {
+		if suffix == i {
+			return nil
+		}
+	}
+	return ImgFormatError
+}

+ 1 - 0
trading-go/util/error.go

@@ -10,4 +10,5 @@ var (
 	PhoneFormatError = errors.New("phone format error")
 	NoSuchGoodsError = errors.New("no such goods")
 	NoRecommendError = errors.New("no recommend")
+	ImgFormatError   = errors.New("img format error")
 )