shiqian 4 سال پیش
والد
کامیت
36955f8916

+ 2 - 2
boman-modules/boman-system/src/main/java/com/boman/system/controller/SysMenuController.java

@@ -70,7 +70,7 @@ public class SysMenuController extends BaseController
     }
     }
 
 
     /**
     /**
-     * 加载对应角色菜单列表树
+     * 加载对应角色菜单列表树, 不包含叶子结点 不包含叶子结点 不包含叶子结点 重要的事情说三遍
      */
      */
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
@@ -79,7 +79,7 @@ public class SysMenuController extends BaseController
         List<SysMenu> menus = menuService.selectMenuList(userId);
         List<SysMenu> menus = menuService.selectMenuList(userId);
         AjaxResult ajax = AjaxResult.success();
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
         ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
-        ajax.put("menus", menuService.buildMenuTreeSelect(menus));
+        ajax.put("menus", menuService.buildMenuTreeSelectNotAddLeafNode(menus));
         return ajax;
         return ajax;
     }
     }
 
 

+ 15 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/ISysMenuService.java

@@ -72,6 +72,13 @@ public interface ISysMenuService
      * @return 树结构列表
      * @return 树结构列表
      */
      */
     public List<SysMenu> buildMenuTree(List<SysMenu> menus);
     public List<SysMenu> buildMenuTree(List<SysMenu> menus);
+    /**
+     * 构建前端所需要树结构 没有叶子结点
+     *
+     * @param menus 菜单列表
+     * @return 树结构列表
+     */
+    public List<SysMenu> buildMenuTreeNotAddLeafNode(List<SysMenu> menus);
 
 
     /**
     /**
      * 构建前端所需要下拉树结构
      * 构建前端所需要下拉树结构
@@ -81,6 +88,14 @@ public interface ISysMenuService
      */
      */
     public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
     public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus);
 
 
+    /**
+     * 构建前端所需要下拉树结构
+     *
+     * @param menus 菜单列表
+     * @return 下拉树结构列表
+     */
+    public List<TreeSelect> buildMenuTreeSelectNotAddLeafNode(List<SysMenu> menus);
+
     /**
     /**
      * 根据菜单ID查询信息
      * 根据菜单ID查询信息
      * 
      * 

+ 36 - 1
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysMenuServiceImpl.java

@@ -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查询信息
      * 
      * 

+ 3 - 0
boman-modules/boman-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -35,6 +35,9 @@
     <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
     <select id="selectMenuList" parameterType="SysMenu" resultMap="SysMenuResult">
 		<include refid="selectMenuVo"/>
 		<include refid="selectMenuVo"/>
 		<where>
 		<where>
+			<if test="id != null and id != ''">
+				AND id = #{id}
+			</if>
 			<if test="menuName != null and menuName != ''">
 			<if test="menuName != null and menuName != ''">
 				AND menu_name like concat('%', #{menuName}, '%')
 				AND menu_name like concat('%', #{menuName}, '%')
 			</if>
 			</if>