From 9c61ebc81dd47a227c51c6db2a823827ec6ca155 Mon Sep 17 00:00:00 2001 From: guoxin <371864209@qq.com> Date: Sun, 17 Sep 2023 18:20:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=9B=AE=E5=BD=95=E7=9A=84=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=E4=B8=AD=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E8=BD=AF=E8=BF=9E=E6=8E=A5=E7=9B=AE=E5=BD=95=E7=9A=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/service/DirectoryTreeService.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java index aa6a12e..29d4a31 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java +++ b/shandan-system/src/main/java/com/keyware/shandan/bianmu/service/DirectoryTreeService.java @@ -1,5 +1,6 @@ package com.keyware.shandan.bianmu.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.keyware.shandan.bianmu.entity.DirectoryResource; @@ -153,7 +154,7 @@ public class DirectoryTreeService { } Set allowDirIds = dirPermissionService.getByReadPermis(SecurityUtil.getLoginSysUser()); Set dirIds = allDir.stream().map(DirectoryVo::getId).filter(allowDirIds::contains).collect(Collectors.toSet()); - //dirIds.add(DirectoryType.LINK_DIR == parent.getDirectoryType() ? parent.getResourceId() : parentId); + QueryWrapper query = new QueryWrapper<>(); query.in("PARENT_ID", dirIds); if (StringUtils.hasText(text)) { @@ -168,20 +169,30 @@ public class DirectoryTreeService { } private void allDirectoryByParent(DirectoryVo parent, HashSet result) { - String parentId = DirectoryType.LINK_DIR == parent.getDirectoryType() ? parent.getResourceId() : parent.getId(); - if(DirectoryType.LINK_DIR == parent.getDirectoryType()){ + if (DirectoryType.LINK_DIR == parent.getDirectoryType()) { DirectoryVo linkDir = directoryService.getById(parent.getResourceId()); - if(linkDir != null){ + if (linkDir != null) { result.add(linkDir); } - }else{ + } else { result.add(parent); } - List children = directoryService.childrenListByParent(parentId); - children.forEach(dir -> { - result.add(dir); - allDirectoryByParent(dir, result); - }); + // 查询普通目录数据 + result.addAll(dirListByParent(parent)); + + // 查询软连接目录数据 + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DirectoryVo::getDirectoryType, DirectoryType.LINK_DIR) + .likeRight(DirectoryVo::getDirectoryPath, parent.getDirectoryPath() + "/"); + directoryService.list(query).forEach(dir -> result.addAll(dirListByParent(dir))); + + } + + private List dirListByParent(DirectoryVo parent) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DirectoryVo::getDirectoryType, DirectoryType.DIRECTORY) + .likeRight(DirectoryVo::getDirectoryPath, parent.getDirectoryPath() + "/"); + return directoryService.list(query); } private static class DirectoryParentBuilder {