diff --git a/src/main/java/com/ycwl/basic/biz/TemplateBiz.java b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java index 3d76f1a5..b523befe 100644 --- a/src/main/java/com/ycwl/basic/biz/TemplateBiz.java +++ b/src/main/java/com/ycwl/basic/biz/TemplateBiz.java @@ -32,8 +32,6 @@ public class TemplateBiz { private FaceRepository faceRepository; @Autowired private SourceMapper sourceMapper; - @Autowired - private SourceRepository sourceRepository; public boolean determineTemplateCanGenerate(Long templateId, Long faceId) { return determineTemplateCanGenerate(templateId, faceId, true); @@ -175,4 +173,17 @@ public class TemplateBiz { return filteredParams; } -} + public Long findFirstAvailableTemplate(List templateIds, Long faceId) { + if (templateIds == null || templateIds.isEmpty() || faceId == null) { + return null; + } + + for (Long templateId : templateIds) { + if (determineTemplateCanGenerate(templateId, faceId)) { + return templateId; + } + } + + return null; + } +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index c1a19d3c..3b340933 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -269,7 +269,7 @@ public class TaskTaskServiceImpl implements TaskService { log.info("faceId:{} faceSampleList is empty", faceId); return; } - ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(faceRespVO.getScenicId()); + ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(faceRespVO.getScenicId()); List templateList = templateRepository.getTemplateListByScenicId(faceRespVO.getScenicId()); if (templateList == null || templateList.isEmpty()) { // 没有vlog视频的情况下 @@ -284,11 +284,23 @@ public class TaskTaskServiceImpl implements TaskService { VideoPieceGetter.addTask(task); return; } - if (Integer.valueOf(3).equals(scenicConfig.getBookRoutine()) || Integer.valueOf(4).equals(scenicConfig.getBookRoutine())) { + if (Integer.valueOf(3).equals(scenicConfig.getInteger("book_routine")) || Integer.valueOf(4).equals(scenicConfig.getInteger("book_routine"))) { // 生成全部视频的逻辑 templateList.forEach(template -> createTaskByFaceIdAndTemplateId(faceId, template.getId(), 1)); } else { - createTaskByFaceIdAndTemplateId(faceId, templateList.getFirst().getId(), 1); + if (Boolean.TRUE.equals(scenicConfig.getBoolean("force_create_vlog"))) { + Long availableTemplateId = templateBiz.findFirstAvailableTemplate(templateList.stream().map(TemplateRespVO::getId).toList(), faceId); + if (availableTemplateId != null) { + createTaskByFaceIdAndTemplateId(faceId, availableTemplateId, 1); + } else { + log.info("faceId:{} available template is not exist", faceId); + } + } else { + // 非强制创建,只创建第一个可用模板 + if (!templateList.isEmpty()) { + createTaskByFaceIdAndTemplateId(faceId, templateList.getFirst().getId(), 1); + } + } } } @Override