usercontroller.go 4.5 KB

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