usercontroller.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package controller
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. "strconv"
  7. "trading-go/model"
  8. "trading-go/response"
  9. "trading-go/util"
  10. )
  11. // Register
  12. // @Tags 用户模块
  13. // @Summary 创建用户
  14. // @Accept application/json
  15. // @Produce application/json
  16. // @param json body model.UserJson true "用户信息"
  17. // @Success 200 object response.Response
  18. // @Router /user/register [post]
  19. func Register(c *gin.Context) {
  20. var userJ model.UserJson
  21. err := c.ShouldBindJSON(&userJ)
  22. fmt.Println(userJ)
  23. if err != nil {
  24. msg := err.Error()
  25. response.Fail(c.Writer, msg, 500)
  26. return
  27. }
  28. id := util.GetID()
  29. if !util.CheckMobile(userJ.Phone) {
  30. msg := util.PhoneFormatError.Error()
  31. response.Fail(c.Writer, msg, 400)
  32. return
  33. }
  34. user := model.User{
  35. Uid: uint(id),
  36. Vid: userJ.Vid,
  37. Name: userJ.Name,
  38. Avatar: userJ.Avatar,
  39. Phone: userJ.Phone,
  40. }
  41. err = user.Register()
  42. if err != nil {
  43. msg := err.Error()
  44. response.Fail(c.Writer, msg, 500)
  45. return
  46. } else {
  47. msg := "register succeed"
  48. response.Success(c.Writer, msg, nil)
  49. }
  50. }
  51. // Login
  52. // @Tags 用户模块
  53. // @Summary 登录
  54. // @Produce application/json
  55. // @param vid formData string false "微信ID"
  56. // @Success 200 {object} response.Response
  57. // @Router /user/login [post]
  58. func Login(c *gin.Context) {
  59. var user model.User
  60. user.Vid = c.PostForm("vid")
  61. err, nu := user.Login()
  62. if err != nil && err.Error() == "sql: no rows in result set" {
  63. err = util.NoSuchUserError
  64. msg := err.Error()
  65. response.Fail(c.Writer, msg, 403)
  66. return
  67. }
  68. if err != nil {
  69. msg := err.Error()
  70. response.Fail(c.Writer, msg, 500)
  71. return
  72. }
  73. token, err := util.CreatToken(nu.Uid)
  74. if err != nil {
  75. msg := err.Error()
  76. response.Fail(c.Writer, msg, 500)
  77. return
  78. }
  79. data := gin.H{
  80. "token": token,
  81. "user_info": nu,
  82. }
  83. response.Success(c.Writer, "success", data)
  84. }
  85. // ModifyUser
  86. // @Tags 用户模块
  87. // @Summary 修改用户信息
  88. // @Accept application/json
  89. // @Produce application/json
  90. // @param json body model.User true "用户信息"
  91. // @Success 200 {object} response.Response
  92. // @Router /user/modify [post]
  93. func ModifyUser(c *gin.Context) {
  94. var user model.User
  95. err := c.ShouldBindJSON(&user)
  96. if err != nil {
  97. msg := err.Error()
  98. response.Fail(c.Writer, msg, 500)
  99. return
  100. }
  101. //fmt.Printf("%#v", user)
  102. if err := user.SPhone(); err != nil {
  103. if errors.Is(err, util.PhoneBeUsed) {
  104. response.Fail(c.Writer, err.Error(), 403)
  105. } else {
  106. response.Fail(c.Writer, err.Error(), 500)
  107. }
  108. return
  109. }
  110. err = user.Modify()
  111. if err != nil {
  112. msg := err.Error()
  113. response.Fail(c.Writer, msg, 500)
  114. } else {
  115. msg := "modify succeed"
  116. response.Success(c.Writer, msg, nil)
  117. }
  118. }
  119. // UserInfo
  120. // @Tags 用户模块
  121. // @Summary 获取用户信息
  122. // @Produce application/json
  123. // @Success 200 {object} response.Response
  124. // @Router /user/info [get]
  125. func UserInfo(c *gin.Context) {
  126. var u model.User
  127. token := c.GetHeader("Authorization")
  128. t, claim, err := util.ParseToken(token)
  129. if err != nil {
  130. response.Fail(c.Writer, "failed to parse token", 500)
  131. return
  132. }
  133. if !t.Valid {
  134. response.Fail(c.Writer, "failed", 400)
  135. return
  136. }
  137. u.Uid = claim.UserId
  138. nu, err := u.Info()
  139. if err != nil {
  140. response.Fail(c.Writer, "failed", 500)
  141. }
  142. response.Success(c.Writer, "success", nu)
  143. }
  144. // GetUserPaged
  145. // @Tags 用户模块
  146. // @Summary 分页用户信息
  147. // @Produce application/json
  148. // @Param page path int true "页数"
  149. // @Param pageSize path int true "一页的大小"
  150. // @Success 200 {object} response.Response
  151. // @Router /user/{page}/{pageSize} [get]
  152. func GetUserPaged(c *gin.Context) {
  153. var user model.User
  154. p := c.Param("page")
  155. pS := c.Param("pageSize")
  156. page, err := strconv.Atoi(p)
  157. pageSize, err := strconv.Atoi(pS)
  158. if err != nil {
  159. response.Fail(c.Writer, err.Error(), 500)
  160. return
  161. }
  162. rsp, err := user.GetPaged(page, pageSize)
  163. if err != nil {
  164. msg := err.Error()
  165. response.Fail(c.Writer, msg, 500)
  166. return
  167. }
  168. cnt, err := user.GetCnt()
  169. if err != nil {
  170. msg := err.Error()
  171. response.Fail(c.Writer, msg, 500)
  172. return
  173. }
  174. if cnt > page*pageSize {
  175. rsp.HNext = true
  176. }
  177. response.Success(c.Writer, "success", rsp)
  178. }