update 资料中心左侧文件夹树查询
This commit is contained in:
+36
-19
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user