|
@@ -2,53 +2,71 @@ package user
|
|
|
|
|
|
import (
|
|
import (
|
|
logger "eta_mini_ht_api/common/component/log"
|
|
logger "eta_mini_ht_api/common/component/log"
|
|
- "eta_mini_ht_api/common/component/wechat"
|
|
|
|
"eta_mini_ht_api/common/exception"
|
|
"eta_mini_ht_api/common/exception"
|
|
authUtils "eta_mini_ht_api/common/utils/auth"
|
|
authUtils "eta_mini_ht_api/common/utils/auth"
|
|
- "eta_mini_ht_api/common/utils/redis"
|
|
|
|
- "eta_mini_ht_api/common/utils/sms"
|
|
|
|
"eta_mini_ht_api/controllers"
|
|
"eta_mini_ht_api/controllers"
|
|
- "fmt"
|
|
|
|
|
|
+ "eta_mini_ht_api/service/auth"
|
|
)
|
|
)
|
|
|
|
|
|
type AuthController struct {
|
|
type AuthController struct {
|
|
controllers.BaseController
|
|
controllers.BaseController
|
|
}
|
|
}
|
|
|
|
|
|
-var (
|
|
|
|
- smsSender sms.SMSClient
|
|
|
|
|
|
+//func (a *AuthController) Prepare() {
|
|
|
|
+// if wechatClient == nil {
|
|
|
|
+// wechatClient = wechat.GetInstance()
|
|
|
|
+// }
|
|
|
|
+//}
|
|
|
|
|
|
- wechatClient *wechat.Client
|
|
|
|
-)
|
|
|
|
-
|
|
|
|
-func (a *AuthController) message() sms.SMSClient {
|
|
|
|
- if smsSender == nil {
|
|
|
|
- smsSender = sms.GetInstance()
|
|
|
|
- }
|
|
|
|
- return smsSender
|
|
|
|
-}
|
|
|
|
-func (a *AuthController) Prepare() {
|
|
|
|
- if wechatClient == nil {
|
|
|
|
- wechatClient = wechat.GetInstance()
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// SmsCodeReq 获取验证码请求
|
|
|
|
|
|
+// LoginReq 获取验证码请求
|
|
type LoginReq struct {
|
|
type LoginReq struct {
|
|
- Code string `json:"code"`
|
|
|
|
|
|
+ Code string `json:"code"`
|
|
|
|
+ VerifyCode string `json:"verify_code"`
|
|
|
|
+ Mobile string `json:"mobile"`
|
|
}
|
|
}
|
|
|
|
|
|
// Login 小程序登录接口
|
|
// Login 小程序登录接口
|
|
// @Summary 小程序用户登录
|
|
// @Summary 小程序用户登录
|
|
// @Description 用户通过微信小程序登录
|
|
// @Description 用户通过微信小程序登录
|
|
-// @Param code body string true "获取微信小程序code"
|
|
|
|
|
|
+// @Param mobile body LoginReq true "登录请求体"
|
|
// @Success 200 {object} controllers.BaseResponse
|
|
// @Success 200 {object} controllers.BaseResponse
|
|
// @router /login [post]
|
|
// @router /login [post]
|
|
func (a *AuthController) Login() {
|
|
func (a *AuthController) Login() {
|
|
- loginReq := new(LoginReq)
|
|
|
|
- a.GetPostParams(loginReq)
|
|
|
|
- wechatClient.Login(loginReq.Code)
|
|
|
|
- //wechatClient.GetAccessToken(loginReq.Code)
|
|
|
|
|
|
+ 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 获取验证码请求
|
|
// SmsCodeReq 获取验证码请求
|
|
@@ -64,25 +82,20 @@ type SmsCodeReq struct {
|
|
// @router /sendCode [post]
|
|
// @router /sendCode [post]
|
|
func (a *AuthController) SMSCode() {
|
|
func (a *AuthController) SMSCode() {
|
|
controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) {
|
|
controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) {
|
|
|
|
+ result = a.InitWrapData("发送短信失败")
|
|
mobile := new(SmsCodeReq)
|
|
mobile := new(SmsCodeReq)
|
|
a.GetPostParams(mobile)
|
|
a.GetPostParams(mobile)
|
|
phoneNum := mobile.Mobile
|
|
phoneNum := mobile.Mobile
|
|
if !authUtils.IsValidMobile(phoneNum) {
|
|
if !authUtils.IsValidMobile(phoneNum) {
|
|
return result, exception.New(exception.IllegalPhoneNumber)
|
|
return result, exception.New(exception.IllegalPhoneNumber)
|
|
}
|
|
}
|
|
- code, err := authUtils.GenerateCode(6)
|
|
|
|
- if err != nil {
|
|
|
|
- logger.Warn("生成验证码失败:%v", err)
|
|
|
|
- return result, exception.New(exception.SMSCodeGenerateFailed)
|
|
|
|
- }
|
|
|
|
- fmt.Println("验证码:", code)
|
|
|
|
|
|
+ //
|
|
//发送短息
|
|
//发送短息
|
|
- _, err = a.message().SendSms(phoneNum, code)
|
|
|
|
|
|
+ err = auth.SendSMSCode(phoneNum)
|
|
if err != nil {
|
|
if err != nil {
|
|
logger.Warn("发送短信失败:%v", err)
|
|
logger.Warn("发送短信失败:%v", err)
|
|
- return result, exception.New(exception.SendingSMSFailed)
|
|
|
|
|
|
+ return result, err
|
|
}
|
|
}
|
|
- err = a.Cache().SetString(redis.GenerateSmsKey(phoneNum), code, a.message().GetExpireMinute())
|
|
|
|
if err != nil {
|
|
if err != nil {
|
|
return result, err
|
|
return result, err
|
|
}
|
|
}
|