Browse Source

新增 删除清空分镜同时清除(cos/tos)

tsurumure 1 tháng trước cách đây
mục cha
commit
2a21f67fea

+ 22 - 6
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectStoryboardServiceImpl.java

@@ -172,13 +172,16 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
 
         // [DB] 查询分镜
         List<CrtDramaProjectStoryboard> storyboardList = crtDramaProjectStoryboardDao.selectList(wrapper);
-        if (storyboardList == null || storyboardList.size() == 0) throw new CustException("分镜不存在");
-        CrtDramaProjectStoryboard storyboardDetail = storyboardList.get(0);
+        if (storyboardList == null || storyboardList.isEmpty()) throw new CustException("分镜不存在");
+
+        // 删除或清空全部,需要有项目的所有者权限
+        CrtDramaProject dramaProjectDetail = crtDramaProjectDao.selectById(drama_project_id);
+        if (dramaProjectDetail == null) throw new CustException("项目不存在");
 
         // 是否 [分镜] 拥有者,权限:
         // - 编辑自己的 (需 36.2.6.1 权限)
         // - 编辑自己及他人的 (需要 36.2.6 权限或超级管理员)
-        Boolean isOwner = storyboardDetail.getUser_id() == SecurityUtil.getUserId();
+        Boolean isOwner = dramaProjectDetail.getUser_id() == SecurityUtil.getUserId();
         if (isOwner && !securityUtil.hasPermissions(Arrays.asList("36.2.6", "36.2.6.1"), MatchType.OR)) {
             throw new CustException(SecurityEnum.NOAUTH);
         }
@@ -189,6 +192,12 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
 
         // [DB] 清空当前分集的所有分镜
         crtDramaProjectStoryboardDao.delete(wrapper);
+
+        // [DB/OBJ] 删除分镜下的生图内容 (批量删除 cos/tos)
+        storyboardList.forEach(storyboard -> {
+            deleteStoryboardImage(storyboard.getDrama_project_storyboard_id());
+        });
+
     }
 
     /**
@@ -265,7 +274,16 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
         // [DB] 删除分镜
         crtDramaProjectStoryboardDao.deleteById(drama_project_storyboard_id);
 
-        // 同时删除分镜下的生图内容 (批量删除 cos/tos)
+        // [DB/OBJ] 删除分镜下的生图内容 (批量删除 cos/tos)
+        deleteStoryboardImage(drama_project_storyboard_id);
+
+        return Map.of("drama_project_storyboard_id", drama_project_storyboard_id);
+    }
+
+    /**
+     * [DB/OBJ] 删除分镜下的生图内容 (批量删除 cos/tos)
+     */
+    private void deleteStoryboardImage(Long drama_project_storyboard_id) {
         LambdaQueryWrapper<CrtGenerateImage> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CrtGenerateImage::getDrama_project_storyboard_id, drama_project_storyboard_id);
         List<CrtGenerateImage> generateImageList = crtGenerateImageDao.selectList(wrapper);
@@ -288,8 +306,6 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
             });
 
         }
-
-        return Map.of("drama_project_storyboard_id", drama_project_storyboard_id);
     }
 
 }