|
@@ -191,6 +191,27 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
|
|
public List<SysMenu> buildMenuTree(List<SysMenu> menus) {
|
|
|
|
+ List<SysMenu> returnList = new ArrayList<>();
|
|
|
|
+ List<Long> allMenuId = ObjectUtils.map(menus, SysMenu::getId);
|
|
|
|
+ for (SysMenu menu : menus) {
|
|
|
|
+ // 如果是顶级节点, 遍历该父节点的所有子节点
|
|
|
|
+ if (!allMenuId.contains(menu.getParentId())) {
|
|
|
|
+ recursionFn(menus, menu);
|
|
|
|
+ returnList.add(menu);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return returnList.isEmpty() ? menus : returnList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 构建前端所需要树结构
|
|
|
|
+ *
|
|
|
|
+ * @param menus 菜单列表
|
|
|
|
+ * @return 树结构列表
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public List<SysMenu> buildMenuTreeNotAddLeafNode(List<SysMenu> menus) {
|
|
List<SysMenu> returnList = new ArrayList<>();
|
|
List<SysMenu> returnList = new ArrayList<>();
|
|
List<Long> allMenuId = ObjectUtils.map(menus, SysMenu::getId);
|
|
List<Long> allMenuId = ObjectUtils.map(menus, SysMenu::getId);
|
|
for (SysMenu menu : menus) {
|
|
for (SysMenu menu : menus) {
|
|
@@ -204,6 +225,7 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
return returnList.isEmpty() ? menus : returnList;
|
|
return returnList.isEmpty() ? menus : returnList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 功能描述: 递归调用,叶子节点不放到父类中
|
|
* 功能描述: 递归调用,叶子节点不放到父类中
|
|
*
|
|
*
|
|
@@ -217,7 +239,7 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
List<SysMenu> childList = getChildList(list, menu);
|
|
List<SysMenu> childList = getChildList(list, menu);
|
|
for (SysMenu tChild : childList) {
|
|
for (SysMenu tChild : childList) {
|
|
if (hasChild(list, tChild)) {
|
|
if (hasChild(list, tChild)) {
|
|
- recursionFn(list, tChild);
|
|
|
|
|
|
+ recursionNotAddLeafNode(list, tChild);
|
|
} else {
|
|
} else {
|
|
// 为叶子节点
|
|
// 为叶子节点
|
|
count++;
|
|
count++;
|
|
@@ -241,6 +263,19 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
|
|
return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 构建前端所需要下拉树结构
|
|
|
|
+ *
|
|
|
|
+ * @param menus 菜单列表
|
|
|
|
+ * @return 下拉树结构列表
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public List<TreeSelect> buildMenuTreeSelectNotAddLeafNode(List<SysMenu> menus)
|
|
|
|
+ {
|
|
|
|
+ List<SysMenu> menuTrees = buildMenuTreeNotAddLeafNode(menus);
|
|
|
|
+ return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 根据菜单ID查询信息
|
|
* 根据菜单ID查询信息
|
|
*
|
|
*
|