From 5192c15e9cc0b91d5f1b36f4c986095dfafb55e8 Mon Sep 17 00:00:00 2001 From: Guo XIn <371864209@qq.com> Date: Mon, 21 Aug 2023 11:28:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=B0=86=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E5=AD=90=E7=BA=A7=E7=9B=AE=E5=BD=95=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=B5=8B=E4=BA=88=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=9F=A5=E7=9C=8B=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bianmu/service/DirectoryTreeService.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 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 9e8eda5..bafaef7 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 @@ -53,15 +53,31 @@ public class DirectoryTreeService { if (StringUtils.hasText(pid)) { parentDir = directoryService.getById(pid); } + // 获取子级节点 List directoryList = getDirectoryList(parentDir, allChild, hasMetadata, busType); + // 审核状态 ReviewStatus status = StringUtils.hasText(reviewStatus) ? ReviewStatus.valueOf(reviewStatus) : null; + // 当前用户 SysUser user = SecurityUtil.getLoginSysUser(); + // 根据权限类型获取权限范围内的数据的ID集合 Set permisDis = "write".equals(permis) ? dirPermissionService.getByWritePermis(user) : dirPermissionService.getByReadPermis(user); + // 判断权限范围 List permisDirectoryList = StreamUtil.as(directoryList).filter(dir -> { - if (status == null) { - return permisDis.contains(dir.getId()); + if(dir.getReviewStatus() == status || status == null){ + boolean permisAllow = permisDis.contains(dir.getId()); + if(permisAllow){ + return true; + } + // 如果权限不允许,则需要判断当前节点的所有子级节点是否有允许的目录,如果有则需要返回到前端的树组件中 + Set childrenIds = getDirectoryList(dir, true, false, busType).stream().map(DirectoryVo::getId).collect(Collectors.toSet()); + for(String id : childrenIds){ + if(permisDis.contains(id)){ + return true; + } + } + return false; } - return dir.getReviewStatus() == status && permisDis.contains(dir.getId()); + return false; }).toList(); DirectoryParentBuilder dpb = new DirectoryParentBuilder(directoryList, permisDirectoryList);