update 资料中心左侧文件夹树查询

This commit is contained in:
liao
2023-10-27 16:38:52 +08:00
parent 2b41e9987e
commit 92553dac01
@@ -48,11 +48,27 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl<LawsDataCenterF
// 创建节点映射,方便查找节点
Map<String, LawsDataCenterFolder> 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<LawsDataCenterFolder> myFolders = lawsDataCenterFolderMapper.getMyFolderList(CurrentUserUtil.getId());
Map<String, LawsDataCenterFolder> 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<LawsDataCenterFolder> roots = folders.stream().filter(folder ->
"0".equals(folder.getParentId())).collect(Collectors.toList());
@@ -60,25 +76,26 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl<LawsDataCenterF
// 递归构建子节点
roots.forEach(root -> buildChildren(root, nodeMap));
if (CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)) {
// 如果是管理员,可以查看全部文件夹
return roots;
} else {
// 获取自己拥有权限的文件夹集合
List<LawsDataCenterFolder> myFolders = lawsDataCenterFolderMapper.getMyFolderList(CurrentUserUtil.getId());
Map<String, LawsDataCenterFolder> 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<String, LawsDataCenterFolder> nodeMap, Map<String, LawsDataCenterFolder> 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