manager_service.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /*
  2. * @description: 管理员数据处理
  3. * @Author: CP
  4. * @Date: 2020-08-20 17:08:38
  5. * @FilePath: \construction_management\services\manager_service.go
  6. */
  7. package services
  8. import (
  9. "encoding/json"
  10. "errors"
  11. "fmt"
  12. "strconv"
  13. "go.mod/comm"
  14. "go.mod/conf"
  15. "go.mod/dao"
  16. "go.mod/datasource"
  17. "go.mod/models"
  18. "go.mod/web/viewmodels"
  19. )
  20. //定义管理员Service接口
  21. type ManagerService interface {
  22. GetAll() (dataList []viewmodels.Manager, total int64)
  23. CountAll() int64
  24. Get(id int) *viewmodels.Manager
  25. GetCurrentManager(staffName string) (*viewmodels.CurrentManager, error)
  26. Update(data viewmodels.Manager, id int, groupId int) error
  27. Create(data *models.CmManager) error
  28. Enable(id int, canLogin int) error
  29. }
  30. //返回service操作类
  31. type managerService struct {
  32. dao *dao.ManagerDao
  33. }
  34. //创建管理员service
  35. func NewManagerService() ManagerService {
  36. return &managerService{
  37. dao: dao.NewManagerDao(datasource.InstanceDbMaster()),
  38. }
  39. }
  40. //实现getall接口
  41. func (s *managerService) GetAll() (data []viewmodels.Manager, total int64) {
  42. datalist := make([]viewmodels.Manager, 0)
  43. result, total := s.dao.GetAll()
  44. for _, item := range result {
  45. projectVM := makeManagerVM(&item)
  46. datalist = append(datalist, projectVM)
  47. }
  48. return datalist, total
  49. }
  50. func (s *managerService) CountAll() int64 {
  51. return s.dao.CountAll()
  52. }
  53. func (s *managerService) GetCurrentManager(staffName string) (*viewmodels.CurrentManager, error) {
  54. managerData := s.dao.GetUserName(staffName)
  55. groupDao := dao.NewGroupDao(datasource.InstanceDbMaster())
  56. groupData := groupDao.Get(managerData.GroupId)
  57. if groupData.Id == 0 {
  58. return nil, errors.New("未找到管理组")
  59. }
  60. cmData := viewmodels.CurrentManager{}
  61. id, _ := comm.AesEncrypt(strconv.Itoa(managerData.Id), conf.SignSecret)
  62. StaffId, _ := comm.AesEncrypt(strconv.Itoa(managerData.StaffId), conf.SignSecret)
  63. permission := []string{}
  64. json.Unmarshal([]byte(groupData.Permission), &permission)
  65. cmData.Id = id
  66. cmData.Permission = permission
  67. cmData.IsAdmin = managerData.IsAdmin
  68. cmData.Username = managerData.Username
  69. cmData.StaffId = StaffId
  70. return &cmData, nil
  71. }
  72. // 获得管理员详情
  73. func (s *managerService) Get(id int) *viewmodels.Manager {
  74. result := s.dao.Get(id)
  75. data := makeManagerVM(result)
  76. return &data
  77. }
  78. func (s *managerService) Update(data viewmodels.Manager, id int, groupId int) error {
  79. // 1.查询是否有该权限组
  80. groupDao := dao.NewGroupDao(datasource.InstanceDbMaster())
  81. groupData := groupDao.Get(groupId)
  82. if groupData.Id == 0 {
  83. return errors.New("未找到管理组")
  84. }
  85. updateData := models.CmManager{}
  86. updateData.Id = id
  87. updateData.GroupId = groupId
  88. updateData.CanLogin = data.CanLogin
  89. updateData.IsAdmin = data.IsAdmin
  90. updateData.Telephone = data.Telephone
  91. updateData.Fixedphone = data.Fixedphone
  92. updateData.Email = data.Email
  93. updateData.Qq = data.Qq
  94. updateData.Position = data.Position
  95. // 要填写字段名称必须要更新的字段
  96. // , "telephone", "fixedphone", "email", "qq", "position"
  97. if err := s.dao.Update(&updateData, []string{"group_id", "is_admin", "can_login"}); err != nil {
  98. fmt.Println(err)
  99. return err
  100. }
  101. return nil
  102. }
  103. func (s *managerService) Enable(id int, canLogin int) error {
  104. Manager := models.CmManager{}
  105. Manager.Id = id
  106. Manager.CanLogin = canLogin
  107. // 要填写字段名称必须要更新的字段
  108. if err := s.dao.Update(&Manager, []string{"can_login"}); err != nil {
  109. fmt.Println(err)
  110. return err
  111. }
  112. return nil
  113. }
  114. func (s *managerService) Create(data *models.CmManager) error {
  115. return s.dao.Create(data)
  116. }
  117. // 构造视图层models
  118. func makeManagerVM(projectCM *models.CmManager) viewmodels.Manager {
  119. modelsVM := viewmodels.Manager{}
  120. id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
  121. groupId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.GroupId), conf.SignSecret)
  122. modelsVM.Id = id
  123. modelsVM.Username = projectCM.Username
  124. modelsVM.Category = projectCM.Category
  125. modelsVM.GroupId = groupId
  126. modelsVM.IsAdmin = projectCM.IsAdmin
  127. modelsVM.RealName = projectCM.RealName
  128. modelsVM.Telephone = projectCM.Telephone
  129. modelsVM.LoginIp = projectCM.LoginIp
  130. modelsVM.CanLogin = projectCM.CanLogin
  131. modelsVM.Office = projectCM.Office
  132. modelsVM.Category = projectCM.Category
  133. if !projectCM.LastLogin.IsZero() {
  134. modelsVM.LastLogin = projectCM.LastLogin.Format(conf.SysTimeform)
  135. }
  136. if !projectCM.CreateTime.IsZero() {
  137. modelsVM.CreateTime = projectCM.CreateTime.Format(conf.SysTimeform)
  138. }
  139. return modelsVM
  140. }