usercontroller.go 3.1 KB

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