package controller import ( "errors" "github.com/gin-gonic/gin" "strconv" "trading-go/model" "trading-go/response" "trading-go/util" ) // Register // @Tags 用户模块 // @Summary 创建用户 // @param vid formData string false "微信ID" // @param name formData string false "用户名" // @param avatar formData string false "头像" // @Success 200 {string} json{"code","data","message"} // @Router /user/register [post] func Register(c *gin.Context) { var user model.User user.Vid = c.PostForm("vid") user.Name = c.PostForm("name") user.Avatar = c.PostForm("avatar") user.Uid = util.GenID() err := user.Register() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) } else { msg := "register succeed" response.Success(c.Writer, msg, nil) } } // Login // @Tags 用户模块 // @Summary 登录 // @param vid formData string false "微信ID" // @Success 200 {string} json{"code","data","token"} // @Router /user/login [post] func Login(c *gin.Context) { var user model.User user.Vid = c.PostForm("vid") err, nu := user.Login() if err != nil && err.Error() == "sql: no rows in result set" { err = util.NoSuchUserError msg := err.Error() response.Fail(c.Writer, msg, 403) return } if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } token, err := util.CreatToken(nu.Uid) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } data := gin.H{ "token": token, "user_info": nu, } response.Success(c.Writer, "success", data) } // Modify // @Tags 用户模块 // @Summary 修改用户信息 // @param uid formData string false "用户ID" // @param avatar formData string false "头像" // @param name formData string false "用户名" // @param phone formData string false "电话" // @Success 200 {string} json{"code","data","token"} // @Router /user/modify [post] func Modify(c *gin.Context) { var user model.User id := c.PostForm("uid") uid, err := strconv.Atoi(id) user.Uid = int64(uid) user.Phone = c.PostForm("phone") user.Avatar = c.PostForm("avatar") user.Name = c.PostForm("name") //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) } return } err = user.Modify() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) } else { msg := "modify succeed" response.Success(c.Writer, msg, nil) } } // UserInfo // @Tags 用户模块 // @Summary 获取用户信息 // @Success 200 {string} json{"code","data"} // @Router /user/info [get] func UserInfo(c *gin.Context) { var u model.User token := c.GetHeader("Authorization") t, claim, err := util.ParseToken(token) if err != nil { response.Fail(c.Writer, "failed to parse token", 500) return } if !t.Valid { response.Fail(c.Writer, "failed", 400) return } u.Uid = claim.UserId nu, err := u.Info() if err != nil { response.Fail(c.Writer, "failed", 500) } response.Success(c.Writer, "success", nu) }