admin.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package services
  2. import (
  3. "eta/eta_forum_hub/models/system"
  4. "eta/eta_forum_hub/services/alarm_msg"
  5. "eta/eta_forum_hub/utils"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. // 新增或者更新用户
  11. func AddOrUpdateAdmin(req *system.AddAdminReq) (err error, isSendEmail bool) {
  12. defer func() {
  13. if err != nil {
  14. utils.FileLog.Info("添加管理员账号失败, AddOrUpdateAdmin Err: " + err.Error())
  15. go alarm_msg.SendAlarmMsg("添加管理员账号失败, AddOrUpdateAdmin Err: "+err.Error(), 3)
  16. }
  17. }()
  18. isSendEmail = true
  19. isAdd := true
  20. admin := new(system.Admin)
  21. adminInfo, e := system.GetAdminByAdminName(req.AdminName)
  22. if e != nil {
  23. if e.Error() != utils.ErrNoRow() {
  24. err = fmt.Errorf("获取数据失败,%v", e)
  25. return
  26. }
  27. }
  28. if e == nil && adminInfo.AdminId > 0 {
  29. isAdd = false
  30. admin = adminInfo
  31. /*if adminInfo.BusinessCode != req.BusinessCode {
  32. err = fmt.Errorf("商户编码不同,不允许更新")
  33. return
  34. }*/
  35. }
  36. // 手机号和邮箱必填一个
  37. req.Mobile = strings.TrimSpace(req.Mobile)
  38. req.Email = strings.TrimSpace(req.Email)
  39. if req.Mobile == "" && req.Email == "" {
  40. err = fmt.Errorf("至少输入一个手机号或邮箱")
  41. return
  42. }
  43. if req.Mobile != "" {
  44. if isAdd || (!isAdd && req.Mobile != adminInfo.Mobile) {
  45. if req.TelAreaCode == "86" {
  46. if !utils.ValidateMobileFormatat(req.Mobile) {
  47. err = fmt.Errorf("手机号格式有误, 请检查")
  48. return
  49. }
  50. }
  51. mobileCount, e := system.GetSysAdminCountByMobile(req.Mobile, 0)
  52. if e != nil {
  53. err = fmt.Errorf("判断手机号是否存在失败,%w", err)
  54. return
  55. }
  56. if mobileCount > 0 {
  57. err = fmt.Errorf("手机号已存在,请重新填写")
  58. isSendEmail = false
  59. return
  60. }
  61. }
  62. }
  63. if req.Email != "" {
  64. if isAdd || (!isAdd && req.Mobile != adminInfo.Mobile) {
  65. if !utils.ValidateEmailFormatat(req.Email) {
  66. err = fmt.Errorf("邮箱格式有误, 请检查")
  67. return
  68. }
  69. emailUser, e := system.GetSysUserByEmail(req.Email)
  70. if e != nil && e.Error() != utils.ErrNoRow() {
  71. err = fmt.Errorf("邮箱获取用户失败,%w", e)
  72. return
  73. }
  74. if emailUser != nil && emailUser.AdminId > 0 {
  75. err = fmt.Errorf("邮箱已存在, 请重新填写")
  76. return
  77. }
  78. }
  79. }
  80. // 员工工号
  81. req.EmployeeId = strings.TrimSpace(req.EmployeeId)
  82. admin.AdminName = req.AdminName
  83. admin.RealName = req.RealName
  84. admin.Password = req.Password
  85. admin.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
  86. admin.Enabled = req.Enabled
  87. admin.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
  88. admin.Mobile = req.Mobile
  89. admin.RoleType = req.RoleType
  90. admin.RoleId = req.RoleId
  91. admin.RoleName = req.RoleName
  92. admin.RoleTypeCode = req.RoleTypeCode
  93. admin.DepartmentId = req.DepartmentId
  94. admin.DepartmentName = req.DepartmentName
  95. admin.AdminAvatar = req.AdminAvatar
  96. admin.GroupId = req.GroupId
  97. admin.GroupName = req.GroupName
  98. admin.Role = req.Role
  99. admin.EmployeeId = req.EmployeeId
  100. admin.Email = req.Email
  101. admin.Authority = req.Authority
  102. admin.Position = req.Position
  103. admin.Province = req.Province
  104. admin.ProvinceCode = req.ProvinceCode
  105. admin.City = req.City
  106. admin.CityCode = req.CityCode
  107. admin.TelAreaCode = req.TelAreaCode
  108. admin.IsLdap = req.IsLdap
  109. //admin.BusinessCode = req.BusinessCode
  110. if isAdd {
  111. admin.CreatedTime = time.Now()
  112. admin.LastLoginTime = time.Now().Format(utils.FormatDateTime)
  113. err = system.AddAdmin(admin)
  114. if err != nil {
  115. err = fmt.Errorf("新增失败,Err:%s", err.Error())
  116. return
  117. }
  118. } else {
  119. err = admin.Update([]string{})
  120. if err != nil {
  121. err = fmt.Errorf("更新失败,Err:%s", err.Error())
  122. return
  123. }
  124. }
  125. return
  126. }