tsurumure 2 kuukautta sitten
vanhempi
commit
52d26d48fd

+ 7 - 0
db/sys_user_role_permission.sql

@@ -40,6 +40,13 @@ INSERT INTO sys_user_role_permission(id, parent_id, permission_name, sort) VALUE
         ('36.1', '36', 'AI短剧创作-项目管理', null),
             ('36.1.1', '36.1', 'AI短剧创作-项目列表 (全权限)', null),
             ('36.1.2', '36.1', 'AI短剧创作-项目列表 (自己)', null),
+            ('36.1.3', '36.1', 'AI短剧创作-创建项目', null),
+            ('36.1.4', '36.1', 'AI短剧创作-编辑项目 (全权限)', null),
+                ('36.1.4.1', '36.1.4', 'AI短剧创作-编辑项目 (自己)', null),
+            ('36.1.5', '36.1', 'AI短剧创作-编辑项目配置 (全权限)', null),
+                ('36.1.5.1', '36.1.5', 'AI短剧创作-编辑项目配置 (自己)', null),
+            ('36.1.6', '36.1', 'AI短剧创作-删除项目 (全权限)', null),
+                ('36.1.6.1', '36.1.6', 'AI短剧创作-删除项目 (自己)', null),
         ('36.2', '36', 'AI短剧创作-分镜管理', null),
             ('36.2.1', '36.2', 'AI短剧创作-分镜列表', null),
             ('36.2.2', '36.2', 'AI短剧创作-创建分镜', null),

+ 5 - 4
db/sys_user_role_permission_relation.sql

@@ -101,11 +101,12 @@ INSERT INTO sys_user_role_permission_relation(role_id, permission_id) VALUES
 
     (1, '36'),
         (1, '36.1'),
-            (1, '36.1.1'),
-            (1, '36.1.2'),
+            (1, '36.1.1'), (1, '36.1.2'), (1, '36.1.3'),
+                (1, '36.1.4'), (1, '36.1.4.1'),
+                (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'),
 
 
 

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

@@ -1,6 +1,8 @@
 package com.backendsys.modules.crt.controller;
 
-import com.backendsys.modules.cms.article.entity.ArticleCategory;
+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;
@@ -10,14 +12,15 @@ 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.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @Validated
 @RestController
 @Tag(name = "短剧创作-项目管理")
 public class CrtDramaProjectController {
 
+    @Autowired
+    private SecurityUtil securityUtil;
     @Autowired
     private CrtDramaProjectService crtDramaProjectService;
 
@@ -37,4 +40,18 @@ public class CrtDramaProjectController {
         return Result.success().put("data", crtDramaProjectService.selectCrtDramaProjectList(crtDramaProject));
     }
 
+    @Operation(summary = "获取短剧创作-创建项目")
+    @PreAuthorize("@sr.hasPermission('36.1.2')")
+    @PostMapping("/api/crt/drama/createDramaProject")
+    public Result createDramaProject(@Validated(CrtDramaProject.Create.class) @RequestBody CrtDramaProject crtDramaProject) {
+        crtDramaProject.setUser_id(SecurityUtil.getUserId());
+        return Result.success().put("data", crtDramaProjectService.createCrtDramaProject(crtDramaProject));
+    }
+
+    @Operation(summary = "获取短剧创作-编辑项目")
+    @PutMapping("/api/crt/drama/updateDramaProject")
+    public Result updateDramaProject(@Validated(CrtDramaProject.Update.class) @RequestBody CrtDramaProject crtDramaProject) {
+        return Result.success().put("data", crtDramaProjectService.updateCrtDramaProject(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 })
+    @NotNull(message = "项目ID不能为空", groups = { CreateStoryboard.class, Update.class })
     private Long drama_project_id;
 
     private Long user_id;

+ 2 - 2
src/main/java/com/backendsys/modules/crt/enums/DramaProjectSettingType.java → src/main/java/com/backendsys/modules/crt/enums/ProjectSettingTypeEnums.java

@@ -1,6 +1,6 @@
 package com.backendsys.modules.crt.enums;
 
-public enum DramaProjectSettingType {
+public enum ProjectSettingTypeEnums {
 
     GENERATE_IMAGE(1, "生图配置"),
     GENERATE_VIDEO(2, "生视频配置")
@@ -9,7 +9,7 @@ public enum DramaProjectSettingType {
     private final Integer key;
     private final String value;
 
-    DramaProjectSettingType(Integer key, String value) {
+    ProjectSettingTypeEnums(Integer key, String value) {
         this.key = key;
         this.value = value;
     }

+ 11 - 0
src/main/java/com/backendsys/modules/crt/service/CrtDramaProjectService.java

@@ -4,9 +4,20 @@ import com.backendsys.modules.cms.article.entity.ArticleCategory;
 import com.backendsys.modules.crt.entity.CrtDramaProject;
 import com.backendsys.utils.response.PageEntity;
 
+import java.util.Map;
+
 public interface CrtDramaProjectService {
 
     // 获取短剧创作-项目列表
     PageEntity selectCrtDramaProjectList(CrtDramaProject crtDramaProject);
 
+    // 创建短剧创作-项目
+    Map<String, Object> createCrtDramaProject(CrtDramaProject crtDramaProject);
+
+    // 编辑短剧创作-项目
+    Map<String, Object> updateCrtDramaProject(CrtDramaProject crtDramaProject);
+
+    // 删除短剧创作-项目
+    Map<String, Object> deleteCrtDramaProject(CrtDramaProject crtDramaProject);
+
 }

+ 91 - 0
src/main/java/com/backendsys/modules/crt/service/impl/CrtDramaProjectServiceImpl.java

@@ -1,14 +1,24 @@
 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.entity.CrtDramaProject;
+import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
+import com.backendsys.modules.crt.enums.AspectRatioEnums;
+import com.backendsys.modules.crt.enums.ProjectSettingTypeEnums;
 import com.backendsys.modules.crt.service.CrtDramaProjectService;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -16,8 +26,12 @@ import java.util.Map;
 @Service
 public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
 
+    @Autowired
+    private SecurityUtil securityUtil;
     @Autowired
     private CrtDramaProjectDao crtDramaProjectDao;
+    @Autowired
+    private CrtDramaProjectSettingsDao crtDramaProjectSettingsDao;
 
     // 获取短剧创作-项目列表
     @Override
@@ -27,4 +41,81 @@ public class CrtDramaProjectServiceImpl implements CrtDramaProjectService {
         return new PageInfoResult(list).toEntity();
     }
 
+    /**
+     * 创建短剧创作-项目
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> createCrtDramaProject(CrtDramaProject crtDramaProject) {
+
+        // 创建项目
+        crtDramaProjectDao.insert(crtDramaProject);
+
+        // 创建项目配置 (生图、生视频配置)
+        Long project_id = crtDramaProject.getId();
+        CrtDramaProjectSettings settings_image = new CrtDramaProjectSettings();
+        settings_image.setDrama_project_id(project_id);
+        settings_image.setDrama_project_setting_type(ProjectSettingTypeEnums.GENERATE_IMAGE.getKey());   // 项目配置类型
+        settings_image.setAspect_ratio(AspectRatioEnums.RATIO_16_9.getKey());                            // 画面比例
+        settings_image.setModel_id(1L);
+        settings_image.setLora_style_id(1L);
+        settings_image.setLora_style_strength(1.0f);
+        crtDramaProjectSettingsDao.insert(settings_image);
+
+        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());                            // 画面比例
+        crtDramaProjectSettingsDao.insert(settings_video);
+
+        return Map.of("project_id", project_id);
+    }
+
+    /**
+     * 编辑短剧创作-项目
+     */
+    @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();
+
+        // 编辑他人的用户信息
+        // - 编辑自己 (无需权限)
+        // - 编辑他人 (需要子权限或超级管理员)
+        if (user_id != SecurityUtil.getUserId() && !securityUtil.hasPermission("36.1.3")) {
+            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());
+
+
+
+
+
+    }
+
+    /**
+     * 删除短剧创作-项目
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> deleteCrtDramaProject(CrtDramaProject crtDramaProject) {
+
+
+
+        return Map.of("project_id", crtDramaProject.getDrama_project_id());
+    }
+
 }

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

@@ -40,6 +40,7 @@
             </if>
         </where>
         GROUP BY p.id
+        ORDER BY p.create_time DESC
     </select>
 
 </mapper>