auth_controller.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package user
  2. import (
  3. logger "eta_mini_ht_api/common/component/log"
  4. "eta_mini_ht_api/common/exception"
  5. authUtils "eta_mini_ht_api/common/utils/auth"
  6. "eta_mini_ht_api/controllers"
  7. "eta_mini_ht_api/service/auth"
  8. )
  9. type AuthController struct {
  10. controllers.BaseController
  11. }
  12. //func (a *AuthController) Prepare() {
  13. // if wechatClient == nil {
  14. // wechatClient = wechat.GetInstance()
  15. // }
  16. //}
  17. // LoginReq 获取验证码请求
  18. type LoginReq struct {
  19. Code string `json:"code"`
  20. VerifyCode string `json:"verify_code"`
  21. Mobile string `json:"mobile"`
  22. }
  23. // Login 小程序登录接口
  24. // @Summary 小程序用户登录
  25. // @Description 用户通过微信小程序登录
  26. // @Param mobile body LoginReq true "登录请求体"
  27. // @Success 200 {object} controllers.BaseResponse
  28. // @router /login [post]
  29. func (a *AuthController) Login() {
  30. controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) {
  31. result = a.InitWrapData("登录失败")
  32. loginReq := new(LoginReq)
  33. a.GetPostParams(loginReq)
  34. if !authUtils.IsValidMobile(loginReq.Mobile) {
  35. a.FailedResult("登录失败", result)
  36. err = exception.New(exception.IllegalPhoneNumber)
  37. return
  38. }
  39. err = auth.CheckUser(loginReq.Mobile, loginReq.VerifyCode)
  40. if err != nil {
  41. a.FailedResult("登录失败", result)
  42. logger.Warn("验证码校验失败:%v", err)
  43. return
  44. }
  45. //注册用户或者登录
  46. var token string
  47. token, err = auth.Login(auth.LoginDTO{
  48. VerifyCode: loginReq.VerifyCode,
  49. Code: loginReq.Code,
  50. Mobile: loginReq.Mobile,
  51. })
  52. if err != nil {
  53. a.FailedResult("登录失败", result)
  54. return
  55. }
  56. a.SuccessResult("登录成功", &LoginResp{
  57. Token: token,
  58. }, result)
  59. return
  60. })
  61. }
  62. type LoginResp struct {
  63. Token string
  64. }
  65. // SmsCodeReq 获取验证码请求
  66. type SmsCodeReq struct {
  67. Mobile string `json:"mobile"`
  68. }
  69. // SMSCode 小程序手机验证码接口
  70. // @Summary 获取手机验证码
  71. // @Param mobile body SmsCodeReq true "小程序手机验证码接口"
  72. // @Success 200 {object} controllers.BaseResponse
  73. // @Description 用户发送手机验证码
  74. // @router /sendCode [post]
  75. func (a *AuthController) SMSCode() {
  76. controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) {
  77. result = a.InitWrapData("发送短信失败")
  78. mobile := new(SmsCodeReq)
  79. a.GetPostParams(mobile)
  80. phoneNum := mobile.Mobile
  81. if !authUtils.IsValidMobile(phoneNum) {
  82. return result, exception.New(exception.IllegalPhoneNumber)
  83. }
  84. //
  85. //发送短息
  86. err = auth.SendSMSCode(phoneNum)
  87. if err != nil {
  88. logger.Warn("发送短信失败:%v", err)
  89. return result, err
  90. }
  91. if err != nil {
  92. return result, err
  93. }
  94. result = &controllers.WrapData{Msg: "验证码发送成功"}
  95. return result, nil
  96. })
  97. }