ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
@@ -1,11 +1,11 @@ package com.ruoyi.web.controller.system; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ArrayUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; @@ -76,7 +76,7 @@ */ @ApiOperation("è·åé¨é¨ä¸ææ å表") @GetMapping("/treeselect") public AjaxResult<List<TreeSelect>> treeselect(SysDept dept) { public AjaxResult<List<Tree<Long>>> treeselect(SysDept dept) { List<SysDept> depts = deptService.selectDeptList(dept); return AjaxResult.success(deptService.buildDeptTreeSelect(depts)); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
@@ -1,10 +1,10 @@ package com.ruoyi.web.controller.system; import cn.hutool.core.lang.tree.Tree; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; @@ -61,7 +61,7 @@ */ @ApiOperation("è·åèå䏿æ å表") @GetMapping("/treeselect") public AjaxResult<List<TreeSelect>> treeselect(SysMenu menu) { public AjaxResult<List<Tree<Long>>> treeselect(SysMenu menu) { List<SysMenu> menus = menuService.selectMenuList(menu, getUserId()); return AjaxResult.success(menuService.buildMenuTreeSelect(menus)); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
ÎļþÒÑɾ³ý ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.ruoyi.common.utils; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.parser.NodeParser; import java.util.List; /** * æ©å± hutool TreeUtil å°è£ ç³»ç»æ æå»º * * @author Lion Li */ public class TreeBuildUtils extends TreeUtil { /** * æ ¹æ®å端å®å¶å·®å¼ååæ®µ */ public static final TreeNodeConfig DEFAULT_CONFIG = TreeNodeConfig.DEFAULT_CONFIG.setNameKey("label"); /** * é»è®¤æ ç¶èç¹id */ public static final Long DEFAULT_PARENT_ID = 0L; public static <T> List<Tree<Long>> build(List<T> list, NodeParser<T, Long> nodeParser) { return TreeUtil.build(list, DEFAULT_PARENT_ID, DEFAULT_CONFIG, nodeParser); } } ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -1,7 +1,7 @@ package com.ruoyi.system.service; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; import java.util.List; @@ -21,20 +21,12 @@ List<SysDept> selectDeptList(SysDept dept); /** * æå»ºå端æéè¦æ ç»æ * * @param depts é¨é¨å表 * @return æ ç»æå表 */ List<SysDept> buildDeptTree(List<SysDept> depts); /** * æå»ºå端æéè¦ä¸ææ ç»æ * * @param depts é¨é¨å表 * @return 䏿æ ç»æå表 */ List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts); List<Tree<Long>> buildDeptTreeSelect(List<SysDept> depts); /** * æ ¹æ®è§è²IDæ¥è¯¢é¨é¨æ ä¿¡æ¯ ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -1,7 +1,7 @@ package com.ruoyi.system.service; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.system.domain.vo.RouterVo; @@ -65,20 +65,12 @@ List<RouterVo> buildMenus(List<SysMenu> menus); /** * æå»ºå端æéè¦æ ç»æ * * @param menus èåå表 * @return æ ç»æå表 */ List<SysMenu> buildMenuTree(List<SysMenu> menus); /** * æå»ºå端æéè¦ä¸ææ ç»æ * * @param menus èåå表 * @return 䏿æ ç»æå表 */ List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus); List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus); /** * æ ¹æ®èåIDæ¥è¯¢ä¿¡æ¯ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -1,11 +1,11 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; @@ -13,6 +13,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TreeBuildUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.system.mapper.SysRoleMapper; @@ -21,10 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * é¨é¨ç®¡ç æå¡å®ç° @@ -53,41 +52,18 @@ } /** * æå»ºå端æéè¦æ ç»æ * * @param depts é¨é¨å表 * @return æ ç»æå表 */ @Override public List<SysDept> buildDeptTree(List<SysDept> depts) { List<SysDept> returnList = new ArrayList<SysDept>(); List<Long> tempList = new ArrayList<Long>(); for (SysDept dept : depts) { tempList.add(dept.getDeptId()); } for (SysDept dept : depts) { // 妿æ¯é¡¶çº§èç¹, éå该ç¶èç¹çææåèç¹ if (!tempList.contains(dept.getParentId())) { recursionFn(depts, dept); returnList.add(dept); } } if (returnList.isEmpty()) { returnList = depts; } return returnList; } /** * æå»ºå端æéè¦ä¸ææ ç»æ * * @param depts é¨é¨å表 * @return 䏿æ ç»æå表 */ @Override public List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts) { List<SysDept> deptTrees = buildDeptTree(depts); return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); public List<Tree<Long>> buildDeptTreeSelect(List<SysDept> depts) { return TreeBuildUtils.build(depts, (dept, tree) -> tree.setId(dept.getDeptId()) .setParentId(dept.getParentId()) .setName(dept.getDeptName()) .setWeight(dept.getOrderNum())); } /** @@ -273,37 +249,4 @@ return baseMapper.deleteById(deptId); } /** * éå½å表 */ private void recursionFn(List<SysDept> list, SysDept t) { // å¾å°åèç¹å表 List<SysDept> childList = getChildList(list, t); t.setChildren(childList); for (SysDept tChild : childList) { if (hasChild(list, tChild)) { recursionFn(list, tChild); } } } /** * å¾å°åèç¹å表 */ private List<SysDept> getChildList(List<SysDept> list, SysDept t) { List<SysDept> tlist = new ArrayList<SysDept>(); for (SysDept n : list) { if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { tlist.add(n); } } return tlist; } /** * 夿æ¯å¦æåèç¹ */ private boolean hasChild(List<SysDept> list, SysDept t) { return getChildList(list, t).size() > 0; } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -1,15 +1,16 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.TreeSelect; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TreeBuildUtils; import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.vo.MetaVo; import com.ruoyi.system.domain.vo.RouterVo; @@ -21,7 +22,6 @@ import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** * èå ä¸å¡å±å¤ç @@ -171,41 +171,18 @@ } /** * æå»ºå端æéè¦æ ç»æ * * @param menus èåå表 * @return æ ç»æå表 */ @Override public List<SysMenu> buildMenuTree(List<SysMenu> menus) { List<SysMenu> returnList = new ArrayList<SysMenu>(); List<Long> tempList = new ArrayList<Long>(); for (SysMenu dept : menus) { tempList.add(dept.getMenuId()); } for (SysMenu menu : menus) { // 妿æ¯é¡¶çº§èç¹, éå该ç¶èç¹çææåèç¹ if (!tempList.contains(menu.getParentId())) { recursionFn(menus, menu); returnList.add(menu); } } if (returnList.isEmpty()) { returnList = menus; } return returnList; } /** * æå»ºå端æéè¦ä¸ææ ç»æ * * @param menus èåå表 * @return 䏿æ ç»æå表 */ @Override public List<TreeSelect> buildMenuTreeSelect(List<SysMenu> menus) { List<SysMenu> menuTrees = buildMenuTree(menus); return menuTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); public List<Tree<Long>> buildMenuTreeSelect(List<SysMenu> menus) { return TreeBuildUtils.build(menus, (menu, tree) -> tree.setId(menu.getMenuId()) .setParentId(menu.getParentId()) .setName(menu.getMenuName()) .setWeight(menu.getOrderNum())); } /**