usercontroller.go 4.0 KB

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