usercontroller.go 3.2 KB

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