From d3230d1506600933e4db64221f6431ce8e8766c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=B8=85?= <2944435683> Date: Sat, 4 Apr 2026 01:02:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4=E9=A1=B9?= =?UTF-8?q?=E7=9B=AEapi=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/project/delProject.ts | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/routes/project/delProject.ts b/src/routes/project/delProject.ts index 68ec155..40f2658 100644 --- a/src/routes/project/delProject.ts +++ b/src/routes/project/delProject.ts @@ -15,31 +15,43 @@ export default router.post( const { id } = req.body; //删除项目 await u.db("o_project").where("id", id).delete(); + await u.db("o_agentWorkData").where("projectId", id).delete(); + const novelData = await u.db("o_novel").where("projectId", id).select("id"); + const novelId = novelData.map((item: any) => item.id); + if (novelId.length > 0) { + await u.db("o_outlineNovel").whereIn("novelId", novelId).delete(); + } //删除项目下的原文 await u.db("o_novel").where("projectId", id).delete(); // 删除项目下的剧本信息 + const scriptData = await u.db("o_script").where("projectId", id).select("id"); + const scriptIds = scriptData.map((item: any) => item.id); + if (scriptIds.length > 0) { + await u.db("o_scriptAssets").whereIn("scriptId", scriptIds).delete(); + } await u.db("o_script").where("projectId", id).delete(); await u.db("o_outline").where("projectId", id).delete(); // 删除项目下的任务 await u.db("o_tasks").where("projectId", id).delete(); // 删除项目下的分镜 + const storyboardData = await u.db("o_storyboard").where("projectId", id).select("id"); + const storyboardIds = storyboardData.map((item: any) => item.id); + if (storyboardIds.length > 0) { + await u.db("o_assets2Storyboard").whereIn("storyboardId", storyboardIds).delete(); + } await u.db("o_storyboard").where("projectId", id).delete(); - // 删除项目下的资产 - await u.db("o_assets").where("projectId", id).delete(); //删除需要删除资产的归属图片 const assetsData = await u.db("o_assets").where("projectId", id).select("id"); const assetsIds = assetsData.map((item: any) => item.id); if (assetsIds.length > 0) { - await u.db("o_image").orWhereIn("assetsId", assetsIds).delete(); - } - //删除项目下的视频 - const videoData = await u.db("o_video").where("projectId", id).select("id"); - const videoIds = videoData.map((item: any) => item.id); - if (videoIds.length > 0) { - await u.db("o_videoTrack").whereIn("videoId", videoIds).update({ - videoId: null, - }); + // 先将 o_assets.imageId 置空,解除对 o_image 的外键引用 + await u.db("o_assets").whereIn("id", assetsIds).update({ imageId: null }); + await u.db("o_image").whereIn("assetsId", assetsIds).delete(); } + // 删除项目下的资产 + await u.db("o_assets").where("projectId", id).delete(); + //删除项目下的视频轨道和视频 + await u.db("o_videoTrack").where("projectId", id).delete(); await u.db("o_video").where("projectId", id).delete(); //删除项目下的资源 try {