userService.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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, int64, *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, counts, err := user.GetUsers(offset, limit)
  69. if err != nil {
  70. return nil, 0, 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, counts, nil
  82. }
  83. func (s *userService) Info(userInfo *dao.User) *common.Errors {
  84. err := userInfo.GetUser()
  85. if err != nil {
  86. return common.FailResponse(err.Error(), nil)
  87. }
  88. return nil
  89. }
  90. // Submit Birthday为""时在数据库报错,给一个默认值.
  91. func (s *userService) Submit(req dao.User) *common.Errors {
  92. user := &req
  93. if user.Birthday == "" {
  94. user.Birthday = "1900-01-01 00:00:00"
  95. }
  96. err := user.Save()
  97. if err != nil {
  98. return common.FailResponse(err.Error(), nil)
  99. }
  100. return nil
  101. }
  102. func (s *userService) Update(req dao.User) *common.Errors {
  103. user := &req
  104. if user.Birthday == "" {
  105. user.Birthday = "1900-01-01 00:00:00"
  106. }
  107. err := user.Update()
  108. if err != nil {
  109. return common.FailResponse(err.Error(), nil)
  110. }
  111. return nil
  112. }
  113. func (s *userService) Remove(userId, id int64) *common.Errors {
  114. user := &dao.User{
  115. ID: id,
  116. IsDeleted: 1,
  117. UpdateUser: userId,
  118. UpdateTime: time.Now(),
  119. }
  120. err := user.Remove()
  121. if err != nil {
  122. return common.FailResponse(err.Error(), nil)
  123. }
  124. return nil
  125. }
  126. func (s *userService) ResetPwd(id int64) *common.Errors {
  127. user := &dao.User{ID: id}
  128. err := user.UpdatePwd(model.DefaultPwd)
  129. if err != nil {
  130. return common.FailResponse(err.Error(), nil)
  131. }
  132. return nil
  133. }
  134. func (s *userService) GetList() ([]dao.User, error) {
  135. user := &dao.User{}
  136. users, err := user.GetAll()
  137. if err != nil {
  138. return nil, err
  139. }
  140. return users, nil
  141. }
  142. func (s *userService) Grant(userIds []string, roleIds string) error {
  143. user := &dao.User{}
  144. return user.UpdateRoles(userIds, roleIds)
  145. }
  146. const UserKey = "%d:sys:user:%d"
  147. func (s *userService) GetUserName(tenantId int, id int64) string {
  148. var name string
  149. key := fmt.Sprintf(UserKey, tenantId, id)
  150. name, err := cache.Redis.Get(key).Result()
  151. if err != nil {
  152. user := &dao.User{ID: id}
  153. if err := user.GetUser(); err != nil {
  154. logger.Logger.Errorf("GetUser err = %s \n", err)
  155. } else {
  156. name = user.Name
  157. cache.Redis.Set(key, name, time.Second*10)
  158. }
  159. }
  160. return name
  161. }
  162. func (s *userService) IsExist(user dao.User) bool {
  163. return user.IsExist()
  164. }