更新文件目录获取

This commit is contained in:
2026-02-16 22:30:48 +08:00
parent c90c1a22ad
commit ba33c6abf1

View File

@@ -10,6 +10,8 @@ import java.util.stream.Collectors;
import com.jeesite.modules.app.dao.file.FolderItem; import com.jeesite.modules.app.dao.file.FolderItem;
import com.jeesite.modules.app.utils.MyUtils; import com.jeesite.modules.app.utils.MyUtils;
import com.jeesite.modules.app.utils.vDate; import com.jeesite.modules.app.utils.vDate;
import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@@ -162,6 +164,7 @@ public class BizFoldersController extends BaseController {
@RequestMapping(value = "foldersAll") @RequestMapping(value = "foldersAll")
@ResponseBody @ResponseBody
public List<Map<String, Object>> foldersAll(BizFolders bizFolders) { public List<Map<String, Object>> foldersAll(BizFolders bizFolders) {
User user = UserUtils.getUser();
// 构建根节点 // 构建根节点
List<Map<String, Object>> treeData = new ArrayList<>(); List<Map<String, Object>> treeData = new ArrayList<>();
Map<String, Object> rootNode = new HashMap<>(); Map<String, Object> rootNode = new HashMap<>();
@@ -171,12 +174,13 @@ public class BizFoldersController extends BaseController {
// 1. 一次性查询所有未删除的文件夹 // 1. 一次性查询所有未删除的文件夹
BizFolders query = new BizFolders(); BizFolders query = new BizFolders();
query.setIsDeleted(0); query.setIsDeleted(0);
query.setLoginCode(user.getLoginCode());
List<BizFolders> allFolders = bizFoldersService.findList(query); List<BizFolders> allFolders = bizFoldersService.findList(query);
// 2. 按parentId分组构建映射Map // 2. 按parentId分组构建映射Map
Map<String, List<BizFolders>> folderMap = allFolders.stream() Map<String, List<BizFolders>> folderMap = allFolders.stream()
.collect(Collectors.groupingBy(BizFolders::getParentId, Collectors.toList())); .collect(Collectors.groupingBy(BizFolders::getParentId, Collectors.toList()));
// 3. 递归构建树形结构的核心逻辑(内部递归方法) // 3. 递归构建树形结构的核心逻辑(内部递归方法)
Function<String, List<Map<String, Object>>> buildTree = new Function<String, List<Map<String, Object>>>() { Function<String, List<Map<String, Object>>> buildTree = new Function<>() {
@Override @Override
public List<Map<String, Object>> apply(String parentId) { public List<Map<String, Object>> apply(String parentId) {
List<Map<String, Object>> nodeList = new ArrayList<>(); List<Map<String, Object>> nodeList = new ArrayList<>();
@@ -191,6 +195,7 @@ public class BizFoldersController extends BaseController {
} }
return nodeList; return nodeList;
} }
// 辅助方法根据folderId获取文件夹名称 // 辅助方法根据folderId获取文件夹名称
private String getFolderNameById(Map<String, List<BizFolders>> folderMap, String folderId) { private String getFolderNameById(Map<String, List<BizFolders>> folderMap, String folderId) {
for (List<BizFolders> folders : folderMap.values()) { for (List<BizFolders> folders : folderMap.values()) {
@@ -213,6 +218,7 @@ public class BizFoldersController extends BaseController {
@RequestMapping(value = "treeData") @RequestMapping(value = "treeData")
@ResponseBody @ResponseBody
public List<Map<String, Object>> treeFoldersData(BizFolders bizFolders) { public List<Map<String, Object>> treeFoldersData(BizFolders bizFolders) {
User user = UserUtils.getUser();
// 1. 构建根节点 // 1. 构建根节点
List<Map<String, Object>> treeData = new ArrayList<>(); List<Map<String, Object>> treeData = new ArrayList<>();
Map<String, Object> rootNode = new HashMap<>(); Map<String, Object> rootNode = new HashMap<>();
@@ -222,30 +228,28 @@ public class BizFoldersController extends BaseController {
// 2. 一次性查询所有未删除的文件夹仅1次数据库查询 // 2. 一次性查询所有未删除的文件夹仅1次数据库查询
BizFolders query = new BizFolders(); BizFolders query = new BizFolders();
query.setIsDeleted(0); query.setIsDeleted(0);
query.setLoginCode(user.getLoginCode());
List<BizFolders> allFolders = bizFoldersService.findList(query); List<BizFolders> allFolders = bizFoldersService.findList(query);
// 3. 按parentId分组快速查找子节点 // 3. 按parentId分组快速查找子节点
Map<String, List<BizFolders>> folderMap = allFolders.stream() Map<String, List<BizFolders>> folderMap = allFolders.stream()
.collect(Collectors.groupingBy(BizFolders::getParentId, Collectors.toList())); .collect(Collectors.groupingBy(BizFolders::getParentId, Collectors.toList()));
final List<java.util.function.BiFunction<String, Integer, List<Map<String, Object>>>> recursiveHolder = new ArrayList<>(); final List<java.util.function.BiFunction<String, Integer, List<Map<String, Object>>>> recursiveHolder = new ArrayList<>();
// 匿名内部类实现递归逻辑BiFunction入参parentId+level出参节点列表 // 匿名内部类实现递归逻辑BiFunction入参parentId+level出参节点列表
java.util.function.BiFunction<String, Integer, List<Map<String, Object>>> buildTree = new java.util.function.BiFunction<String, Integer, List<Map<String, Object>>>() { java.util.function.BiFunction<String, Integer, List<Map<String, Object>>> buildTree = (parentId, level) -> {
@Override List<Map<String, Object>> nodeList = new ArrayList<>();
public List<Map<String, Object>> apply(String parentId, Integer level) { // 空值保护获取当前父ID下的子文件夹
List<Map<String, Object>> nodeList = new ArrayList<>(); List<BizFolders> childFolders = folderMap.getOrDefault(parentId, new ArrayList<>());
// 空值保护获取当前父ID下的子文件夹 for (BizFolders folder : childFolders) {
List<BizFolders> childFolders = folderMap.getOrDefault(parentId, new ArrayList<>()); // 原业务逻辑四级节点特殊处理其他传false
for (BizFolders folder : childFolders) { boolean flag = level == 4 ? "add".equals(bizFolders.getDescription()) : false;
// 原业务逻辑四级节点特殊处理其他传false Map<String, Object> node = MyUtils.convertToTreeNode(folder, flag);
boolean flag = level == 4 ? "add".equals(bizFolders.getDescription()) : false; // 递归调用自身通过holder获取
Map<String, Object> node = MyUtils.convertToTreeNode(folder, flag); List<Map<String, Object>> children = recursiveHolder.get(0).apply(folder.getFolderId(), level + 1);
// 递归调用自身通过holder获取 // 无子节点时设为空列表(和原代码一致
List<Map<String, Object>> children = recursiveHolder.get(0).apply(folder.getFolderId(), level + 1); node.put("children", children.isEmpty() ? new ArrayList<>() : children);
// 无子节点时设为空列表(和原代码一致) nodeList.add(node);
node.put("children", children.isEmpty() ? new ArrayList<>() : children);
nodeList.add(node);
}
return nodeList;
} }
return nodeList;
}; };
// 将递归逻辑放入holder供内部调用 // 将递归逻辑放入holder供内部调用