usercontroller.go 3.0 KB

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