ziwen 1 年之前
父节点
当前提交
f3ce0dca89
共有 4 个文件被更改,包括 154 次插入43 次删除
  1. 76 25
      controller/auth.go
  2. 57 7
      controller/resp/base.go
  3. 9 3
      models/english_report_email/email.go
  4. 12 8
      services/user.go

+ 76 - 25
controller/auth.go

@@ -39,7 +39,11 @@ func (a *AuthController) Login(c *gin.Context) {
 		return
 	}
 	if sysUser == nil {
-		resp.Fail("Login failed. Please check your entries and try again.", c)
+		if req.Type == 1 {
+			resp.Unregistered("账号未注册.", c)
+		} else {
+			resp.Unbound("手机号未绑定.", c)
+		}
 		return
 	}
 	if sysUser.Enable == 0 {
@@ -47,7 +51,7 @@ func (a *AuthController) Login(c *gin.Context) {
 		return
 	}
 	if sysUser.Status == 3 {
-		resp.FailData("Your trial has ended</br>Enjoyed your experience with us?</br>Contact us at stephanie@hzinsights.com to extend your trial.", "Err:"+err.Error(), c)
+		resp.Expired("试用权限超期", c)
 		return
 	}
 	account := utils.MD5(req.Account)
@@ -110,22 +114,23 @@ func (a *AuthController) Register(c *gin.Context) {
 		return
 	}
 	if emailItem != nil {
-		if emailItem.Status == 1 {
-			//已经是正式用户,更新密码即可
-			emailItem.Password = req.Password
-			emailItem.ModifyTime = time.Now()
-
-			err = emailItem.Update([]string{"Password", "ModifyTime"})
-			if err != nil {
-				resp.FailMsg("修改密码失败", "修改密码失败,Err:"+err.Error(), c)
-				return
-			}
-			resp.Ok("注册成功", c)
-		} else if emailItem.Status == 2 {
-			resp.Fail("There is already a user account associated with this email address. Please log in instead.", c)
+		//if emailItem.Status == 1 {
+		//	//已经是正式用户,更新密码即可
+		//	emailItem.Password = req.Password
+		//	emailItem.ModifyTime = time.Now()
+		//
+		//	err = emailItem.Update([]string{"Password", "ModifyTime"})
+		//	if err != nil {
+		//		resp.FailMsg("修改密码失败", "修改密码失败,Err:"+err.Error(), c)
+		//		return
+		//	}
+		//	resp.Ok("注册成功", c)
+		//} else
+		if emailItem.Status == 2 || emailItem.Status == 1 {
+			resp.Registered("邮箱已注册.", c)
 			return
 		} else if emailItem.Status == 3 {
-			resp.Fail("Your trial has ended</br>Enjoyed your experience with us?</br>Contact us at stephanie@hzinsights.com to extend your trial.", c)
+			resp.Expired("试用权限超期", c)
 			return
 		}
 	}
@@ -167,7 +172,7 @@ func (a *AuthController) Register(c *gin.Context) {
 		Email:            req.Email,
 		EnglishYbSession: sysSession,
 	}
-	resp.OkData("注册成功",respItem, c)
+	resp.OkData("注册成功", respItem, c)
 }
 
 // @Title 修改密码
@@ -278,7 +283,7 @@ func (a *AuthController) GetEmailCode(c *gin.Context) {
 			resp.FailData("获取客户邮箱信息失败 ", "Err:"+err.Error(), c)
 			return
 		}
-		if emailItem != nil{
+		if userEmail != nil {
 			name = userEmail.Name
 		}
 	}
@@ -319,6 +324,22 @@ func (a *AuthController) BindMobile(c *gin.Context) {
 		return
 	}
 
+	if req.CountryCode == "" {
+		resp.Fail("区号不能为空", c)
+		return
+	}
+
+	emailItem := new(english_report_email.Email)
+	userEmail, err := emailItem.GetByMobile(req.Mobile, req.CountryCode)
+	if err != nil && err != utils.ErrNoRow {
+		resp.FailData("获取客户邮箱信息失败 ", "Err:"+err.Error(), c)
+		return
+	}
+	if userEmail != nil {
+		resp.Bound("手机号已绑定 ", c)
+		return
+	}
+
 	item, err := msg_code.GetMsgCode(req.Mobile, req.SmsCode)
 	if err != nil {
 		if err == utils.ErrNoRow {
@@ -335,12 +356,13 @@ func (a *AuthController) BindMobile(c *gin.Context) {
 	}
 
 	user := english_report_email.Email{
-		Id:     userinfo.Id,
-		Mobile: req.Mobile,
+		Id:          userinfo.Id,
+		Mobile:      req.Mobile,
+		CountryCode: req.CountryCode,
 	}
 	user.ModifyTime = time.Now()
 
-	err = user.Update([]string{"Mobile"})
+	err = user.Update([]string{"Mobile", "CountryCode", "ModifyTime"})
 	if err != nil {
 		resp.FailMsg("绑定手机号失败", "修改手机号失败,Err:"+err.Error(), c)
 		return
@@ -364,7 +386,7 @@ func (a *AuthController) ForgetPwd(c *gin.Context) {
 	userinfo := services.GetInfoByClaims(c)
 
 	if req.Account == "" {
-		resp.Fail("手机号不能为空", c)
+		resp.Fail("号不能为空", c)
 		return
 	}
 
@@ -378,6 +400,29 @@ func (a *AuthController) ForgetPwd(c *gin.Context) {
 		return
 	}
 
+	emailItem := new(english_report_email.Email)
+	if req.Type == 1 {
+		userEmail, err := emailItem.GetByEmail(req.Account)
+		if err != nil && err != utils.ErrNoRow {
+			resp.FailData("获取客户邮箱信息失败 ", "Err:"+err.Error(), c)
+			return
+		}
+		if userEmail != nil {
+			resp.Unregistered("账号未注册", c)
+			return
+		}
+	} else {
+		userEmail, err := emailItem.GetByMobile(req.Account, req.CountryCode)
+		if err != nil && err != utils.ErrNoRow {
+			resp.FailData("获取客户邮箱信息失败 ", "Err:"+err.Error(), c)
+			return
+		}
+		if userEmail != nil {
+			resp.Unbound("手机号未绑定", c)
+			return
+		}
+	}
+
 	item, err := msg_code.GetMsgCode(req.Account, req.SmsCode)
 	if err != nil {
 		if err == utils.ErrNoRow {
@@ -442,13 +487,19 @@ func (a *AuthController) ModifyMobile(c *gin.Context) {
 		return
 	}
 
+	if req.CountryCode == "" {
+		resp.Fail("区号不能为空", c)
+		return
+	}
+
 	emailitem := english_report_email.Email{
-		Id:     userinfo.Id,
-		Mobile: req.NewMobile,
+		Id:          userinfo.Id,
+		Mobile:      req.NewMobile,
+		CountryCode: req.CountryCode,
 	}
 	emailitem.ModifyTime = time.Now()
 
-	err = emailitem.Update([]string{"Mobile"})
+	err = emailitem.Update([]string{"Mobile", "CountryCode", "ModifyTime"})
 	if err != nil {
 		resp.FailMsg("修改手机号失败", "修改手机号失败,Err:"+err.Error(), c)
 		return

+ 57 - 7
controller/resp/base.go

@@ -10,13 +10,18 @@ import (
 )
 
 var (
-	OK_CODE            = 200  //业务成功
-	FAIL_CODE          = 400  //业务错误
-	TOKEN_ERROR_CODE   = 401  //toke异常
-	NO_AUTH            = 403  //没有权限
-	SPECIFIC_FAIL_CODE = 4001 // 业务指定错误
-	HASFORBIDDEN_CODE = 4010  // 管理员账号被禁用
-	PASSWORDCHANGE_CODE = 4011  // 管理员账号被禁用
+	OK_CODE             = 200  //业务成功
+	FAIL_CODE           = 400  //业务错误
+	TOKEN_ERROR_CODE    = 401  //toke异常
+	NO_AUTH             = 403  //没有权限
+	SPECIFIC_FAIL_CODE  = 4001 // 业务指定错误
+	HASFORBIDDEN_CODE   = 4010 // 管理员账号被禁用
+	PASSWORDCHANGE_CODE = 4011 // 管理员账号被禁用
+	EXPIRED_CODE        = 4012 // 已到期
+	UNREGISTERED_CODE   = 4013 // 未注册
+	UNBOUND_CODE        = 4014 // 未绑定
+	REGISTERED_CODE     = 4015 // 已注册
+	BOUND_CODE     = 4016 // 已绑定
 )
 
 type ResultData struct {
@@ -154,3 +159,48 @@ func FailMsg(msg, errMsg string, c *gin.Context) {
 	}
 	result(200, resultData, c)
 }
+
+// Expired 过期
+func Expired(msg string, c *gin.Context) {
+	resultData := ResultData{
+		Code: FAIL_CODE,
+		Msg:  msg,
+	}
+	result(200, resultData, c)
+}
+
+// Unregistered 未注册
+func Unregistered(msg string, c *gin.Context) {
+	resultData := ResultData{
+		Code: UNREGISTERED_CODE,
+		Msg:  msg,
+	}
+	result(200, resultData, c)
+}
+
+// Unbound 未绑定
+func Unbound(msg string, c *gin.Context) {
+	resultData := ResultData{
+		Code: UNBOUND_CODE,
+		Msg:  msg,
+	}
+	result(200, resultData, c)
+}
+
+// Registered 已注册
+func Registered(msg string, c *gin.Context) {
+	resultData := ResultData{
+		Code: REGISTERED_CODE,
+		Msg:  msg,
+	}
+	result(200, resultData, c)
+}
+
+// Bound 已绑定
+func Bound(msg string, c *gin.Context) {
+	resultData := ResultData{
+		Code: BOUND_CODE,
+		Msg:  msg,
+	}
+	result(200, resultData, c)
+}

+ 9 - 3
models/english_report_email/email.go

@@ -22,6 +22,7 @@ type Email struct {
 	Status       int       `description:"1:正式,2:临时,3:终止"`
 	Password     string    `gorm:"column:password" json:"password"`
 	Mobile       string    `gorm:"column:mobile" json:"mobile"`
+	CountryCode  string    `gorm:"column:country_code" json:"country_code"` //国家代码
 	base.TimeBase
 }
 
@@ -71,7 +72,12 @@ func CheckUser(email string) (item *Email, err error) {
 	return
 }
 
-func (e *Email) GetByEmail(id string) (item *Email, err error) {
-	err = global.MYSQL["rddp"].Model(e).Where("email = ? ", id).First(&item).Error
+func (e *Email) GetByEmail(email string) (item *Email, err error) {
+	err = global.MYSQL["rddp"].Model(e).Where("email = ? ", email).First(&item).Error
 	return
-}
+}
+
+func (e *Email) GetByMobile(mobile, countryCode string) (item *Email, err error) {
+	err = global.MYSQL["rddp"].Model(e).Where("mobile = ? AND country_code = ?", mobile, countryCode).First(&item).Error
+	return
+}

+ 12 - 8
services/user.go

@@ -51,18 +51,22 @@ func GetInfoByClaims(c *gin.Context) (userInfo UserInfo) {
 }
 
 type BindMobileReq struct {
-	Mobile  string
-	SmsCode string //验证码
+	CountryCode string `description:"区号"`
+	Mobile      string
+	SmsCode     string //验证码
 }
 
 type ForgetPwdReq struct {
-	Account  string `description:"账号"`
-	Password string `description:"密码"`
-	SmsCode  string
+	Type        int    `description:"类型 1:邮箱 2:手机"`
+	CountryCode string `description:"区号"`
+	Account     string `description:"账号"`
+	Password    string `description:"密码"`
+	SmsCode     string
 }
 
 type ModifyMobile struct {
-	OldMobile string
-	NewMobile string
-	SmsCode   string
+	CountryCode string `description:"区号"`
+	OldMobile   string
+	NewMobile   string
+	SmsCode     string
 }