system.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package services
  2. import (
  3. "eta_gn/eta_api/models/system"
  4. "eta_gn/eta_api/utils"
  5. )
  6. func GetRoleTypeCode(roleType string) string {
  7. var roleTypeCode string
  8. switch roleType {
  9. case utils.ROLE_TYPE_ADMIN:
  10. roleTypeCode = utils.ROLE_TYPE_CODE_ADMIN
  11. case utils.ROLE_TYPE_FICC_ADMIN:
  12. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN
  13. case utils.ROLE_TYPE_FICC_SELLER:
  14. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  15. case utils.ROLE_TYPE_RAI_ADMIN:
  16. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN
  17. case utils.ROLE_TYPE_FICC_GROUP, utils.ROLE_TYPE_FICC_MANAGER:
  18. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_GROUP
  19. case utils.ROLE_TYPE_RAI_GROUP:
  20. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_GROUP
  21. case utils.ROLE_TYPE_FICC_DEPARTMENT:
  22. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_DEPARTMENT
  23. case utils.ROLE_TYPE_RAI_DEPARTMENT:
  24. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_DEPARTMENT
  25. case utils.ROLE_TYPE_FICC_RESEARCHR:
  26. roleTypeCode = utils.ROLE_TYPE_CODE_FICC_RESEARCHR
  27. case utils.ROLE_TYPE_RAI_RESEARCHR:
  28. roleTypeCode = utils.ROLE_TYPE_CODE_RAI_RESEARCHR
  29. default:
  30. roleTypeCode = utils.ROLE_TYPE_ADMIN
  31. }
  32. return roleTypeCode
  33. }
  34. // GetMenuTreeRecursive 递归菜单树
  35. func GetMenuTreeRecursive(list []*system.SysMenuItem, parentId int) []*system.SysMenuItem {
  36. res := make([]*system.SysMenuItem, 0)
  37. for _, v := range list {
  38. if v.ParentId == parentId {
  39. v.Children = GetMenuTreeRecursive(list, v.MenuId)
  40. res = append(res, v)
  41. }
  42. }
  43. return res
  44. }
  45. // BuildGroupTree 构建分组树
  46. func BuildGroupTree(groups []*system.SysFullGroup, groupAdmins map[int][]*system.DepartmentUserTree) map[int][]*system.DepartmentUserTree {
  47. // 创建分组ID到节点的映射
  48. groupMap := make(map[int]*system.DepartmentUserTree)
  49. idList := make([]int, 0, len(groups))
  50. // 初始化所有节点,不管父子顺序
  51. for _, g := range groups {
  52. idList = append(idList, g.GroupId)
  53. node := &system.DepartmentUserTree{
  54. NodeId: g.GroupId,
  55. NodeType: 2,
  56. NodeName: g.GroupName,
  57. Children: make([]*system.DepartmentUserTree, 0),
  58. }
  59. // 添加该分组的管理员
  60. if admins, ok := groupAdmins[g.GroupId]; ok {
  61. node.Children = append(node.Children, admins...)
  62. }
  63. groupMap[g.GroupId] = node
  64. }
  65. // 构建父子关系
  66. //rootNodes := make([]*system.DepartmentUserTree, 0)
  67. // 部门与分组的关系
  68. groupTree := make(map[int][]*system.DepartmentUserTree)
  69. for _, g := range groups {
  70. node := groupMap[g.GroupId]
  71. if g.ParentId == 0 || g.ParentId == -1 {
  72. // 如果是根节点
  73. //rootNodes = append(rootNodes, node)
  74. nodeList, ok := groupTree[g.DepartmentId]
  75. if !ok {
  76. nodeList = make([]*system.DepartmentUserTree, 0)
  77. }
  78. groupTree[g.DepartmentId] = append(nodeList, node)
  79. } else {
  80. // 如果是非根节点,找到父节点并添加到父节点的Children中
  81. parentNode, ok := groupMap[g.ParentId]
  82. if !ok {
  83. // 父节点不存在,继续处理下一个
  84. continue
  85. }
  86. parentNode.Children = append(parentNode.Children, node)
  87. }
  88. }
  89. return groupTree
  90. }