package services import ( "eta_gn/eta_api/models/system" "eta_gn/eta_api/utils" ) func GetRoleTypeCode(roleType string) string { var roleTypeCode string switch roleType { case utils.ROLE_TYPE_ADMIN: roleTypeCode = utils.ROLE_TYPE_CODE_ADMIN case utils.ROLE_TYPE_FICC_ADMIN: roleTypeCode = utils.ROLE_TYPE_CODE_FICC_ADMIN case utils.ROLE_TYPE_FICC_SELLER: roleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER case utils.ROLE_TYPE_RAI_ADMIN: roleTypeCode = utils.ROLE_TYPE_CODE_RAI_ADMIN case utils.ROLE_TYPE_FICC_GROUP, utils.ROLE_TYPE_FICC_MANAGER: roleTypeCode = utils.ROLE_TYPE_CODE_FICC_GROUP case utils.ROLE_TYPE_RAI_GROUP: roleTypeCode = utils.ROLE_TYPE_CODE_RAI_GROUP case utils.ROLE_TYPE_FICC_DEPARTMENT: roleTypeCode = utils.ROLE_TYPE_CODE_FICC_DEPARTMENT case utils.ROLE_TYPE_RAI_DEPARTMENT: roleTypeCode = utils.ROLE_TYPE_CODE_RAI_DEPARTMENT case utils.ROLE_TYPE_FICC_RESEARCHR: roleTypeCode = utils.ROLE_TYPE_CODE_FICC_RESEARCHR case utils.ROLE_TYPE_RAI_RESEARCHR: roleTypeCode = utils.ROLE_TYPE_CODE_RAI_RESEARCHR default: roleTypeCode = utils.ROLE_TYPE_ADMIN } return roleTypeCode } // GetMenuTreeRecursive 递归菜单树 func GetMenuTreeRecursive(list []*system.SysMenuItem, parentId int) []*system.SysMenuItem { res := make([]*system.SysMenuItem, 0) for _, v := range list { if v.ParentId == parentId { v.Children = GetMenuTreeRecursive(list, v.MenuId) res = append(res, v) } } return res } // BuildGroupTree 构建分组树 func BuildGroupTree(groups []*system.SysFullGroup, groupAdmins map[int][]*system.DepartmentUserTree) map[int][]*system.DepartmentUserTree { // 创建分组ID到节点的映射 groupMap := make(map[int]*system.DepartmentUserTree) idList := make([]int, 0, len(groups)) // 初始化所有节点,不管父子顺序 for _, g := range groups { idList = append(idList, g.GroupId) node := &system.DepartmentUserTree{ NodeId: g.GroupId, NodeType: 2, NodeName: g.GroupName, Children: make([]*system.DepartmentUserTree, 0), } // 添加该分组的管理员 if admins, ok := groupAdmins[g.GroupId]; ok { node.Children = append(node.Children, admins...) } groupMap[g.GroupId] = node } // 构建父子关系 //rootNodes := make([]*system.DepartmentUserTree, 0) // 部门与分组的关系 groupTree := make(map[int][]*system.DepartmentUserTree) for _, g := range groups { node := groupMap[g.GroupId] if g.ParentId == 0 || g.ParentId == -1 { // 如果是根节点 //rootNodes = append(rootNodes, node) nodeList, ok := groupTree[g.DepartmentId] if !ok { nodeList = make([]*system.DepartmentUserTree, 0) } groupTree[g.DepartmentId] = append(nodeList, node) } else { // 如果是非根节点,找到父节点并添加到父节点的Children中 parentNode, ok := groupMap[g.ParentId] if !ok { // 父节点不存在,继续处理下一个 continue } parentNode.Children = append(parentNode.Children, node) } } return groupTree }