|
@@ -8,29 +8,34 @@ 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;
|
|
|
|
+import com.backendsys.modules.crt.dao.CrtGenerateImageDao;
|
|
import com.backendsys.modules.crt.entity.*;
|
|
import com.backendsys.modules.crt.entity.*;
|
|
import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
|
|
import com.backendsys.modules.crt.service.CrtDramaProjectStoryboardService;
|
|
|
|
+import com.backendsys.modules.upload.entity.ObjectKey;
|
|
import com.backendsys.modules.upload.enums.StyleEnums;
|
|
import com.backendsys.modules.upload.enums.StyleEnums;
|
|
|
|
+import com.backendsys.modules.upload.utils.ObjectKeyUtil;
|
|
import com.backendsys.modules.upload.utils.UploadUtil;
|
|
import com.backendsys.modules.upload.utils.UploadUtil;
|
|
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 org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.Arrays;
|
|
|
|
-import java.util.LinkedHashMap;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStoryboardService {
|
|
public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStoryboardService {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ObjectKeyUtil objectKeyUtil;
|
|
@Autowired
|
|
@Autowired
|
|
private SecurityUtil securityUtil;
|
|
private SecurityUtil securityUtil;
|
|
@Autowired
|
|
@Autowired
|
|
private CrtDramaProjectDao crtDramaProjectDao;
|
|
private CrtDramaProjectDao crtDramaProjectDao;
|
|
@Autowired
|
|
@Autowired
|
|
|
|
+ private CrtGenerateImageDao crtGenerateImageDao;
|
|
|
|
+ @Autowired
|
|
private CrtDramaProjectSettingsDao crtDramaProjectSettingsDao;
|
|
private CrtDramaProjectSettingsDao crtDramaProjectSettingsDao;
|
|
@Autowired
|
|
@Autowired
|
|
private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
|
|
private CrtDramaProjectStoryboardDao crtDramaProjectStoryboardDao;
|
|
@@ -47,12 +52,12 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
if (crtDramaProject == null) throw new CustException("项目不存在");
|
|
if (crtDramaProject == null) throw new CustException("项目不存在");
|
|
|
|
|
|
List<CrtDramaProjectStoryboard> storyboardList = crtDramaProjectStoryboardDao.selectStoryboardList(crtDramaProjectStoryboard);
|
|
List<CrtDramaProjectStoryboard> storyboardList = crtDramaProjectStoryboardDao.selectStoryboardList(crtDramaProjectStoryboard);
|
|
- if (storyboardList.isEmpty()) throw new CustException("分镜不存在");
|
|
|
|
|
|
+ if (storyboardList != null && storyboardList.isEmpty()) throw new CustException("分镜不存在");
|
|
|
|
|
|
// 获取分镜列表
|
|
// 获取分镜列表
|
|
storyboardList.stream().forEach(storyboard -> {
|
|
storyboardList.stream().forEach(storyboard -> {
|
|
// 获取分镜生图结果
|
|
// 获取分镜生图结果
|
|
- if (!storyboard.getGenerate_images().isEmpty()) {
|
|
|
|
|
|
+ if (storyboard.getGenerate_images() != null && !storyboard.getGenerate_images().isEmpty()) {
|
|
// 设置生图结果缩略略
|
|
// 设置生图结果缩略略
|
|
List<CrtGenerateImage> generate_image_list = storyboard.getGenerate_images().stream().map(item -> {
|
|
List<CrtGenerateImage> generate_image_list = storyboard.getGenerate_images().stream().map(item -> {
|
|
String url = item.getUrl();
|
|
String url = item.getUrl();
|
|
@@ -187,7 +192,7 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 清空分镜
|
|
|
|
|
|
+ * 清空全部分镜 (仅保留一个空分镜)
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -231,4 +236,48 @@ public class CrtDramaProjectStoryboardServiceImpl implements CrtDramaProjectStor
|
|
return resp;
|
|
return resp;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 删除单个分镜
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Map<String, Object> deleteStoryboardBySort(CrtDramaProjectStoryboard crtDramaProjectStoryboard) {
|
|
|
|
+
|
|
|
|
+ Long drama_project_storyboard_id = crtDramaProjectStoryboard.getDrama_project_storyboard_id();
|
|
|
|
+
|
|
|
|
+ LambdaQueryWrapper<CrtDramaProjectStoryboard> wrapperStoryboard = new LambdaQueryWrapper<>();
|
|
|
|
+ wrapperStoryboard.eq(CrtDramaProjectStoryboard::getDrama_project_storyboard_id, drama_project_storyboard_id);
|
|
|
|
+ Boolean is_exist = crtDramaProjectStoryboardDao.exists(wrapperStoryboard);
|
|
|
|
+ if (!is_exist) throw new CustException("分镜不存在");
|
|
|
|
+
|
|
|
|
+ // [DB] 删除分镜
|
|
|
|
+ crtDramaProjectStoryboardDao.deleteById(drama_project_storyboard_id);
|
|
|
|
+
|
|
|
|
+ // 同时删除分镜下的生图内容 (批量删除 cos/tos)
|
|
|
|
+ LambdaQueryWrapper<CrtGenerateImage> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ wrapper.eq(CrtGenerateImage::getDrama_project_storyboard_id, drama_project_storyboard_id);
|
|
|
|
+ List<CrtGenerateImage> generateImageList = crtGenerateImageDao.selectList(wrapper);
|
|
|
|
+ if (generateImageList != null && !generateImageList.isEmpty()) {
|
|
|
|
+
|
|
|
|
+ // 获得生图内容的 object_keys
|
|
|
|
+ List<ObjectKey> object_keys = new ArrayList<>();
|
|
|
|
+ generateImageList.stream().forEach(item -> {
|
|
|
|
+ ObjectKey objectKey = new ObjectKey();
|
|
|
|
+ objectKey.setObject_key(item.getObject_key());
|
|
|
|
+ objectKey.setTarget(item.getTarget());
|
|
|
|
+ object_keys.add(objectKey);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
|
+ // 批量删除生图记录
|
|
|
|
+ crtGenerateImageDao.delete(wrapper);
|
|
|
|
+ // 批量删除 ObjectKeys (By target)
|
|
|
|
+ objectKeyUtil.deleteObjects(object_keys);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return Map.of("drama_project_storyboard_id", drama_project_storyboard_id);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|