Переглянути джерело

后台菜单列表增加权限集合

mac 2 роки тому
батько
коміт
a725ba4ad7

+ 13 - 4
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/service/impl/SysMenuServiceImpl.java

@@ -92,7 +92,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 				.eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type)
 				.eq(StrUtil.isNotBlank(type), SysMenu::getMenuType, type)
 				.orderByAsc(SysMenu::getSortOrder))
 				.orderByAsc(SysMenu::getSortOrder))
 			.stream()
 			.stream()
-			.map(getNodeFunction())
+			.map(getNodeFunction(null))
 			.collect(Collectors.toList());
 			.collect(Collectors.toList());
 
 
 		// 模糊查询 不组装树结构 直接返回 表格方便编辑
 		// 模糊查询 不组装树结构 直接返回 表格方便编辑
@@ -117,9 +117,14 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 	 */
 	 */
 	@Override
 	@Override
 	public List<Tree<Long>> filterMenu(Set<SysMenu> all, String type, Long parentId) {
 	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()
 		List<TreeNode<Long>> collect = all.stream()
 			.filter(menuTypePredicate(type))
 			.filter(menuTypePredicate(type))
-			.map(getNodeFunction())
+			.map(getNodeFunction(permissions))
 			.collect(Collectors.toList());
 			.collect(Collectors.toList());
 
 
 		Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId;
 		Long parent = parentId == null ? CommonConstants.MENU_TREE_ROOT_ID : parentId;
@@ -127,7 +132,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 	}
 	}
 
 
 	@NotNull
 	@NotNull
-	private Function<SysMenu, TreeNode<Long>> getNodeFunction() {
+	private Function<SysMenu, TreeNode<Long>> getNodeFunction(Map<Long, List<String>> permissions) {
 		return menu -> {
 		return menu -> {
 			TreeNode<Long> node = new TreeNode<>();
 			TreeNode<Long> node = new TreeNode<>();
 			node.setId(menu.getMenuId());
 			node.setId(menu.getMenuId());
@@ -138,7 +143,11 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
 			Map<String, Object> extra = new HashMap<>();
 			Map<String, Object> extra = new HashMap<>();
 			extra.put("path", menu.getPath());
 			extra.put("path", menu.getPath());
 			extra.put("menuType", menu.getMenuType());
 			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());
 			extra.put("sortOrder", menu.getSortOrder());
 
 
 			// 适配 vue3
 			// 适配 vue3