package user import ( logger "eta_mini_ht_api/common/component/log" "eta_mini_ht_api/common/exception" authUtils "eta_mini_ht_api/common/utils/auth" "eta_mini_ht_api/controllers" "eta_mini_ht_api/service/auth" ) type AuthController struct { controllers.BaseController } // LoginReq 获取验证码请求 type LoginReq struct { Code string `json:"code"` VerifyCode string `json:"verify_code"` Mobile string `json:"mobile"` } // Login 小程序登录接口 // @Summary 小程序用户登录 // @Description 用户通过微信小程序登录 // @Param mobile body LoginReq true "登录请求体" // @Success 200 {object} controllers.BaseResponse // @router /login [post] func (a *AuthController) Login() { controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) { result = a.InitWrapData("登录失败") loginReq := new(LoginReq) a.GetPostParams(loginReq) if !authUtils.IsValidMobile(loginReq.Mobile) { a.FailedResult("登录失败", result) err = exception.New(exception.IllegalPhoneNumber) return } err = auth.CheckUser(loginReq.Mobile, loginReq.VerifyCode) if err != nil { a.FailedResult("登录失败", result) logger.Warn("验证码校验失败:%v", err) return } //注册用户或者登录 var token string token, err = auth.Login(auth.LoginDTO{ VerifyCode: loginReq.VerifyCode, Code: loginReq.Code, Mobile: loginReq.Mobile, }) if err != nil { a.FailedResult("登录失败", result) return } a.SuccessResult("登录成功", &LoginResp{ Token: token, }, result) return }) } type LoginResp struct { Token string } // SmsCodeReq 获取验证码请求 type SmsCodeReq struct { Mobile string `json:"mobile"` } // SMSCode 小程序手机验证码接口 // @Summary 获取手机验证码 // @Param mobile body SmsCodeReq true "小程序手机验证码接口" // @Success 200 {object} controllers.BaseResponse // @Description 用户发送手机验证码 // @router /sendCode [post] func (a *AuthController) SMSCode() { controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) { result = a.InitWrapData("发送短信失败") mobile := new(SmsCodeReq) a.GetPostParams(mobile) phoneNum := mobile.Mobile if !authUtils.IsValidMobile(phoneNum) { return result, exception.New(exception.IllegalPhoneNumber) } // //发送短息 err = auth.SendSMSCode(phoneNum) if err != nil { logger.Warn("发送短信失败:%v", err) return result, err } if err != nil { return result, err } result = &controllers.WrapData{Msg: "验证码发送成功"} return result, nil }) }