user.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package user
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "hongze/hongze_yb/controller/response"
  5. userLogic "hongze/hongze_yb/logic/user"
  6. "hongze/hongze_yb/models/request/user"
  7. userResp "hongze/hongze_yb/models/response/user"
  8. userService "hongze/hongze_yb/services/user"
  9. "hongze/hongze_yb/utils"
  10. "strings"
  11. )
  12. // Login 登录接口
  13. // @Tags 用户模块
  14. // @Summary 用户登录
  15. // @Description 用户手机号/邮箱登录
  16. // @securityDefinitions.basic BasicAuth
  17. // @Param Authorization header string true "微信登录后获取到的token"
  18. // @Accept json
  19. // @Product json
  20. // @Param data body user.LoginReq true "请求参数"
  21. // @Success 200 {object} user.LoginResp
  22. // @Router /user/login [post]
  23. func Login(c *gin.Context) {
  24. var req user.LoginReq
  25. if c.ShouldBind(&req) != nil {
  26. response.Fail("参数异常", c)
  27. return
  28. }
  29. userInfo := userService.GetInfoByClaims(c)
  30. openId := userInfo.OpenID
  31. if openId == "" {
  32. response.Fail("参数异常", c)
  33. return
  34. }
  35. if req.LoginType == 1 {
  36. //手机登录
  37. if req.Mobile == "" {
  38. response.Fail("手机号不能为空,请输入手机号", c)
  39. return
  40. }
  41. req.Mobile = strings.Trim(req.Mobile, " ")
  42. } else if req.LoginType == 2 {
  43. //邮箱登录
  44. if req.Email == "" {
  45. response.Fail("邮箱不能为空,请输入邮箱", c)
  46. return
  47. }
  48. if !utils.ValidateEmailFormatat(req.Email) {
  49. response.Fail("邮箱格式错误,请重新输入", c)
  50. return
  51. }
  52. } else {
  53. response.Fail("无效的登录方式", c)
  54. return
  55. }
  56. token, newUserInfo, err, errMsg := userService.BindWxUser(openId, req.Mobile, req.Email, req.VerifyCode, req.LoginType, req.AreaNum, 1)
  57. if err != nil {
  58. if errMsg != "" {
  59. errMsg = "登录失败"
  60. }
  61. response.Fail(errMsg, c)
  62. return
  63. }
  64. response.OkData("登录成功", userResp.LoginResp{
  65. UserID: int(newUserInfo.UserID),
  66. Token: token,
  67. Email: newUserInfo.Email,
  68. Mobile: newUserInfo.Mobile,
  69. }, c)
  70. }
  71. // GetSmsCode 获取短信验证码接口
  72. // @Tags 用户模块
  73. // @Summary 获取短信验证码
  74. // @Description 获取短信验证码接口
  75. // @securityDefinitions.basic BasicAuth
  76. // @Param Authorization header string true "微信登录后获取到的token"
  77. // @Param mobile query string true "手机号"
  78. // @Param area_num query string true "手机国际区号(中国大陆:86)"
  79. // @Accept json
  80. // @Product json
  81. // @Success 200 {string} string 获取验证码成功
  82. // @Failure 400 {string} string 手机号不能为空,请输入手机号
  83. // @Router /user/get_sms_code [get]
  84. func GetSmsCode(c *gin.Context) {
  85. userInfo := userService.GetInfoByClaims(c)
  86. openId := userInfo.OpenID
  87. if openId == "" {
  88. response.Fail("参数异常", c)
  89. return
  90. }
  91. mobile := c.DefaultQuery("mobile", "")
  92. areaNum := c.DefaultQuery("area_num", "")
  93. err, errMsg := userLogic.SendSmsCode(openId, mobile, areaNum)
  94. if err != nil {
  95. if errMsg != "" {
  96. errMsg = "获取验证码失败"
  97. }
  98. response.Fail(errMsg, c)
  99. return
  100. }
  101. response.Ok("获取验证码成功", c)
  102. }
  103. // GetEmailCode 获取邮箱验证码接口
  104. // @Tags 用户模块
  105. // @Summary 获取邮箱验证码
  106. // @Description 获取邮箱验证码
  107. // @securityDefinitions.basic BasicAuth
  108. // @Param Authorization header string true "微信登录后获取到的token"
  109. // @Param email query string true "电子邮箱账号"
  110. // @Accept json
  111. // @Product json
  112. // @Success 200 {string} string 获取验证码成功
  113. // @Failure 400 {string} string 请输入邮箱地址
  114. // @Router /user/get_email_code [get]
  115. func GetEmailCode(c *gin.Context) {
  116. userInfo := userService.GetInfoByClaims(c)
  117. openId := userInfo.OpenID
  118. if openId == "" {
  119. response.Fail("参数异常", c)
  120. return
  121. }
  122. email := c.DefaultQuery("email", "")
  123. if email == "" {
  124. response.Fail("请输入邮箱地址", c)
  125. return
  126. }
  127. if !utils.ValidateEmailFormatat(email) {
  128. response.Fail("邮箱格式错误,请重新输入", c)
  129. return
  130. }
  131. err, errMsg := userLogic.SendEmailCode(openId, email)
  132. if err != nil {
  133. if errMsg != "" {
  134. errMsg = "获取验证码失败"
  135. }
  136. response.Fail(errMsg, c)
  137. return
  138. }
  139. response.Ok("获取验证码成功", c)
  140. }
  141. // Info 我的详情
  142. // @Tags 用户模块
  143. // @Summary 我的详情
  144. // @Description 我的详情
  145. // @securityDefinitions.basic BasicAuth
  146. // @Param Authorization header string true "微信登录后获取到的token"
  147. // @Accept json
  148. // @Product json
  149. // @Success 200 {object} user.Detail "获取成功"
  150. // @failure 400 {string} string "获取失败"
  151. // @Router /user/info [get]
  152. func Info(c *gin.Context) {
  153. userInfo := userService.GetInfoByClaims(c)
  154. list, err, errMsg := userLogic.GetUserInfo(*userInfo)
  155. if err != nil {
  156. if errMsg != "" {
  157. errMsg = "获取失败"
  158. }
  159. response.Fail(errMsg, c)
  160. return
  161. }
  162. response.OkData("获取成功", list, c)
  163. }
  164. // GetLastApplyInfo 获取最近一条申请单信息
  165. // @Tags 用户模块
  166. // @Summary 获取最近一条申请单信息
  167. // @Description 获取最近一条申请单信息
  168. // @securityDefinitions.basic BasicAuth
  169. // @Param Authorization header string true "微信登录后获取到的token"
  170. // @Accept json
  171. // @Product json
  172. // @Success 200 {object} user.Detail "获取成功"
  173. // @failure 400 {string} string "获取失败"
  174. // @Router /user/get_seller [get]
  175. func GetLastApplyInfo(c *gin.Context) {
  176. userInfo := userService.GetInfoByClaims(c)
  177. userLogic.GetLastApplyInfo(int(userInfo.UserID))
  178. //list, err, errMsg := userLogic.GetLastApplyInfo(*userInfo)
  179. //if err != nil {
  180. // if errMsg != "" {
  181. // errMsg = "获取失败"
  182. // }
  183. // response.Fail(errMsg, c)
  184. // return
  185. //}
  186. response.OkData("获取成功", "list", c)
  187. }