manager_service.go 4.2 KB

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