diff --git a/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/FilesMapper.java b/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/FilesMapper.java index 40f9727..101e893 100644 --- a/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/FilesMapper.java +++ b/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/FilesMapper.java @@ -19,4 +19,7 @@ public interface FilesMapper extends BaseMapper { int batchInsertFiles(List filesList); int updateNodeIdByPathHierarchy(@Param("id") String id); + + //根据节点删除文件(递归子节点文件) + int deleteByNodeId(@Param("nodeId")String nodeId); } diff --git a/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/NodesMapper.java b/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/NodesMapper.java index 1c2d7f8..704dee1 100644 --- a/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/NodesMapper.java +++ b/java/src/main/java/com/yfd/platform/modules/specialDocument/mapper/NodesMapper.java @@ -18,4 +18,6 @@ public interface NodesMapper extends BaseMapper { int batchInsertIgnore(List nodesList); int updateParentIdByPathHierarchy(); + + int deleteNodesRecursively(String nodeId); } diff --git a/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java b/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java index 729ed8c..b900dbb 100644 --- a/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java +++ b/java/src/main/java/com/yfd/platform/modules/specialDocument/service/impl/NodesServiceImpl.java @@ -545,26 +545,30 @@ public class NodesServiceImpl extends ServiceImpl implements if (nodes == null) { return false; // 节点不存在 } - //递归获取当前节点和它下面的所有节点 - List nodesList = selectChildrenNodes(id, nodes.getProjectId()); - // 提取所有节点的 ID - List nodeIds = nodesList.stream() - .map(Nodes::getId) // 获取每个节点的 ID - .collect(Collectors.toList()); - - // 执行批量删除节点操作 - if (!nodeIds.isEmpty()) { - QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.in("id", nodeIds); // 根据节点 ID 批量删除 - nodesMapper.delete(deleteWrapper); - } - //执行批量删除文件操作 - if (!nodeIds.isEmpty()) { - QueryWrapper deleteWrapper = new QueryWrapper<>(); - deleteWrapper.in("node_id", nodeIds); // 根据节点 ID 批量删除 - deleteWrapper.eq("project_id", nodes.getProjectId()); - filesMapper.delete(deleteWrapper); - } +// //递归获取当前节点和它下面的所有节点 +// List nodesList = selectChildrenNodes(id, nodes.getProjectId()); +// // 提取所有节点的 ID +// List nodeIds = nodesList.stream() +// .map(Nodes::getId) // 获取每个节点的 ID +// .collect(Collectors.toList()); +// +// // 执行批量删除节点操作 +// if (!nodeIds.isEmpty()) { +// QueryWrapper deleteWrapper = new QueryWrapper<>(); +// deleteWrapper.in("id", nodeIds); // 根据节点 ID 批量删除 +// nodesMapper.delete(deleteWrapper); +// } +// //执行批量删除文件操作 +// if (!nodeIds.isEmpty()) { +// QueryWrapper deleteWrapper = new QueryWrapper<>(); +// deleteWrapper.in("node_id", nodeIds); // 根据节点 ID 批量删除 +// deleteWrapper.eq("project_id", nodes.getProjectId()); +// filesMapper.delete(deleteWrapper); +// } + //递归删除节点 + nodesMapper.deleteNodesRecursively(id); + //递归删除文件 + filesMapper.deleteByNodeId(id); // 删除 sdlocal 中的文件夹 List deleteItemList = new ArrayList<>(); diff --git a/java/src/main/resources/mapper/specialDocument/FilesMapper.xml b/java/src/main/resources/mapper/specialDocument/FilesMapper.xml index ff8dff8..2b46a12 100644 --- a/java/src/main/resources/mapper/specialDocument/FilesMapper.xml +++ b/java/src/main/resources/mapper/specialDocument/FilesMapper.xml @@ -24,4 +24,17 @@ AND a.project_id = #{id} + + WITH RECURSIVE node_tree AS ( + SELECT id + FROM sd_nodes + WHERE id = #{nodeId} + UNION ALL + SELECT n.id + FROM sd_nodes n + INNER JOIN node_tree t ON n.parent_id = t.id + ) + DELETE FROM sd_files WHERE node_id IN (SELECT id FROM node_tree) + + diff --git a/java/src/main/resources/mapper/specialDocument/NodesMapper.xml b/java/src/main/resources/mapper/specialDocument/NodesMapper.xml index 81fe051..463e51d 100644 --- a/java/src/main/resources/mapper/specialDocument/NodesMapper.xml +++ b/java/src/main/resources/mapper/specialDocument/NodesMapper.xml @@ -24,4 +24,17 @@ b.id IS NOT NULL + + WITH RECURSIVE node_tree AS ( + SELECT id + FROM sd_nodes + WHERE id = #{nodeId} + UNION ALL + SELECT n.id + FROM sd_nodes n + INNER JOIN node_tree t ON n.parent_id = t.id + ) + DELETE FROM sd_nodes WHERE id IN (SELECT id FROM node_tree) + +