admin.go 3.2 KB

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