Browse Source

新增/编辑用户调整

hsun 1 year ago
parent
commit
e3c575eaa5

+ 64 - 20
controllers/sys_admin.go

@@ -296,6 +296,7 @@ func (this *SysAdminController) ListSysuser() {
 	br.Data = resp
 }
 
+// Add
 // @Title 新增系统用户
 // @Description 新增系统用户接口
 // @Param	request	body system.SysuserAddReq true "type json string"
@@ -314,7 +315,6 @@ func (this *SysAdminController) Add() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-
 	if req.RoleId <= 0 {
 		br.Msg = "请选择角色"
 		br.ErrMsg = "角色ID小于等于0"
@@ -332,7 +332,22 @@ func (this *SysAdminController) Add() {
 		br.IsSendEmail = false
 		return
 	}
+
+	// 手机号和邮箱必填一个
+	req.Mobile = strings.TrimSpace(req.Mobile)
+	req.Email = strings.TrimSpace(req.Email)
+	if req.Mobile == "" && req.Email == "" {
+		br.Msg = "至少输入一个手机号或邮箱"
+		return
+	}
 	if req.Mobile != "" {
+		if req.TelAreaCode == "86" {
+			if !utils.ValidateMobileFormatat(req.Mobile) {
+				br.Msg = "手机号格式有误, 请检查"
+				return
+			}
+		}
+
 		mobileCount, err := system.GetSysAdminCountByMobile(req.Mobile, 0)
 		if err != nil {
 			br.Msg = "判断手机号是否存在失败"
@@ -345,7 +360,17 @@ func (this *SysAdminController) Add() {
 			return
 		}
 	}
-	//req.Mobile
+	if req.Email != "" {
+		if !utils.ValidateEmailFormatat(req.Email) {
+			br.Msg = "邮箱格式有误, 请检查"
+			return
+		}
+		_, e := system.GetSysUserByEmail(req.Email)
+		if e.Error() != utils.ErrNoRow() {
+			br.Msg = "邮箱已存在, 请重新填写"
+			return
+		}
+	}
 
 	var roleName, departmentName, groupName, teamName string
 
@@ -462,6 +487,7 @@ func (this *SysAdminController) Add() {
 		admin.Role = "admin"
 	}
 	admin.EmployeeId = req.EmployeeId
+	admin.Email = req.Email
 
 	var authority int
 	if roleItem.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
@@ -485,6 +511,7 @@ func (this *SysAdminController) Add() {
 	admin.ProvinceCode = req.ProvinceCode
 	admin.City = req.City
 	admin.CityCode = req.CityCode
+	admin.TelAreaCode = req.TelAreaCode
 	err = system.AddAdmin(admin)
 	if err != nil {
 		br.Msg = "新增失败"
@@ -584,26 +611,25 @@ func (this *SysAdminController) Edit() {
 		return
 	}
 
-	// 手机号
-	if item != nil {
-		if req.Mobile != "" && req.Mobile != item.Mobile {
-			mobileCount, err := system.GetSysAdminCountByMobile(req.Mobile, req.AdminId)
-			if err != nil {
-				br.Msg = "判断手机号是否存在失败"
-				br.ErrMsg = "判断手机号是否存在失败,Err:" + err.Error()
-				return
-			}
-			if mobileCount > 0 {
-				br.Msg = "手机号已存在,请重新填写"
-				br.IsSendEmail = false
+	// 手机号和邮箱必填一个
+	req.Mobile = strings.TrimSpace(req.Mobile)
+	req.Email = strings.TrimSpace(req.Email)
+	if req.Mobile == "" && req.Email == "" {
+		br.Msg = "至少输入一个手机号或邮箱"
+		return
+	}
+	if req.Mobile != "" {
+		if req.TelAreaCode == "86" {
+			if !utils.ValidateMobileFormatat(req.Mobile) {
+				br.Msg = "手机号格式有误, 请检查"
 				return
 			}
 		}
-	} else {
-		mobileCount, err := system.GetSysAdminCountByMobile(req.Mobile, req.AdminId)
-		if err != nil {
+
+		mobileCount, e := system.GetSysAdminCountByMobile(req.Mobile, adminInfo.AdminId)
+		if e != nil {
 			br.Msg = "判断手机号是否存在失败"
-			br.ErrMsg = "判断手机号是否存在失败,Err:" + err.Error()
+			br.ErrMsg = "判断手机号是否存在失败,Err:" + e.Error()
 			return
 		}
 		if mobileCount > 0 {
@@ -612,6 +638,22 @@ func (this *SysAdminController) Edit() {
 			return
 		}
 	}
+	if req.Email != "" {
+		if !utils.ValidateEmailFormatat(req.Email) {
+			br.Msg = "邮箱格式有误, 请检查"
+			return
+		}
+		emailUser, e := system.GetSysUserByEmail(req.Email)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			br.Msg = "操作失败"
+			br.ErrMsg = "邮箱获取用户信息失败, Err: " + e.Error()
+			return
+		}
+		if emailUser != nil && emailUser.AdminId != adminInfo.AdminId {
+			br.Msg = "邮箱已存在, 请检查"
+			return
+		}
+	}
 
 	// 角色
 	var roleName string
@@ -633,7 +675,7 @@ func (this *SysAdminController) Edit() {
 
 	// 员工工号
 	req.EmployeeId = strings.TrimSpace(req.EmployeeId)
-	if req.EmployeeId != "" {
+	if req.EmployeeId != "" && (utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeSandbox) {
 		// 去重
 		countOB := new(system.Admin)
 		countCond := ` AND employee_id = ? AND admin_id <> ?`
@@ -684,9 +726,11 @@ func (this *SysAdminController) Edit() {
 	adminInfo.City = req.City
 	adminInfo.CityCode = req.CityCode
 	adminInfo.EmployeeId = req.EmployeeId
+	adminInfo.Email = req.Email
+	adminInfo.TelAreaCode = req.TelAreaCode
 	cols := []string{
 		"AdminName", "RealName", "LastUpdatedTime", "Mobile", "RoleId", "RoleName", "Enabled", "Authority",
-		"Position", "RoleTypeCode", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId",
+		"Position", "RoleTypeCode", "Province", "ProvinceCode", "City", "CityCode", "EmployeeId", "Email", "TelAreaCode",
 	}
 	if e := adminInfo.Update(cols); e != nil {
 		br.Msg = "编辑失败"

+ 11 - 4
controllers/user_login.go

@@ -106,6 +106,7 @@ func (this *UserLoginController) GetVerifyCode() {
 		CaptchaId   string `description:"验证码ID"`
 		CaptchaCode string `description:"图形验证码"`
 		Mobile      string `description:"手机号"`
+		TelAreaCode string `description:"手机区号"`
 		Email       string `description:"邮箱"`
 		Source      int    `description:"来源:1-登录;2-异常登录校验;3-忘记密码"`
 	}
@@ -133,9 +134,15 @@ func (this *UserLoginController) GetVerifyCode() {
 			return
 		}
 	}
-	if req.VerifyType == 1 && req.Mobile == "" {
-		br.Msg = "请输入手机号"
-		return
+	if req.VerifyType == 1 {
+		if req.TelAreaCode == "" {
+			br.Msg = "请选择区号"
+			return
+		}
+		if req.Mobile == "" {
+			br.Msg = "请输入手机号"
+			return
+		}
 	}
 	if req.VerifyType == 2 && req.Email == "" {
 		br.Msg = "请输入邮箱"
@@ -167,7 +174,7 @@ func (this *UserLoginController) GetVerifyCode() {
 	// 发送验证码
 	sendRes := false
 	if req.VerifyType == 1 {
-		r, e := services.SendAdminMobileVerifyCode(req.Source, req.Mobile)
+		r, e := services.SendAdminMobileVerifyCode(req.Source, req.Mobile, req.TelAreaCode)
 		if e != nil {
 			br.Msg = "发送失败"
 			br.ErrMsg = "发送短信验证码失败, Err: " + e.Error()

+ 5 - 0
models/system/sys_admin.go

@@ -40,6 +40,7 @@ type AdminItem struct {
 	City                    string `description:"市"`
 	CityCode                string `description:"市编码"`
 	EmployeeId              string `description:"员工工号(钉钉/每刻报销)"`
+	TelAreaCode             string `description:"手机区号"`
 }
 
 func GetSysuserList(condition string, pars []interface{}, startSize, pageSize int) (items []*AdminItem, err error) {
@@ -114,6 +115,8 @@ type SysuserAddReq struct {
 	City             string `description:"市"`
 	CityCode         string `description:"市编码"`
 	EmployeeId       string `description:"员工工号(钉钉/每刻报销)"`
+	Email            string `description:"邮箱"`
+	TelAreaCode      string `description:"手机区号"`
 }
 
 func GetSysAdminCount(adminName string) (count int, err error) {
@@ -158,6 +161,8 @@ type SysuserEditReq struct {
 	City             string `description:"市"`
 	CityCode         string `description:"市编码"`
 	EmployeeId       string `description:"员工工号(钉钉/每刻报销)"`
+	Email            string `description:"邮箱"`
+	TelAreaCode      string `description:"手机区号"`
 }
 
 type SysUserMoveReq struct {

+ 1 - 0
models/system/sys_user.go

@@ -62,6 +62,7 @@ type Admin struct {
 	City                      string    `description:"市"`
 	CityCode                  string    `description:"市编码"`
 	EmployeeId                string    `description:"员工工号(钉钉/每刻报销)"`
+	TelAreaCode               string    `description:"手机区号"`
 }
 
 // Update 更新用户基础信息

+ 6 - 2
services/user_login.go

@@ -13,7 +13,7 @@ import (
 )
 
 // SendAdminMobileVerifyCode 发送用户手机验证码
-func SendAdminMobileVerifyCode(source int, mobile string) (ok bool, err error) {
+func SendAdminMobileVerifyCode(source int, mobile, areaCode string) (ok bool, err error) {
 	verifyCode := utils.GetRandDigit(6)
 	record := new(system.AdminVerifyCodeRecord)
 	record.VerifyType = system.AdminVerifyCodeRecordTypeMobile
@@ -29,7 +29,11 @@ func SendAdminMobileVerifyCode(source int, mobile string) (ok bool, err error) {
 	}
 
 	tplId := utils.SmsNewLoginTplId
-	ok = SendSmsCode(mobile, verifyCode, tplId)
+	if areaCode == "86" {
+		ok = SendSmsCode(mobile, verifyCode, tplId)
+	} else {
+		ok = SendSmsCodeGj(mobile, verifyCode, areaCode)
+	}
 	record.SendStatus = system.AdminVerifyCodeRecordStatusSuccess
 	if !ok {
 		record.SendStatus = system.AdminVerifyCodeRecordStatusFail