|
@@ -0,0 +1,121 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_forum_hub/models/system"
|
|
|
+ "eta/eta_forum_hub/utils"
|
|
|
+ "fmt"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// 新增或者更新用户
|
|
|
+func AddOrUpdateAdmin(req system.Admin) (err error, isSendEmail bool) {
|
|
|
+ isSendEmail = true
|
|
|
+ isAdd := true
|
|
|
+ admin := new(system.Admin)
|
|
|
+ admin, e := system.GetAdminByAdminName(req.AdminName)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() != utils.ErrNoRow() {
|
|
|
+ err = fmt.Errorf("获取数据失败,%v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if e == nil && admin.AdminId > 0 {
|
|
|
+ isAdd = false
|
|
|
+ if admin.BusinessCode != req.BusinessCode {
|
|
|
+ err = fmt.Errorf("商户编码不同,不允许更新")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 手机号和邮箱必填一个
|
|
|
+ req.Mobile = strings.TrimSpace(req.Mobile)
|
|
|
+ req.Email = strings.TrimSpace(req.Email)
|
|
|
+ if req.Mobile == "" && req.Email == "" {
|
|
|
+ err = fmt.Errorf("至少输入一个手机号或邮箱")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.Mobile != "" {
|
|
|
+ if req.TelAreaCode == "86" {
|
|
|
+ if !utils.ValidateMobileFormatat(req.Mobile) {
|
|
|
+ err = fmt.Errorf("手机号格式有误, 请检查")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ mobileCount, e := system.GetSysAdminCountByMobile(req.Mobile, 0)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("判断手机号是否存在失败,%w", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if mobileCount > 0 {
|
|
|
+ err = fmt.Errorf("手机号已存在,请重新填写")
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if req.Email != "" {
|
|
|
+ if !utils.ValidateEmailFormatat(req.Email) {
|
|
|
+ err = fmt.Errorf("邮箱格式有误, 请检查")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ emailUser, e := system.GetSysUserByEmail(req.Email)
|
|
|
+ if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
+ err = fmt.Errorf("邮箱获取用户失败,%w", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if emailUser != nil && emailUser.AdminId > 0 {
|
|
|
+ err = fmt.Errorf("邮箱已存在, 请重新填写")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 员工工号
|
|
|
+ req.EmployeeId = strings.TrimSpace(req.EmployeeId)
|
|
|
+
|
|
|
+ admin.AdminName = req.AdminName
|
|
|
+ admin.RealName = req.RealName
|
|
|
+ admin.Password = req.Password
|
|
|
+ admin.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
|
|
|
+ admin.Enabled = 1
|
|
|
+ admin.LastLoginTime = time.Now().Format(utils.FormatDateTime)
|
|
|
+ admin.CreatedTime = time.Now()
|
|
|
+ admin.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
|
|
|
+ admin.Mobile = req.Mobile
|
|
|
+ admin.RoleType = req.RoleType
|
|
|
+ admin.RoleId = req.RoleId
|
|
|
+ admin.RoleName = req.RoleName
|
|
|
+ admin.RoleTypeCode = req.RoleTypeCode
|
|
|
+ admin.DepartmentId = req.DepartmentId
|
|
|
+ admin.DepartmentName = req.DepartmentName
|
|
|
+ admin.AdminAvatar = req.AdminAvatar
|
|
|
+ admin.GroupId = req.GroupId
|
|
|
+ admin.GroupName = req.GroupName
|
|
|
+
|
|
|
+ admin.Role = req.Role
|
|
|
+ admin.EmployeeId = req.EmployeeId
|
|
|
+ admin.Email = req.Email
|
|
|
+ admin.Authority = req.Authority
|
|
|
+ admin.Position = req.Position
|
|
|
+ admin.Province = req.Province
|
|
|
+ admin.ProvinceCode = req.ProvinceCode
|
|
|
+ admin.City = req.City
|
|
|
+ admin.CityCode = req.CityCode
|
|
|
+ admin.TelAreaCode = req.TelAreaCode
|
|
|
+ admin.IsLdap = req.IsLdap
|
|
|
+ admin.BusinessCode = req.BusinessCode
|
|
|
+ if isAdd {
|
|
|
+ err = system.AddAdmin(admin)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("新增失败,Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = admin.Update([]string{})
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("更新失败,Err:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|