group_service.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * @description: 管理员组
  3. * @Author: CP
  4. * @Date: 2021-06-01 14:56:44
  5. * @FilePath: \construction_management\services\group_service.go
  6. */
  7. package services
  8. import (
  9. "encoding/json"
  10. "errors"
  11. "fmt"
  12. "strconv"
  13. "time"
  14. "go.mod/comm"
  15. "go.mod/conf"
  16. "go.mod/dao"
  17. "go.mod/datasource"
  18. "go.mod/models"
  19. "go.mod/web/viewmodels"
  20. )
  21. //定义管理员Service接口
  22. type GroupService interface {
  23. GetAll() (dataList []viewmodels.Group, total int64)
  24. Add(dataVM viewmodels.Group) error
  25. Update(dataVM viewmodels.Group, id int) error
  26. Delete(id int) error
  27. }
  28. //返回service操作类
  29. type groupService struct {
  30. dao *dao.GroupDao
  31. }
  32. //创建管理员service
  33. func NewGroupService() GroupService {
  34. return &groupService{
  35. dao: dao.NewGroupDao(datasource.InstanceDbMaster()),
  36. }
  37. }
  38. //实现getall接口
  39. func (s *groupService) GetAll() (data []viewmodels.Group, total int64) {
  40. datalist := make([]viewmodels.Group, 0)
  41. result, total := s.dao.GetAll()
  42. for _, item := range result {
  43. projectVM := makeGroupVM(&item)
  44. datalist = append(datalist, projectVM)
  45. }
  46. return datalist, total
  47. }
  48. func (s *groupService) Add(dataVM viewmodels.Group) error {
  49. data := &models.CmGroup{}
  50. persission, err := json.Marshal(dataVM.Permission)
  51. if err != nil {
  52. return err
  53. }
  54. data.Permission = string(persission)
  55. data.Name = dataVM.Name
  56. data.Remark = dataVM.Remark
  57. data.CreateTime = time.Now()
  58. return s.dao.Add(data)
  59. }
  60. func (s *groupService) Update(dataVM viewmodels.Group, id int) error {
  61. persission, err := json.Marshal(dataVM.Permission)
  62. if err != nil {
  63. return err
  64. }
  65. updateData := models.CmGroup{}
  66. updateData.Id = id
  67. updateData.Name = dataVM.Name
  68. updateData.Permission = string(persission)
  69. // 要填写字段名称必须要更新的字段
  70. if err := s.dao.Update(&updateData, []string{"permission", "name"}); err != nil {
  71. fmt.Println(err)
  72. return err
  73. }
  74. return nil
  75. }
  76. //移除标段成员
  77. func (s *groupService) Delete(id int) error {
  78. // 1.检查权限组合法性
  79. groupData := s.dao.Get(id)
  80. if groupData.Id == 0 {
  81. return errors.New("添加的账号不合法")
  82. }
  83. // 2.权限组下是否有管理员
  84. managerDao := dao.NewManagerDao(datasource.InstanceDbMaster())
  85. managerList := managerDao.GetGroupId(id)
  86. if len(managerList) != 0 {
  87. return errors.New("权限组下还有管理员")
  88. }
  89. // 删除权限组
  90. data := models.CmGroup{}
  91. data.Id = id
  92. err := s.dao.Delete(&data)
  93. if err != nil {
  94. return err
  95. }
  96. return nil
  97. }
  98. // 构造视图层models
  99. func makeGroupVM(projectCM *models.CmGroup) viewmodels.Group {
  100. modelsVM := viewmodels.Group{}
  101. permission := []string{}
  102. id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
  103. // userId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.UserId), conf.SignSecret)
  104. modelsVM.Id = id
  105. modelsVM.Name = projectCM.Name
  106. modelsVM.Remark = projectCM.Remark
  107. json.Unmarshal([]byte(projectCM.Permission), &permission)
  108. modelsVM.Permission = permission
  109. if !projectCM.CreateTime.IsZero() {
  110. modelsVM.CreateTime = projectCM.CreateTime.Format(conf.SysTimeform)
  111. }
  112. return modelsVM
  113. }