From fcb509007e7a19ceac6f994c1ccd6b70a6c1908c Mon Sep 17 00:00:00 2001 From: haoxr <1490493387@qq.com> Date: Sun, 21 May 2023 15:11:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E2=9C=82=EF=B8=8F=E9=80=92?= =?UTF-8?q?=E5=BD=92=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95=E3=80=81=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=B1=9E=E6=80=A7=E5=88=97=E8=A1=A8=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../youlai/system/pojo/entity/SysMenu.java | 5 + .../com/youlai/system/pojo/vo/MenuVO.java | 17 ++- .../service/impl/SysDeptServiceImpl.java | 88 +++++--------- .../service/impl/SysMenuServiceImpl.java | 115 ++++++++++-------- 4 files changed, 109 insertions(+), 116 deletions(-) diff --git a/src/main/java/com/youlai/system/pojo/entity/SysMenu.java b/src/main/java/com/youlai/system/pojo/entity/SysMenu.java index 709c815f..570be33e 100644 --- a/src/main/java/com/youlai/system/pojo/entity/SysMenu.java +++ b/src/main/java/com/youlai/system/pojo/entity/SysMenu.java @@ -73,4 +73,9 @@ public class SysMenu extends BaseEntity { */ private String redirect; + /** + * 父节点路径,以英文逗号(,)分割 + */ + private String treePath; + } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/pojo/vo/MenuVO.java b/src/main/java/com/youlai/system/pojo/vo/MenuVO.java index 5c20608a..a2b40fa8 100644 --- a/src/main/java/com/youlai/system/pojo/vo/MenuVO.java +++ b/src/main/java/com/youlai/system/pojo/vo/MenuVO.java @@ -20,14 +20,11 @@ public class MenuVO { @Schema(description = "菜单名称") private String name; - @Schema(description = "ICON") - private String icon; + @Schema(description="菜单类型") + private MenuTypeEnum type; - @Schema(description = "路由名称") - private String routeName; - - @Schema(description = "路由相对路径") - private String routePath; + @Schema(description = "路由路径") + private String path; @Schema(description = "组件路径") private String component; @@ -38,12 +35,12 @@ public class MenuVO { @Schema(description = "菜单是否可见(1:显示;0:隐藏)") private Integer visible; + @Schema(description = "ICON") + private String icon; + @Schema(description = "跳转路径") private String redirect; - @Schema(description="菜单类型") - private MenuTypeEnum type; - @Schema(description="按钮权限标识") private String perm; diff --git a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java index 3205175b..a21d55cc 100644 --- a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java @@ -1,25 +1,25 @@ package com.youlai.system.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.enums.StatusEnum; -import com.youlai.system.pojo.vo.Option; import com.youlai.system.converter.DeptConverter; import com.youlai.system.mapper.SysDeptMapper; import com.youlai.system.pojo.entity.SysDept; import com.youlai.system.pojo.form.DeptForm; import com.youlai.system.pojo.query.DeptQuery; import com.youlai.system.pojo.vo.DeptVO; +import com.youlai.system.pojo.vo.Option; import com.youlai.system.service.SysDeptService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -52,35 +52,20 @@ public class SysDeptServiceImpl extends ServiceImpl impl .orderByAsc(SysDept::getSort) ); + Set deptIds = deptList.stream() + .map(SysDept::getId) + .collect(Collectors.toSet()); + + Set parentIds = deptList.stream() + .map(SysDept::getParentId) + .collect(Collectors.toSet()); + + List rootIds = CollectionUtil.subtractToList(parentIds, deptIds); + List list = new ArrayList<>(); - - if (CollectionUtil.isNotEmpty(deptList)) { - - Set cacheDeptIds = deptList.stream() - .map(SysDept::getId) - .collect(Collectors.toSet()); - - - for (SysDept dept : deptList) { - Long parentId = dept.getParentId(); - // 不在缓存ID列表的parentId是顶级节点ID,以此作为递归开始 - if (!cacheDeptIds.contains(parentId)) { - list.addAll(recurDeptList(parentId, deptList)); - cacheDeptIds.add(parentId); // 避免重复递归 - } - } + for (Long rootId : rootIds) { + list.addAll(recurDeptList(rootId, deptList)); } - - // 列表为空说明所有的节点都是独立的 - if (list.isEmpty()) { - return deptList.stream().map(item -> { - DeptVO deptVO = new DeptVO(); - BeanUtil.copyProperties(item, deptVO); - return deptVO; - }) - .collect(Collectors.toList()); - } - return list; } @@ -92,7 +77,7 @@ public class SysDeptServiceImpl extends ServiceImpl impl * @return */ public List recurDeptList(Long parentId, List deptList) { - List list = deptList.stream() + return deptList.stream() .filter(dept -> dept.getParentId().equals(parentId)) .map(dept -> { DeptVO deptVO = deptConverter.entity2Vo(dept); @@ -100,10 +85,8 @@ public class SysDeptServiceImpl extends ServiceImpl impl deptVO.setChildren(children); return deptVO; }).collect(Collectors.toList()); - return list; } - /** * 部门下拉选项 * @@ -111,7 +94,6 @@ public class SysDeptServiceImpl extends ServiceImpl impl */ @Override public List