package services import ( "eta/eta_forum_hub/models/system" "eta/eta_forum_hub/services/alarm_msg" "eta/eta_forum_hub/utils" "fmt" "strings" "time" ) // 新增或者更新用户 func AddOrUpdateAdmin(req *system.AddAdminReq) (err error, isSendEmail bool) { defer func() { if err != nil { utils.FileLog.Info("添加管理员账号失败, AddOrUpdateAdmin Err: " + err.Error()) go alarm_msg.SendAlarmMsg("添加管理员账号失败, AddOrUpdateAdmin Err: "+err.Error(), 3) } }() isSendEmail = true isAdd := true admin := new(system.Admin) adminInfo, e := system.GetAdminByAdminName(req.AdminName) if e != nil { if e.Error() != utils.ErrNoRow() { err = fmt.Errorf("获取数据失败,%v", e) return } } if e == nil && adminInfo.AdminId > 0 { isAdd = false admin = adminInfo /*if adminInfo.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 isAdd || (!isAdd && req.Mobile != adminInfo.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 isAdd || (!isAdd && req.Mobile != adminInfo.Mobile) { 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 = req.Enabled 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 { admin.CreatedTime = time.Now() admin.LastLoginTime = time.Now().Format(utils.FormatDateTime) 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 }