|
|
@@ -92,7 +92,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|
|
.eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type)
|
|
|
.orderByAsc(SysMenu::getSortOrder))
|
|
|
.stream()
|
|
|
- .map(getNodeFunction())
|
|
|
+ .map(getNodeFunction(null))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// 模糊查询 不组装树结构 直接返回 表格方便编辑
|
|
|
@@ -117,9 +117,14 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|
|
*/
|
|
|
@Override
|
|
|
public List<Tree<Long>> filterMenu(Set<SysMenu> all, String type, Long parentId) {
|
|
|
+ //拿出每个菜单的权限转为集合
|
|
|
+ Map<Long, List<String>> permissions = all.stream()
|
|
|
+ .filter(item -> item.getMenuType().equals(MenuTypeEnum.BUTTON.getType()))
|
|
|
+ .collect(Collectors.groupingBy(SysMenu::getParentId, Collectors.mapping(SysMenu::getPermission, Collectors.toList())));
|
|
|
+
|
|
|
List<TreeNode<Long>> collect = all.stream()
|
|
|
.filter(menuTypePredicate(type))
|
|
|
- .map(getNodeFunction())
|
|
|
+ .map(getNodeFunction(permissions))
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId;
|
|
|
@@ -127,7 +132,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|
|
}
|
|
|
|
|
|
@NotNull
|
|
|
- private Function<SysMenu, TreeNode<Long>> getNodeFunction() {
|
|
|
+ private Function<SysMenu, TreeNode<Long>> getNodeFunction(Map<Long, List<String>> permissions) {
|
|
|
return menu -> {
|
|
|
TreeNode<Long> node = new TreeNode<>();
|
|
|
node.setId(menu.getMenuId());
|
|
|
@@ -138,7 +143,11 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|
|
Map<String, Object> extra = new HashMap<>();
|
|
|
extra.put("path", menu.getPath());
|
|
|
extra.put("menuType", menu.getMenuType());
|
|
|
- extra.put("permission", menu.getPermission());
|
|
|
+ if(permissions != null){
|
|
|
+ extra.put("permission", permissions.get(menu.getMenuId()));
|
|
|
+ }else{
|
|
|
+ extra.put("permission", menu.getPermission());
|
|
|
+ }
|
|
|
extra.put("sortOrder", menu.getSortOrder());
|
|
|
|
|
|
// 适配 vue3
|