123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- package controller
- import (
- "errors"
- "github.com/gin-gonic/gin"
- "strconv"
- "trading-go/model"
- "trading-go/response"
- "trading-go/util"
- )
- // Register
- // @Tags 用户模块
- // @Summary 创建用户
- // @Accept application/json
- // @Produce application/json
- // @param json body model.UserJson true "用户信息"
- // @Success 200 object response.Response
- // @Router /user/register [post]
- func Register(c *gin.Context) {
- var userJ model.UserJson
- err := c.ShouldBindJSON(&userJ)
- if err != nil {
- msg := err.Error()
- 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
- //}
- user := model.User{
- Uid: uint(id),
- Vid: userJ.Vid,
- Name: userJ.Name,
- 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))
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- } else {
- msg := "register succeed"
- response.Success(c.Writer, msg, nil)
- }
- }
- // Login
- // @Tags 用户模块
- // @Summary 登录
- // @Produce application/json
- // @param vid formData string false "微信ID"
- // @Success 200 {object} response.Response
- // @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)
- }
- // ModifyUser
- // @Tags 用户模块
- // @Summary 修改用户信息
- // @Accept application/json
- // @Produce application/json
- // @param json body model.User true "用户信息"
- // @Success 200 {object} response.Response
- // @Router /user/modify [post]
- func ModifyUser(c *gin.Context) {
- var userJ model.UserJson
- err := c.ShouldBindJSON(&userJ)
- user := userJ.Change()
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- }
- 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
- }
- }
- 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, nu)
- }
- }
- // UserInfo
- // @Tags 用户模块
- // @Summary 获取用户信息
- // @Produce application/json
- // @Success 200 {object} response.Response
- // @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 || nu.Vid == "" {
- response.Fail(c.Writer, "failed", 500)
- }
- response.Success(c.Writer, "success", nu)
- }
- // GetUserPaged
- // @Tags 用户模块
- // @Summary 分页用户信息
- // @Produce application/json
- // @Param page path int true "页数"
- // @Param pageSize path int true "一页的大小"
- // @Success 200 {object} response.Response
- // @Router /user/{page}/{pageSize} [get]
- func GetUserPaged(c *gin.Context) {
- var user model.User
- p := c.Param("page")
- pS := c.Param("pageSize")
- page, err := strconv.Atoi(p)
- pageSize, err := strconv.Atoi(pS)
- if err != nil {
- response.Fail(c.Writer, err.Error(), 500)
- return
- }
- rsp, err := user.GetPaged(page, pageSize)
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- }
- cnt, err := user.GetCnt()
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- }
- if cnt > page*pageSize {
- rsp.HNext = true
- }
- response.Success(c.Writer, "success", rsp)
- }
- // GetUserList
- // @Tags 用户模块
- // @Summary 批量获取用户信息
- // @Produce application/json
- // @Param uid body []string true "用户id列表"
- // @Success 200 {object} response.Response
- // @Router /user/list [post]
- func GetUserList(c *gin.Context) {
- var u model.User
- jsonData := struct {
- Uid []string `json:"uid"`
- }{}
- err := c.ShouldBindJSON(&jsonData)
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- }
- userInfo, err := u.GetUserList(jsonData.Uid)
- if err != nil {
- msg := err.Error()
- response.Fail(c.Writer, msg, 500)
- return
- }
- response.Success(c.Writer, "success", gin.H{"users": userInfo})
- }
|