Prechádzať zdrojové kódy

调整项目/分集/分镜列表

tsurumure 2 mesiacov pred
rodič
commit
959428493f

+ 4 - 4
src/main/java/com/backendsys/modules/crt/controller/CrtDramaProjectStoryboardController.java

@@ -30,12 +30,12 @@ public class CrtDramaProjectStoryboardController {
         return Result.success().put("data", crtDramaProjectStoryboardService.selectCrtDramaProjectStoryboardDetail(crtDramaProjectStoryboard));
     }
 
-    @Operation(summary = "创建分集")
+    @Operation(summary = "创建分集/分镜")
     @PreAuthorize("@sr.hasPermission('36.2.2')")
     @PostMapping("/api/crt/drama/initStoryboard")
-    public Result initStoryboard(@Validated(CrtDramaProject.InitStoryboard.class) @RequestBody CrtDramaProject crtDramaProject) {
-        crtDramaProject.setUser_id(SecurityUtil.getUserId());
-        return Result.success().put("data", crtDramaProjectStoryboardService.createStoryboard(crtDramaProject));
+    public Result initStoryboard(@Validated(CrtDramaProject.InitStoryboard.class) @RequestBody CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
+        crtDramaProjectStoryboard.setUser_id(SecurityUtil.getUserId());
+        return Result.success().put("data", crtDramaProjectStoryboardService.createStoryboard(crtDramaProjectStoryboard));
     }
 
     @Operation(summary = "编辑分镜")

+ 2 - 1
src/main/java/com/backendsys/modules/crt/entity/CrtDramaProjectStoryboard.java

@@ -24,13 +24,14 @@ public class CrtDramaProjectStoryboard {
     public static interface StoryboardDetail{}
     public static interface Create{}
     public static interface Update{}
+    public static interface Clear{}
     public static interface Delete{}
 
     @TableId(type = IdType.AUTO)
     private Long id;
 
     @TableField(exist = false)
-    @NotNull(message = "分镜ID不能为空", groups = { Update.class })
+    @NotNull(message = "分镜ID不能为空", groups = { Update.class, Clear.class, Delete.class })
     private Long drama_project_storyboard_id;
 
     private Long user_id;

+ 7 - 2
src/main/java/com/backendsys/modules/crt/service/CrtDramaProjectStoryboardService.java

@@ -13,10 +13,15 @@ public interface CrtDramaProjectStoryboardService {
     // 获取分集信息/分镜列表
     StoryboardResponse selectCrtDramaProjectStoryboardDetail(CrtDramaProjectStoryboard crtDramaProjectStoryboard);
 
-    // 创建分集
-    Map<String, Object> createStoryboard(CrtDramaProject crtDramaProject);
+    // 创建分集/分镜
+    Map<String, Object> createStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard);
 
     // 编辑分镜
     Map<String, Object> updateStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard);
 
+    // 清空分镜
+    Map<String, Object> clearStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard);
+
+    // 删除分集
+    Map<String, Object> deleteStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard);
 }

+ 39 - 8
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectStoryboardServiceImpl.java

@@ -83,11 +83,12 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
      * 创建分集
      */
     @Override
-    public Map<String, Object> createStoryboard(CrtDramaProject crtDramaProject) {
+    public Map<String, Object> createStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
 
-        Long user_id = crtDramaProject.getUser_id();
-        Long drama_project_id = crtDramaProject.getDrama_project_id();
-        Integer episode_num = crtDramaProject.getEpisode_num();
+        Long user_id = crtDramaProjectStoryboard.getUser_id();
+        Long drama_project_id = crtDramaProjectStoryboard.getDrama_project_id();
+        Integer episode_num = crtDramaProjectStoryboard.getEpisode_num();
+        Integer sort = crtDramaProjectStoryboard.getSort() == null ? 1 : crtDramaProjectStoryboard.getSort();
 
         // 判断 项目 是否存在
         LambdaQueryWrapper<CrtDramaProject> wrapperDramaProject = new LambdaQueryWrapper<>();
@@ -95,19 +96,25 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
         Boolean is_exist_project = crtDramaProjectDao.exists(wrapperDramaProject);
         if (!is_exist_project) throw new CustException("项目不存在");
 
-        // 判断 (项目ID + 集数) 是否存在,如果存在则不能创建
+        // 不传 { sort } 即是初始化,初始化需要判断分镜是否存在
         LambdaQueryWrapper<CrtDramaProjectStoryboard> wrapperStoryboard = new LambdaQueryWrapper<>();
         wrapperStoryboard.eq(CrtDramaProjectStoryboard::getDrama_project_id, drama_project_id);
         wrapperStoryboard.eq(CrtDramaProjectStoryboard::getEpisode_num, episode_num);
-        Boolean is_exist_storyboard = crtDramaProjectStoryboardDao.exists(wrapperStoryboard);
-        if (is_exist_storyboard) throw new CustException("该项目集数已存在,请勿重复创建");
+        if (sort == null) {
+            Boolean is_exist_storyboard = crtDramaProjectStoryboardDao.exists(wrapperStoryboard);
+            if (is_exist_storyboard) throw new CustException("该项目集数已存在,请勿重复创建");
+        } else {
+            wrapperStoryboard.eq(CrtDramaProjectStoryboard::getSort, sort);
+            Boolean is_exist_storyboard = crtDramaProjectStoryboardDao.exists(wrapperStoryboard);
+            if (is_exist_storyboard) throw new CustException("该项目集数已存在,请勿重复创建");
+        }
 
         // [DB] 创建分镜
         CrtDramaProjectStoryboard entity = new CrtDramaProjectStoryboard();
         entity.setUser_id(user_id);
         entity.setDrama_project_id(drama_project_id);
         entity.setEpisode_num(episode_num);
-        entity.setSort(1);
+        entity.setSort(sort);
         crtDramaProjectStoryboardDao.insert(entity);
 
         return Map.of("id", entity.getId());
@@ -142,4 +149,28 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
         return Map.of("drama_project_storyboard_id", crtDramaProjectStoryboard.getDrama_project_storyboard_id());
     }
 
+
+    /**
+     * 清空分镜
+     */
+    public Map<String, Object> clearStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
+
+        Long drama_project_id = crtDramaProjectStoryboard.getDrama_project_id();
+        Long drama_project_storyboard_id = crtDramaProjectStoryboard.getDrama_project_storyboard_id();
+
+//        // [DB] 清空分镜
+//        LambdaQueryWrapper<CrtDramaProjectStoryboard> wrapper = new LambdaQueryWrapper<>();
+//        wrapper.eq(CrtDramaProjectStoryboard::getDrama_project_id, drama_project_id);
+
+
+        return Map.of("drama_project_storyboard_id", crtDramaProjectStoryboard.getDrama_project_storyboard_id());
+    }
+
+    /**
+     * 删除分集
+     */
+    public Map<String, Object> deleteStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
+        return Map.of("drama_project_storyboard_id", crtDramaProjectStoryboard.getDrama_project_storyboard_id());
+    }
+
 }

+ 1 - 1
src/main/resources/mapper/crt/drama/CrtDramaProjectDao.xml

@@ -32,7 +32,7 @@
     <select id="selectCrtDramaProjectList" resultMap="resultMapCrtDramaProject">
         SELECT
             <include refid="includeCrtDramaProject" />,
-            GROUP_CONCAT(ps.episode_num ORDER BY ps.episode_num) AS storyboard_episode_nums
+            GROUP_CONCAT(DISTINCT ps.episode_num ORDER BY ps.episode_num) AS storyboard_episode_nums
         FROM crt_drama_project p
         LEFT JOIN crt_drama_project_storyboard ps ON p.id = ps.drama_project_id
         <where>