system.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package services
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/models/system"
  5. "eta_gn/eta_api/utils"
  6. )
  7. func GetRoleTypeCode(roleType string) string {
  8. var roleTypeCode string
  9. switch roleType {
  10. case utils.ROLE_TYPE_ADMIN:
  11. roleTypeCode = utils.ROLE_TYPE_CODE_ADMIN
  12. case utils.ROLE_TYPE_FICC_ADMIN:
  13. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN
  14. case utils.ROLE_TYPE_FICC_SELLER:
  15. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  16. case utils.ROLE_TYPE_RAI_ADMIN:
  17. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN
  18. case utils.ROLE_TYPE_FICC_GROUP, utils.ROLE_TYPE_FICC_MANAGER:
  19. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_GROUP
  20. case utils.ROLE_TYPE_RAI_GROUP:
  21. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_GROUP
  22. case utils.ROLE_TYPE_FICC_DEPARTMENT:
  23. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_DEPARTMENT
  24. case utils.ROLE_TYPE_RAI_DEPARTMENT:
  25. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_DEPARTMENT
  26. case utils.ROLE_TYPE_FICC_RESEARCHR:
  27. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_RESEARCHR
  28. case utils.ROLE_TYPE_RAI_RESEARCHR:
  29. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_RESEARCHR
  30. default:
  31. roleTypeCode = utils.ROLE_TYPE_ADMIN
  32. }
  33. return roleTypeCode
  34. }
  35. type GroupNode struct {
  36. GroupId int
  37. GroupName string
  38. Child []*GroupNode
  39. }
  40. // GetMenuTreeRecursive 递归菜单树
  41. func GetMenuTreeRecursive(list []*system.SysMenuItem, parentId int) []*system.SysMenuItem {
  42. res := make([]*system.SysMenuItem, 0)
  43. for _, v := range list {
  44. if v.ParentId == parentId {
  45. v.Children = GetMenuTreeRecursive(list, v.MenuId)
  46. res = append(res, v)
  47. }
  48. }
  49. return res
  50. }
  51. func BuildGroupTree(list []*system.SysGroupList, current, depth int, node *GroupNode) {
  52. if current == depth {
  53. utils.FileLog.Info("到达组织最深层,停止递归")
  54. return
  55. }
  56. for _, v := range list {
  57. if v.ParentId == node.GroupId {
  58. subNode := &GroupNode{
  59. GroupId: v.GroupId,
  60. GroupName: v.GroupName,
  61. Child: make([]*GroupNode, 0),
  62. }
  63. node.Child = append(node.Child, subNode)
  64. BuildGroupTree(list, current+1, depth, subNode)
  65. }
  66. }
  67. }
  68. func DeleteSysGroupByIds(ids []int) (err error) {
  69. tx := global.DEFAULT_DmSQL.Begin()
  70. defer func() {
  71. if err != nil {
  72. tx.Rollback()
  73. } else {
  74. tx.Commit()
  75. }
  76. }()
  77. err = system.DeleteSysGroupByIds(tx, ids)
  78. if err != nil {
  79. return
  80. }
  81. err = system.ClearSysUserGroupByIds(tx, ids)
  82. return
  83. }
  84. // BuildGroupTreeV2 构建分组树
  85. func BuildGroupTreeV2(groups []*system.SysFullGroup, groupAdmins map[int][]*system.DepartmentUserTree) map[int][]*system.DepartmentUserTree {
  86. // 创建分组ID到节点的映射
  87. groupMap := make(map[int]*system.DepartmentUserTree)
  88. idList := make([]int, 0, len(groups))
  89. // 初始化所有节点,不管父子顺序
  90. for _, g := range groups {
  91. idList = append(idList, g.GroupId)
  92. node := &system.DepartmentUserTree{
  93. NodeId: g.GroupId,
  94. NodeType: 2,
  95. NodeName: g.GroupName,
  96. Children: make([]*system.DepartmentUserTree, 0),
  97. }
  98. // 添加该分组的管理员
  99. if admins, ok := groupAdmins[g.GroupId]; ok {
  100. node.Children = append(node.Children, admins...)
  101. }
  102. groupMap[g.GroupId] = node
  103. }
  104. // 构建父子关系
  105. //rootNodes := make([]*system.DepartmentUserTree, 0)
  106. // 部门与分组的关系
  107. groupTree := make(map[int][]*system.DepartmentUserTree)
  108. for _, g := range groups {
  109. node := groupMap[g.GroupId]
  110. if g.ParentId == 0 || g.ParentId == -1 {
  111. // 如果是根节点
  112. //rootNodes = append(rootNodes, node)
  113. nodeList, ok := groupTree[g.DepartmentId]
  114. if !ok {
  115. nodeList = make([]*system.DepartmentUserTree, 0)
  116. }
  117. groupTree[g.DepartmentId] = append(nodeList, node)
  118. } else {
  119. // 如果是非根节点,找到父节点并添加到父节点的Children中
  120. parentNode, ok := groupMap[g.ParentId]
  121. if !ok {
  122. // 父节点不存在,继续处理下一个
  123. continue
  124. }
  125. parentNode.Children = append(parentNode.Children, node)
  126. }
  127. }
  128. return groupTree
  129. }