userService.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package service
  2. import (
  3. "crypto/sha1"
  4. "fmt"
  5. "io"
  6. "iot_manager_service/app/system/dao"
  7. "iot_manager_service/app/system/model"
  8. "iot_manager_service/util/cache"
  9. "iot_manager_service/util/common"
  10. "iot_manager_service/util/logger"
  11. "time"
  12. )
  13. // 用户管理服务
  14. var UserService = new(userService)
  15. type userService struct{}
  16. func (s *userService) Get(id int64) (*model.UserDetail, error) {
  17. user := &dao.User{
  18. ID: id,
  19. }
  20. err := user.GetUser()
  21. if err != nil {
  22. return nil, err
  23. }
  24. detail := &model.UserDetail{
  25. User: *user,
  26. TenantName: TenantService.GetTenantName(user.TenantId, user.TenantId),
  27. RoleName: RoleService.GetRoleName(user.TenantId, user.RoleId),
  28. SexName: DictService.GetSexName(user.TenantId, user.Sex),
  29. }
  30. return detail, nil
  31. }
  32. func (s *userService) GetOneByTenantId(tenantId int) *dao.User {
  33. user := &dao.User{
  34. TenantId: tenantId,
  35. }
  36. err := user.GetUserByTenantId()
  37. if err != nil {
  38. return nil
  39. }
  40. return user
  41. }
  42. func (s *userService) GetOne(tenantId int, account, password string) *dao.User {
  43. // 密码前端先MD5 后端再sha1加密
  44. t := sha1.New()
  45. _, _ = io.WriteString(t, password)
  46. password = fmt.Sprintf("%x", t.Sum(nil))
  47. user := &dao.User{
  48. TenantId: tenantId,
  49. Account: account,
  50. Password: password,
  51. }
  52. err := user.GetUserByPwd()
  53. if err != nil {
  54. return nil
  55. }
  56. return user
  57. }
  58. func (s *userService) List(account, realName string, current, size int) ([]model.UserDetail, *common.Errors) {
  59. user := dao.User{}
  60. offset := (current - 1) * size
  61. limit := size
  62. if account != "" {
  63. user.Account = account
  64. }
  65. if realName != "" {
  66. user.RealName = realName
  67. }
  68. users, err := user.GetUsers(offset, limit)
  69. if err != nil {
  70. return nil, common.FailResponse(err.Error(), nil)
  71. }
  72. var details []model.UserDetail
  73. for _, user := range users {
  74. details = append(details, model.UserDetail{
  75. User: user,
  76. TenantName: TenantService.GetTenantName(user.TenantId, user.TenantId),
  77. RoleName: RoleService.GetRoleName(user.TenantId, user.RoleId),
  78. SexName: DictService.GetSexName(user.TenantId, user.Sex),
  79. })
  80. }
  81. return details, nil
  82. }
  83. func (s *userService) Submit(req dao.User) *common.Errors {
  84. user := &req
  85. err := user.Save()
  86. if err != nil {
  87. return common.FailResponse(err.Error(), nil)
  88. }
  89. return nil
  90. }
  91. func (s *userService) Update(req dao.User) *common.Errors {
  92. user := &req
  93. err := user.Update()
  94. if err != nil {
  95. return common.FailResponse(err.Error(), nil)
  96. }
  97. return nil
  98. }
  99. func (s *userService) Remove(userId, id int64) *common.Errors {
  100. user := &dao.User{
  101. ID: id,
  102. IsDeleted: 1,
  103. UpdateUser: userId,
  104. UpdateTime: time.Now(),
  105. }
  106. err := user.Remove()
  107. if err != nil {
  108. return common.FailResponse(err.Error(), nil)
  109. }
  110. return nil
  111. }
  112. func (s *userService) ResetPwd(id int64) *common.Errors {
  113. user := &dao.User{ID: id}
  114. err := user.UpdatePwd(model.DefaultPwd)
  115. if err != nil {
  116. return common.FailResponse(err.Error(), nil)
  117. }
  118. return nil
  119. }
  120. func (s *userService) GetList() ([]dao.User, error) {
  121. user := &dao.User{}
  122. users, err := user.GetAll()
  123. if err != nil {
  124. return nil, err
  125. }
  126. return users, nil
  127. }
  128. func (s *userService) Grant(userIds []string, roleIds string) error {
  129. user := &dao.User{}
  130. return user.UpdateRoles(userIds, roleIds)
  131. }
  132. const UserKey = "%d:sys:user:%d"
  133. func (s *userService) GetUserName(tenantId int, id int64) string {
  134. var name string
  135. key := fmt.Sprintf(UserKey, tenantId, id)
  136. name, err := cache.Redis.Get(key).Result()
  137. if err != nil {
  138. user := &dao.User{ID: id}
  139. if err := user.GetUser(); err != nil {
  140. logger.Logger.Errorf("GetUser err = %s \n", err)
  141. } else {
  142. name = user.Name
  143. cache.Redis.Set(key, name, time.Second*10)
  144. }
  145. }
  146. return name
  147. }