|
@@ -3,6 +3,7 @@ package com.backendsys.modules.crt.service.impl;
|
|
import com.backendsys.exception.CustException;
|
|
import com.backendsys.exception.CustException;
|
|
import com.backendsys.modules.common.config.security.enums.SecurityEnum;
|
|
import com.backendsys.modules.common.config.security.enums.SecurityEnum;
|
|
import com.backendsys.modules.common.config.security.utils.SecurityUtil;
|
|
import com.backendsys.modules.common.config.security.utils.SecurityUtil;
|
|
|
|
+import com.backendsys.modules.common.enums.MatchType;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectDao;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectDao;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectSettingsDao;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectSettingsDao;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectStoryboardDao;
|
|
import com.backendsys.modules.crt.dao.CrtDramaProjectStoryboardDao;
|
|
@@ -11,12 +12,11 @@ import com.backendsys.modules.crt.entity.CrtDramaProjectSettings;
|
|
import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
|
|
import com.backendsys.modules.crt.entity.CrtDramaProjectStoryboard;
|
|
import com.backendsys.modules.crt.entity.StoryboardResponse;
|
|
import com.backendsys.modules.crt.entity.StoryboardResponse;
|
|
import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
|
|
import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
|
|
-import com.backendsys.modules.crt.utils.CrtUtil;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.LinkedHashMap;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -24,8 +24,6 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStoryboardService {
|
|
public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStoryboardService {
|
|
|
|
|
|
- @Autowired
|
|
|
|
- private CrtUtil crtUtil;
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private SecurityUtil securityUtil;
|
|
private SecurityUtil securityUtil;
|
|
@Autowired
|
|
@Autowired
|
|
@@ -36,7 +34,7 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
|
|
private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 获取分镜详情
|
|
|
|
|
|
+ * 获取分集信息/分镜列表
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public StoryboardResponse selectCrtDramaProjectStoryboardDetail(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
|
|
public StoryboardResponse selectCrtDramaProjectStoryboardDetail(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
|
|
@@ -52,6 +50,9 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
wrapperStoryboard.eq(CrtDramaProjectStoryboard::getEpisode_num, episode_num);
|
|
wrapperStoryboard.eq(CrtDramaProjectStoryboard::getEpisode_num, episode_num);
|
|
List<CrtDramaProjectStoryboard> storyboardList = crtDramaProjectStoryboardDao.selectList(wrapperStoryboard);
|
|
List<CrtDramaProjectStoryboard> storyboardList = crtDramaProjectStoryboardDao.selectList(wrapperStoryboard);
|
|
if (storyboardList.isEmpty()) throw new CustException("分镜不存在");
|
|
if (storyboardList.isEmpty()) throw new CustException("分镜不存在");
|
|
|
|
+ System.out.println("project_id = " + project_id);
|
|
|
|
+ System.out.println("episode_num = " + episode_num);
|
|
|
|
+ System.out.println("storyboardList = " + storyboardList);
|
|
|
|
|
|
// 查询项目设置
|
|
// 查询项目设置
|
|
LambdaQueryWrapper<CrtDramaProjectSettings> wrapperSettings = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<CrtDramaProjectSettings> wrapperSettings = new LambdaQueryWrapper<>();
|
|
@@ -82,7 +83,7 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 创建分镜
|
|
|
|
|
|
+ * 创建分集
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public Map<String, Object> createStoryboard(CrtDramaProject crtDramaProject) {
|
|
public Map<String, Object> createStoryboard(CrtDramaProject crtDramaProject) {
|
|
@@ -90,7 +91,6 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
Long user_id = crtDramaProject.getUser_id();
|
|
Long user_id = crtDramaProject.getUser_id();
|
|
Long drama_project_id = crtDramaProject.getDrama_project_id();
|
|
Long drama_project_id = crtDramaProject.getDrama_project_id();
|
|
Integer episode_num = crtDramaProject.getEpisode_num();
|
|
Integer episode_num = crtDramaProject.getEpisode_num();
|
|
- Integer sort = 1;
|
|
|
|
|
|
|
|
// 判断 项目 是否存在
|
|
// 判断 项目 是否存在
|
|
LambdaQueryWrapper<CrtDramaProject> wrapperDramaProject = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<CrtDramaProject> wrapperDramaProject = new LambdaQueryWrapper<>();
|
|
@@ -110,65 +110,43 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
entity.setUser_id(user_id);
|
|
entity.setUser_id(user_id);
|
|
entity.setDrama_project_id(drama_project_id);
|
|
entity.setDrama_project_id(drama_project_id);
|
|
entity.setEpisode_num(episode_num);
|
|
entity.setEpisode_num(episode_num);
|
|
- entity.setSort(sort);
|
|
|
|
|
|
+ entity.setSort(1);
|
|
crtDramaProjectStoryboardDao.insert(entity);
|
|
crtDramaProjectStoryboardDao.insert(entity);
|
|
|
|
|
|
return Map.of("id", entity.getId());
|
|
return Map.of("id", entity.getId());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
|
- * 编辑项目生图/生视频配置
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public Map<String, Object> updateStoryboardSettings(CrtDramaProjectSettings crtDramaProjectSettings) {
|
|
|
|
-
|
|
|
|
- // 判断项目是否存在,并且是否具备操作权限(全权限)
|
|
|
|
- crtUtil.checkProject(crtDramaProjectSettings.getDrama_project_id(), "36.2.3");
|
|
|
|
-
|
|
|
|
- // 项目配置类型 (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());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 编辑分镜
|
|
* 编辑分镜
|
|
|
|
+ *
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public Map<String, Object> updateStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
|
|
public Map<String, Object> updateStoryboard(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
|
|
|
|
|
|
- // 判断分镜是否存在
|
|
|
|
- Long drama_project_storyboard_id = crtDramaProjectStoryboard.getDrama_project_storyboard_id();
|
|
|
|
- CrtDramaProjectStoryboard storyboardDetail = crtDramaProjectStoryboardDao.selectById(drama_project_storyboard_id);
|
|
|
|
|
|
+ Long storyboard_id = crtDramaProjectStoryboard.getDrama_project_storyboard_id();
|
|
|
|
+ CrtDramaProjectStoryboard storyboardDetail = crtDramaProjectStoryboardDao.selectById(storyboard_id);
|
|
if (storyboardDetail == null) throw new CustException("分镜不存在");
|
|
if (storyboardDetail == null) throw new CustException("分镜不存在");
|
|
|
|
|
|
- // 判断用户是否具备操作权限(全权限)
|
|
|
|
- crtUtil.checkByUser(crtDramaProjectStoryboard.getUser_id(), "36.2.4");
|
|
|
|
|
|
+ // 是否 [分镜] 拥有者,权限:
|
|
|
|
+ // - 编辑自己的 (需 36.2.4.1 权限)
|
|
|
|
+ // - 编辑自己及他人的 (需要 36.2.4 权限或超级管理员)
|
|
|
|
+ Boolean isOwner = storyboardDetail.getUser_id() == SecurityUtil.getUserId();
|
|
|
|
+ if (isOwner && !securityUtil.hasPermissions(Arrays.asList("36.2.4", "36.2.4.1"), MatchType.OR)) {
|
|
|
|
+ throw new CustException(SecurityEnum.NOAUTH);
|
|
|
|
+ }
|
|
|
|
+ if (!isOwner && !securityUtil.hasPermission("36.2.4")) {
|
|
|
|
+ throw new CustException(SecurityEnum.NOAUTH);
|
|
|
|
+ }
|
|
|
|
+ // ---------------------------------------------------------------------------
|
|
|
|
+
|
|
|
|
+ // [DB] 更新分镜
|
|
|
|
+ // crtDramaProjectStoryboardDao.updateStoryboard(crtDramaProjectStoryboard);
|
|
|
|
|
|
|
|
|
|
- // 权限还没好
|
|
|
|
|
|
|
|
|
|
|
|
- return Map.of("drama_project_storyboard_id", drama_project_storyboard_id);
|
|
|
|
|
|
+ return Map.of("drama_project_storyboard_id", crtDramaProjectStoryboard.getDrama_project_storyboard_id());
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|