From 92553dac010a87fab25eed4ebcc0d9a72e1d9bb1 Mon Sep 17 00:00:00 2001 From: liao Date: Fri, 27 Oct 2023 16:38:52 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=B5=84=E6=96=99=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E6=96=87=E4=BB=B6=E5=A4=B9=E6=A0=91=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsDataCenterFolderServiceImpl.java | 55 ++++++++++++------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java index a468667d..84c53051 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFolderServiceImpl.java @@ -48,11 +48,27 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl nodeMap = new HashMap<>(); - folders.forEach(folder -> { - folder.setPId(folder.getParentId()); - nodeMap.put(folder.getId(), folder); + folders.forEach(node -> { + node.setPId(node.getParentId()); + nodeMap.put(node.getId(), node); }); + // 非管理员角色只能查看自己拥有权限的文件夹 + if (!CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)) { + // 获取自己拥有权限的文件夹集合 + List myFolders = lawsDataCenterFolderMapper.getMyFolderList(CurrentUserUtil.getId()); + + Map myNodeMap = new HashMap<>(); + myFolders.forEach(node -> { + node.setPId(node.getParentId()); + myNodeMap.put(node.getId(), node); + }); + + // 如果有子级没有父级,则将子级挂在父级的父级上 + myFolders.forEach(node -> buildParent(node, nodeMap, myNodeMap)); + folders = myFolders; + } + // 创建根节点列表 List roots = folders.stream().filter(folder -> "0".equals(folder.getParentId())).collect(Collectors.toList()); @@ -60,25 +76,26 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl buildChildren(root, nodeMap)); - if (CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)) { - // 如果是管理员,可以查看全部文件夹 - return roots; - } else { - // 获取自己拥有权限的文件夹集合 - List myFolders = lawsDataCenterFolderMapper.getMyFolderList(CurrentUserUtil.getId()); - - Map myNodeMap = new HashMap<>(); - myFolders.forEach(folder -> { - folder.setPId(folder.getParentId()); - myNodeMap.put(folder.getId(), folder); - }); - - - } - return roots; } + /** + * @Author: liao + * @Date: 2023/10/27 16:30 + * @Description: 递归构建父节点 + **/ + private void buildParent(LawsDataCenterFolder node, Map nodeMap, Map myNodeMap) { + String pId = node.getPId(); + if (!"0".equals(pId)) { + LawsDataCenterFolder parent = myNodeMap.get(pId); + if (parent == null) { + parent = nodeMap.get(pId); + node.setPId(parent.getPId()); + buildParent(node, nodeMap, myNodeMap); + } + } + } + /** * @Author: liao * @Date: 2023/10/27 10:03