Переглянути джерело

Merge branch 'dev-yhq' into develop

tsurumure 2 місяців тому
батько
коміт
491aadc621

+ 2 - 2
db/crt_drama_project_settings.sql

@@ -13,7 +13,7 @@ CREATE TABLE `crt_drama_project_settings` (
     `aspect_ratio` VARCHAR(10) COMMENT '画面比例 (枚举)(16:9 - 1280*720, 9:16 - 720*1280, 1:1 - 1024*1024)',
     `model_id` BIGINT COMMENT '基础模型ID (固定值接口)(1: F.1-dev.safetensors)',
     `lora_style_id` BIGINT COMMENT '风格LoRA ID',
-    `lora_style_strength` FLOAT COMMENT '风格强度 (默认值:1,范围:0~2.0,保留小数点后一位)',
+    `lora_style_strength` FLOAT DEFAULT '1' COMMENT '风格强度 (默认值:1,范围:0~2.0,保留小数点后一位)',
     INDEX `idx_model_id` (`model_id`),
     INDEX `idx_lora_style_id` (`lora_style_id`),
     INDEX `idx_drama_project_id` (`drama_project_id`)
@@ -26,5 +26,5 @@ CREATE TABLE `crt_drama_project_settings` (
 
 INSERT INTO crt_drama_project_settings(drama_project_id, drama_project_setting_type, aspect_ratio, model_id, lora_style_id, lora_style_strength) VALUES
     (1, 1, '16:9', 1, 1, 1),
-    (1, 2, '16:9', null, null, null)
+    (1, 2, '16:9', null, null, 1)
 ;

+ 6 - 6
db/crt_drama_project_storyboard.sql

@@ -14,23 +14,23 @@ CREATE TABLE `crt_drama_project_storyboard` (
     `episode_num` INT NOT NULL COMMENT '集数 (不超过999集)',
     `sort` INT NOT NULL COMMENT '排序',
 
-    `story_prompt` VARCHAR(500) COMMENT '分镜设计',
-    `story_framing` VARCHAR(500) COMMENT '景别',
-    `story_scene` VARCHAR(500) COMMENT '场景',
+    `story_prompt` VARCHAR(1000) COMMENT '分镜设计',
+    `story_framing` VARCHAR(1000) COMMENT '景别',
+    `story_scene` VARCHAR(1000) COMMENT '场景',
     `story_weather_time` VARCHAR(500) COMMENT '天气/时间',
     `lora_figure_ids` VARCHAR(255) COMMENT '人物LoRA ID (创建时,跟随项目的人物LoRAID)(多个人物ID以逗号分隔)',
 
     `param_image_count` INT DEFAULT '1' COMMENT '每次生成图片数量 (默认值:1,整数范围:1~4)',
     `param_prompt_weight` FLOAT DEFAULT '3.5' COMMENT '提示词引导系数 (默认值:3.5,小数点后一位,范围:1~30)',
-    `param_sampling_method` VARCHAR(255) DEFAULT 'Euler' COMMENT '采样方法 (枚举)(Euler: euler, DPM++2M: dpmpp_2m)',
+    `param_sampling_method` VARCHAR(20) DEFAULT 'Euler' COMMENT '采样方法 (枚举)(Euler: euler, DPM++2M: dpmpp_2m)',
     `param_step_count` INT DEFAULT '20' COMMENT '步数 (默认值:20,整数范围:1~30)',
     `param_random_seed` TINYINT DEFAULT '1' COMMENT '随机种子 (默认值:1,范围:(1:随机, 2:自定义))',
     `param_random_seed_custom` VARCHAR(255) COMMENT '随机种子自定义值 (长度: 0~64位整数)',
-    `text_to_image_prompt` VARCHAR(1000) COMMENT '文生图提示词 (生图时必填)',
+    `text_to_image_prompt` VARCHAR(2000) COMMENT '文生图提示词 (生图时必填)',
 
     `param_video_reference_type` TINYINT DEFAULT '1' COMMENT '生视频模式 (1:首尾帧模式, 2:多图参考模式)',
     `param_video_reference_images` TEXT COMMENT '参考图 (1~4张)(多图以逗号分隔)',
-    `image_to_video_prompt` VARCHAR(1000) COMMENT '图生视频提示词 (生视频时必填)',
+    `image_to_video_prompt` VARCHAR(2000) COMMENT '图生视频提示词 (生视频时必填)',
 
     `generate_image_status` TINYINT DEFAULT '-1' COMMENT '生图状态 (-1:未生图, 1:生成中, 2:已生图)',
     `generate_video_status` TINYINT DEFAULT '-1' COMMENT '生视频状态 (-1:未生视频, 1:生成中, 2:已生视频)',

+ 1 - 0
db/sys_user_role_permission.sql

@@ -50,6 +50,7 @@ INSERT INTO sys_user_role_permission(id, parent_id, permission_name, sort) VALUE
         ('36.2', '36', 'AI短剧创作-分镜管理', null),
             ('36.2.1', '36.2', 'AI短剧创作-分镜列表', null),
             ('36.2.2', '36.2', 'AI短剧创作-创建分镜', null),
+            ('36.2.3', '36.2', 'AI短剧创作-编辑分镜配置', null),
 
 
 

+ 1 - 1
db/sys_user_role_permission_relation.sql

@@ -108,7 +108,7 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
             (1, '36.1.5'), (1, '36.1.5.1'),
             (1, '36.1.6'), (1, '36.1.6.1'),
         (1, '36.2'),
-            (1, '36.2.1'), (1, '36.2.2'),
+            (1, '36.2.1'), (1, '36.2.2'), (1, '36.2.3'),
 
 
 

+ 6 - 6
src/main/java/com/backendsys/modules/crt/controller/CrtDramaProjectController.java

@@ -1,8 +1,5 @@
 package com.backendsys.modules.crt.controller;
 
-import cn.hutool.core.util.ObjectUtil;
-import com.backendsys.exception.CustException;
-import com.backendsys.modules.common.config.security.enums.SecurityEnum;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.crt.entity.CrtDramaProject;
@@ -19,12 +16,9 @@ import org.springframework.web.bind.annotation.*;
 @Tag(name = "短剧创作-项目管理")
 public class CrtDramaProjectController {
 
-    @Autowired
-    private SecurityUtil securityUtil;
     @Autowired
     private CrtDramaProjectService crtDramaProjectService;
 
-
     @Operation(summary = "获取短剧创作-项目列表 (全权限)")
     @PreAuthorize("@sr.hasPermission('36.1.1')")
     @GetMapping("/api/crt/drama/getDramaProjectAllList")
@@ -56,4 +50,10 @@ public class CrtDramaProjectController {
         return Result.success().put("data", crtDramaProjectService.updateCrtDramaProject(crtDramaProject));
     }
 
+    @Operation(summary = "获取短剧创作-删除项目")
+    @DeleteMapping("/api/crt/drama/deleteDramaProject")
+    public Result deleteDramaProject(@Validated(CrtDramaProject.Delete.class) @RequestBody CrtDramaProject crtDramaProject) {
+        return Result.success().put("data", crtDramaProjectService.deleteCrtDramaProject(crtDramaProject));
+    }
+
 }

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

@@ -3,6 +3,7 @@ package com.backendsys.modules.crt.controller;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.crt.entity.CrtDramaProject;
+import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
 import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
 import com.backendsys.modules.crt.service.CrtDramaProjectService;
 import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
@@ -11,10 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @Validated
 @RestController
@@ -32,7 +30,6 @@ public class CrtDramaProjectStoryboardController {
         return Result.success().put("data", crtDramaProjectStoryboardService.selectCrtDramaProjectStoryboardDetail(crtDramaProjectStoryboard));
     }
 
-    // { drama_project_id }
     @Operation(summary = "创建分镜")
     @PreAuthorize("@sr.hasPermission('36.2.2')")
     @PostMapping("/api/crt/drama/createStoryboard")
@@ -41,20 +38,15 @@ public class CrtDramaProjectStoryboardController {
         return Result.success().put("data", crtDramaProjectStoryboardService.createStoryboard(crtDramaProject));
     }
 
+    @Operation(summary = "编辑分镜配置")
+    @PreAuthorize("@sr.hasPermission('36.2.3')")
+    @PutMapping("/api/crt/drama/updateStoryboardSettings")
+    public Result updateStoryboardSettings(@Validated(CrtDramaProjectSettings.UpdateSettings.class) @RequestBody CrtDramaProjectSettings crtDramaProjectSettings) {
+        return Result.success().put("data", crtDramaProjectStoryboardService.updateStoryboardSettings(crtDramaProjectSettings));
+    }
+
+
+
 
-//    @Operation(summary = "获取短剧创作-项目列表 (全权限)")
-//    @PreAuthorize("@sr.hasPermission('36.1.1')")
-//    @GetMapping("/api/crt/drama/getDramaProjectAllList")
-//    public Result getDramaProjectAllList(@Validated CrtDramaProject crtDramaProject) {
-//        return Result.success().put("data", crtDramaProjectService.selectCrtDramaProjectList(crtDramaProject));
-//    }
-//
-//    @Operation(summary = "获取短剧创作-项目列表 (我的)")
-//    @PreAuthorize("@sr.hasPermissions(T(java.util.Arrays).asList('36.1.1', '36.1.2'), T(com.backendsys.modules.common.enums.MatchType).OR)")
-//    @GetMapping("/api/crt/drama/getDramaProjectList")
-//    public Result getDramaProjectList(@Validated CrtDramaProject crtDramaProject) {
-//        crtDramaProject.setUser_id(SecurityUtil.getUserId());
-//        return Result.success().put("data", crtDramaProjectService.selectCrtDramaProjectList(crtDramaProject));
-//    }
 
 }

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

@@ -26,7 +26,7 @@ public class CrtDramaProject {
     private Long id;
 
     @TableField(exist = false)
-    @NotNull(message = "项目ID不能为空", groups = { CreateStoryboard.class, Update.class })
+    @NotNull(message = "项目ID不能为空", groups = { CreateStoryboard.class, Update.class, Delete.class })
     private Long drama_project_id;
 
     private Long user_id;

+ 19 - 2
src/main/java/com/backendsys/modules/crt/entity/CrtDramaProjectSettings.java

@@ -1,23 +1,40 @@
 package com.backendsys.modules.crt.entity;
 
+import com.backendsys.entity.validator.RangeArray;
+import com.backendsys.entity.validator.RangeStringArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
+import javax.validation.constraints.Min;
 import java.math.BigDecimal;
 
 @Data
 @TableName("crt_drama_project_settings")
 public class CrtDramaProjectSettings {
 
+    public static interface UpdateSettings{}
+
     @TableId(type = IdType.AUTO)
     private Long id;
+
+    @NotNull(message = "项目ID不能空", groups = { UpdateSettings.class })
     private Long drama_project_id;
+    @NotNull(message = "项目配置类型不能空", groups = { UpdateSettings.class })
+    @RangeArray(message="项目配置类型取值有误,范围应是(1:生图配置, 2:生视频配置)", value = {"1", "2"}, groups = { UpdateSettings.class })
     private Integer drama_project_setting_type;
+
+    @NotNull(message = "画面比例不能空", groups = { UpdateSettings.class })
+    @RangeStringArray(message="画面比例取值有误,范围应是(16:9, 9:16, 1:1)", value = {"16:9", "9:16", "1:1"}, groups = { UpdateSettings.class })
     private String aspect_ratio;
+
     private Long model_id;
-    private Long lora_style_id;
-    private Float lora_style_strength;
+    private Long lora_style_id;             // 风格LoRA ID
+    @Min(value = 0, message = "风格强度取值范围应在 0-2 之间 (保留小数点后一位)", groups = { UpdateSettings.class })
+    @Max(value = 2, message = "风格强度取值范围应在 0-2 之间 (保留小数点后一位)", groups = { UpdateSettings.class })
+    private Float lora_style_strength;      // 风格强度
 
 }

+ 1 - 0
src/main/java/com/backendsys/modules/crt/entity/StoryboardResponse.java

@@ -7,6 +7,7 @@ import java.util.List;
 @Data
 public class StoryboardResponse {
 
+    private Long drama_project_id;
     private String project_name;                                // 项目名称
     private List<CrtDramaProjectStoryboard> storyboard_list;    // 分镜列表
     private CrtDramaProjectSettings settings_image;             // 图片设置

+ 4 - 0
src/main/java/com/backendsys/modules/crt/service/CrtDramaProjectStoryboardService.java

@@ -2,6 +2,7 @@ package com.backendsys.modules.crt.service;
 
 
 import com.backendsys.modules.crt.entity.CrtDramaProject;
+import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
 import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
 import com.backendsys.modules.crt.entity.StoryboardResponse;
 
@@ -15,4 +16,7 @@ public interface CrtDramaProjectStoryboardService {
     // 创建分镜
     Map<String, Object> createStoryboard(CrtDramaProject crtDramaProject);
 
+    // 编辑分镜配置
+    Map<String, Object> updateStoryboardSettings(CrtDramaProjectSettings crtDramaProjectSettings);
+
 }

+ 24 - 31
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectServiceImpl.java

@@ -1,17 +1,15 @@
 package com.backendsys.modules.crt.service.impl;
 
-import cn.hutool.core.util.ObjectUtil;
-import com.backendsys.exception.CustException;
-import com.backendsys.modules.cms.article.entity.ArticleCategory;
-import com.backendsys.modules.common.config.security.enums.SecurityEnum;
-import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.crt.dao.CrtDramaProjectDao;
 import com.backendsys.modules.crt.dao.CrtDramaProjectSettingsDao;
+import com.backendsys.modules.crt.dao.CrtDramaProjectStoryboardDao;
 import com.backendsys.modules.crt.entity.CrtDramaProject;
 import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
+import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
 import com.backendsys.modules.crt.enums.AspectRatioEnums;
 import com.backendsys.modules.crt.enums.ProjectSettingTypeEnums;
 import com.backendsys.modules.crt.service.CrtDramaProjectService;
+import com.backendsys.modules.crt.utils.CrtUtil;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
@@ -27,11 +25,13 @@ import java.util.Map;
 public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
 
     @Autowired
-    private SecurityUtil securityUtil;
+    private CrtUtil crtUtil;
     @Autowired
     private CrtDramaProjectDao crtDramaProjectDao;
     @Autowired
     private CrtDramaProjectSettingsDao crtDramaProjectSettingsDao;
+    @Autowired
+    private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
 
     // 获取短剧创作-项目列表
     @Override
@@ -65,10 +65,10 @@ public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
         CrtDramaProjectSettings settings_video = new CrtDramaProjectSettings();
         settings_video.setDrama_project_id(project_id);
         settings_video.setDrama_project_setting_type(ProjectSettingTypeEnums.GENERATE_VIDEO.getKey());   // 项目配置类型
-        settings_image.setAspect_ratio(AspectRatioEnums.RATIO_16_9.getKey());                            // 画面比例
+        settings_video.setAspect_ratio(AspectRatioEnums.RATIO_16_9.getKey());                            // 画面比例
         crtDramaProjectSettingsDao.insert(settings_video);
 
-        return Map.of("project_id", project_id);
+        return Map.of("drama_project_id", project_id);
     }
 
     /**
@@ -77,29 +77,13 @@ public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
     @Override
     public Map<String, Object> updateCrtDramaProject(CrtDramaProject crtDramaProject) {
 
-        CrtDramaProject detail = crtDramaProjectDao.selectById(crtDramaProject.getDrama_project_id());
-        if (detail == null)  throw new CustException("项目不存在");
-
-        Long user_id = detail.getUser_id();
-        System.out.println("项目user_id: " + user_id + ", 当前user_id: " + SecurityUtil.getUserId());
-
-        // 编辑他人的用户信息
-        // - 编辑自己 (无需权限)
-        // - 编辑他人 (需要子权限或超级管理员)
-        if (user_id != SecurityUtil.getUserId() && !securityUtil.hasPermission("36.1.4")) {
-            throw new CustException(SecurityEnum.NOAUTH);
-        }
-
-        crtDramaProject.setId(crtDramaProject.getDrama_project_id());
-
-        System.out.println(crtDramaProject);
-
-        crtDramaProjectDao.updateById(crtDramaProject);
-        return Map.of("project_id", crtDramaProject.getDrama_project_id());
-
-
-
+        // 判断项目是否存在,并且是否具备操作权限
+        crtUtil.checkProject(crtDramaProject.getDrama_project_id(), "36.1.4");
 
+        // [DB] 更新项目
+        crtDramaProjectDao.update(crtDramaProject, new LambdaQueryWrapper<CrtDramaProject>()
+                .eq(CrtDramaProject::getId, crtDramaProject.getDrama_project_id()));
+        return Map.of("drama_project_id", crtDramaProject.getDrama_project_id());
 
     }
 
@@ -110,9 +94,18 @@ public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
     @Transactional(rollbackFor = Exception.class)
     public Map<String, Object> deleteCrtDramaProject(CrtDramaProject crtDramaProject) {
 
+        // 判断项目是否存在,并且是否具备操作权限
+        crtUtil.checkProject(crtDramaProject.getDrama_project_id(), "36.1.6");
 
+        // [DB] 删除 [项目],同时删除 [项目配置]、[项目分集/分镜]
+        Long project_id = crtDramaProject.getDrama_project_id();
+        crtDramaProjectDao.delete(new LambdaQueryWrapper<CrtDramaProject>().eq(CrtDramaProject::getId, project_id));
+        crtDramaProjectSettingsDao.delete(new LambdaQueryWrapper<CrtDramaProjectSettings>()
+            .eq(CrtDramaProjectSettings::getDrama_project_id, project_id));
+        crtDramaProjectStoryboardDao.delete(new LambdaQueryWrapper<CrtDramaProjectStoryboard>()
+            .eq(CrtDramaProjectStoryboard::getDrama_project_id, project_id));
 
-        return Map.of("project_id", crtDramaProject.getDrama_project_id());
+        return Map.of("drama_project_id", crtDramaProject.getDrama_project_id());
     }
 
 }

+ 37 - 0
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectStoryboardServiceImpl.java

@@ -9,6 +9,7 @@ import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
 import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
 import com.backendsys.modules.crt.entity.StoryboardResponse;
 import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
+import com.backendsys.modules.crt.utils.CrtUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,6 +21,8 @@ import java.util.Map;
 @Service
 public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStoryboardService {
 
+    @Autowired
+    private CrtUtil crtUtil;
     @Autowired
     private CrtDramaProjectDao crtDramaProjectDao;
     @Autowired
@@ -52,6 +55,7 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
 
         // 获取项目详情与分镜列表
         StoryboardResponse storyboardResponse = new StoryboardResponse();
+        storyboardResponse.setDrama_project_id(project_id);
         storyboardResponse.setProject_name(crtDramaProject.getProject_name());
         storyboardResponse.setStoryboard_list(storyboardList);
 
@@ -105,4 +109,37 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
         return resp;
     }
 
+
+    /**
+     * 编辑分镜配置
+     */
+    @Override
+    public Map<String, Object> updateStoryboardSettings(CrtDramaProjectSettings crtDramaProjectSettings) {
+
+        // 判断项目是否存在,并且是否具备操作权限
+        crtUtil.checkProject(crtDramaProjectSettings.getDrama_project_id(), "36.1.5");
+
+        // 项目配置类型 (1: 生图配置, 2: 生视频配置)
+        Integer setting_type = crtDramaProjectSettings.getDrama_project_setting_type();
+
+        // 查询条件
+        LambdaQueryWrapper<CrtDramaProjectSettings> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CrtDramaProjectSettings::getDrama_project_id, crtDramaProjectSettings.getDrama_project_id());
+        wrapper.eq(CrtDramaProjectSettings::getDrama_project_setting_type, setting_type);
+
+        // 更新字段
+        CrtDramaProjectSettings entity = new CrtDramaProjectSettings();
+        entity.setAspect_ratio(crtDramaProjectSettings.getAspect_ratio());
+
+        // 生图配置:基础模型、风格LoRA、风格LoRA强度
+        if (setting_type == 1) {
+            entity.setModel_id(crtDramaProjectSettings.getModel_id());
+            entity.setLora_style_id(crtDramaProjectSettings.getLora_style_id());
+            entity.setLora_style_strength(crtDramaProjectSettings.getLora_style_strength());
+        }
+
+        crtDramaProjectSettingsDao.update(entity, wrapper);
+        return Map.of("drama_project_id", crtDramaProjectSettings.getDrama_project_id());
+    }
+
 }

+ 30 - 0
src/main/java/com/backendsys/modules/crt/utils/CrtUtil.java

@@ -0,0 +1,30 @@
+package com.backendsys.modules.crt.utils;
+
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.common.config.security.enums.SecurityEnum;
+import com.backendsys.modules.common.config.security.utils.SecurityUtil;
+import com.backendsys.modules.crt.dao.CrtDramaProjectDao;
+import com.backendsys.modules.crt.entity.CrtDramaProject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CrtUtil {
+
+    @Autowired
+    private SecurityUtil securityUtil;
+    @Autowired
+    private CrtDramaProjectDao crtDramaProjectDao;
+
+    /**
+     * 判断项目是否存在,并且是否具备操作权限
+     */
+    public void checkProject(Long project_id, String permission) {
+        CrtDramaProject detail = crtDramaProjectDao.selectById(project_id);
+        if (detail == null)  throw new CustException("项目不存在");
+        if (detail.getUser_id() != SecurityUtil.getUserId() && !securityUtil.hasPermission(permission)) {
+            throw new CustException(SecurityEnum.NOAUTH);
+        }
+    }
+
+}

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

@@ -4,6 +4,7 @@
 
     <sql id="includeCrtDramaProject">
         p.id,
+        p.id drama_project_id,
         p.user_id,
         p.project_name,
         COALESCE(p.drama_lora_style_id, '') drama_lora_style_id,
@@ -15,6 +16,7 @@
 
     <resultMap id="resultMapCrtDramaProject" type="java.util.LinkedHashMap">
         <id property="id" column="id" jdbcType="BIGINT" />
+        <result property="drama_project_id" column="drama_project_id" javaType="java.lang.Long" />
         <result property="user_id" column="user_id" javaType="java.lang.Long" />
         <result property="project_name" column="project_name" />
         <result property="storyboard_episode_nums" column="storyboard_episode_nums" javaType="java.util.List"