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