auth_controller.go 2.6 KB

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