Compare commits
2 Commits
338fbee1ff
...
87ea4e16fc
Author | SHA1 | Date | |
---|---|---|---|
![]() |
87ea4e16fc | ||
![]() |
b7a056d08b |
@ -19,4 +19,7 @@ public interface FilesMapper extends BaseMapper<Files> {
|
||||
int batchInsertFiles(List<Files> filesList);
|
||||
|
||||
int updateNodeIdByPathHierarchy(@Param("id") String id);
|
||||
|
||||
//根据节点删除文件(递归子节点文件)
|
||||
int deleteByNodeId(@Param("nodeId")String nodeId);
|
||||
}
|
||||
|
@ -18,4 +18,6 @@ public interface NodesMapper extends BaseMapper<Nodes> {
|
||||
int batchInsertIgnore(List<Nodes> nodesList);
|
||||
|
||||
int updateParentIdByPathHierarchy();
|
||||
|
||||
int deleteNodesRecursively(String nodeId);
|
||||
}
|
||||
|
@ -545,26 +545,30 @@ public class NodesServiceImpl extends ServiceImpl<NodesMapper, Nodes> implements
|
||||
if (nodes == null) {
|
||||
return false; // 节点不存在
|
||||
}
|
||||
//递归获取当前节点和它下面的所有节点
|
||||
List<Nodes> nodesList = selectChildrenNodes(id, nodes.getProjectId());
|
||||
// 提取所有节点的 ID
|
||||
List<String> nodeIds = nodesList.stream()
|
||||
.map(Nodes::getId) // 获取每个节点的 ID
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 执行批量删除节点操作
|
||||
if (!nodeIds.isEmpty()) {
|
||||
QueryWrapper<Nodes> deleteWrapper = new QueryWrapper<>();
|
||||
deleteWrapper.in("id", nodeIds); // 根据节点 ID 批量删除
|
||||
nodesMapper.delete(deleteWrapper);
|
||||
}
|
||||
//执行批量删除文件操作
|
||||
if (!nodeIds.isEmpty()) {
|
||||
QueryWrapper<Files> deleteWrapper = new QueryWrapper<>();
|
||||
deleteWrapper.in("node_id", nodeIds); // 根据节点 ID 批量删除
|
||||
deleteWrapper.eq("project_id", nodes.getProjectId());
|
||||
filesMapper.delete(deleteWrapper);
|
||||
}
|
||||
// //递归获取当前节点和它下面的所有节点
|
||||
// List<Nodes> nodesList = selectChildrenNodes(id, nodes.getProjectId());
|
||||
// // 提取所有节点的 ID
|
||||
// List<String> nodeIds = nodesList.stream()
|
||||
// .map(Nodes::getId) // 获取每个节点的 ID
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// // 执行批量删除节点操作
|
||||
// if (!nodeIds.isEmpty()) {
|
||||
// QueryWrapper<Nodes> deleteWrapper = new QueryWrapper<>();
|
||||
// deleteWrapper.in("id", nodeIds); // 根据节点 ID 批量删除
|
||||
// nodesMapper.delete(deleteWrapper);
|
||||
// }
|
||||
// //执行批量删除文件操作
|
||||
// if (!nodeIds.isEmpty()) {
|
||||
// QueryWrapper<Files> 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<BatchDeleteRequest.DeleteItem> deleteItemList = new ArrayList<>();
|
||||
|
@ -24,4 +24,17 @@
|
||||
AND a.project_id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteByNodeId">
|
||||
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)
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
@ -24,4 +24,17 @@
|
||||
b.id IS NOT NULL
|
||||
</update>
|
||||
|
||||
<delete id="deleteNodesRecursively">
|
||||
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)
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
Loading…
Reference in New Issue
Block a user