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