manager_service.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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
  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 {
  54. managerData := s.dao.GetUserName(staffName)
  55. groupDao := dao.NewGroupDao(datasource.InstanceDbMaster())
  56. groupData := groupDao.Get(managerData.GroupId)
  57. cmData := viewmodels.CurrentManager{}
  58. id, _ := comm.AesEncrypt(strconv.Itoa(managerData.Id), conf.SignSecret)
  59. StaffId, _ := comm.AesEncrypt(strconv.Itoa(managerData.StaffId), conf.SignSecret)
  60. permission := []string{}
  61. json.Unmarshal([]byte(groupData.Permission), &permission)
  62. cmData.Id = id
  63. cmData.Permission = permission
  64. cmData.IsAdmin = managerData.IsAdmin
  65. cmData.Username = managerData.Username
  66. cmData.StaffId = StaffId
  67. return &cmData
  68. }
  69. // 获得管理员详情
  70. func (s *managerService) Get(id int) *viewmodels.Manager {
  71. result := s.dao.Get(id)
  72. data := makeManagerVM(result)
  73. return &data
  74. }
  75. func (s *managerService) Update(data viewmodels.Manager, id int, groupId int) error {
  76. // 1.查询是否有该权限组
  77. groupDao := dao.NewGroupDao(datasource.InstanceDbMaster())
  78. groupData := groupDao.Get(groupId)
  79. if groupData.Id == 0 {
  80. return errors.New("未找到管理组")
  81. }
  82. updateData := models.CmManager{}
  83. updateData.Id = id
  84. updateData.GroupId = groupId
  85. updateData.CanLogin = data.CanLogin
  86. updateData.IsAdmin = data.IsAdmin
  87. updateData.Telephone = data.Telephone
  88. updateData.Fixedphone = data.Fixedphone
  89. updateData.Email = data.Email
  90. updateData.Qq = data.Qq
  91. updateData.Position = data.Position
  92. // 要填写字段名称必须要更新的字段
  93. // , "telephone", "fixedphone", "email", "qq", "position"
  94. if err := s.dao.Update(&updateData, []string{"group_id", "is_admin", "can_login"}); err != nil {
  95. fmt.Println(err)
  96. return err
  97. }
  98. return nil
  99. }
  100. func (s *managerService) Enable(id int, canLogin int) error {
  101. Manager := models.CmManager{}
  102. Manager.Id = id
  103. Manager.CanLogin = canLogin
  104. // 要填写字段名称必须要更新的字段
  105. if err := s.dao.Update(&Manager, []string{"can_login"}); err != nil {
  106. fmt.Println(err)
  107. return err
  108. }
  109. return nil
  110. }
  111. func (s *managerService) Create(data *models.CmManager) error {
  112. return s.dao.Create(data)
  113. }
  114. // 构造视图层models
  115. func makeManagerVM(projectCM *models.CmManager) viewmodels.Manager {
  116. modelsVM := viewmodels.Manager{}
  117. id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
  118. groupId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.GroupId), conf.SignSecret)
  119. modelsVM.Id = id
  120. modelsVM.Username = projectCM.Username
  121. modelsVM.Category = projectCM.Category
  122. modelsVM.GroupId = groupId
  123. modelsVM.IsAdmin = projectCM.IsAdmin
  124. modelsVM.RealName = projectCM.RealName
  125. modelsVM.Telephone = projectCM.Telephone
  126. modelsVM.LoginIp = projectCM.LoginIp
  127. modelsVM.CanLogin = projectCM.CanLogin
  128. modelsVM.Office = projectCM.Office
  129. modelsVM.Category = projectCM.Category
  130. if !projectCM.LastLogin.IsZero() {
  131. modelsVM.LastLogin = projectCM.LastLogin.Format(conf.SysTimeform)
  132. }
  133. if !projectCM.CreateTime.IsZero() {
  134. modelsVM.CreateTime = projectCM.CreateTime.Format(conf.SysTimeform)
  135. }
  136. return modelsVM
  137. }