Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【修复】获取菜单精简信息列表接口没有排除父 ID 非 0 的节点 #561

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
【修复】获取菜单精简信息列表接口没有排除父 ID 非 0 的节点
dongdongxiang committed Jun 16, 2024
commit 1c7ba5c0d6f2dbb95e916aa45eec32a94103a96f
Original file line number Diff line number Diff line change
@@ -109,9 +109,10 @@ public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
// 1.3 获得菜单列表
Set<Long> menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId));
List<MenuDO> menuList = menuService.getMenuList(menuIds);
// 过滤掉关闭的菜单及其子菜单
// 过滤掉关闭的菜单
menuList = menuService.filterClosedMenus(menuList);

menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); // 移除禁用的菜单
// 2. 拼接结果返回
return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
}
Original file line number Diff line number Diff line change
@@ -126,16 +126,18 @@ public List<MenuDO> filterClosedMenus(List<MenuDO> menuList) {
if(CollectionUtils.isEmpty(menuList)){
return Collections.emptyList();
}
List<MenuDO> allMenuList = getMenuList();

// 根据parentId快速查找子节点
Map<Long, List<MenuDO>> childrenMap = menuList.stream()
Map<Long, List<MenuDO>> childrenMap = allMenuList.stream()
.collect(Collectors.groupingBy(MenuDO::getParentId));

// 所有关闭的节点ID
Set<Long> closedNodeIds = new HashSet<>();

// 标记所有关闭的节点
for (MenuDO menu : menuList) {
if (Objects.equals(menu.getStatus(), CommonStatusEnum.DISABLE.getStatus())) {
for (MenuDO menu : allMenuList) {
if (!Objects.equals(menu.getStatus(), CommonStatusEnum.ENABLE.getStatus())) {
markClosedNodes(menu.getId(), childrenMap, closedNodeIds);
}
}