diff --git a/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java b/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java index 0bf3b231..1a36ebd7 100644 --- a/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java +++ b/src/main/java/com/ycwl/basic/service/pc/orchestrator/FaceMatchingOrchestrator.java @@ -4,6 +4,8 @@ import com.ycwl.basic.integration.scenic.dto.scenic.ScenicV2DTO; import com.ycwl.basic.puzzle.dto.PuzzleGenerateRequest; import com.ycwl.basic.puzzle.dto.PuzzleGenerateResponse; import com.ycwl.basic.puzzle.dto.PuzzleTemplateDTO; +import com.ycwl.basic.puzzle.entity.PuzzleGenerationRecordEntity; +import com.ycwl.basic.puzzle.mapper.PuzzleGenerationRecordMapper; import com.ycwl.basic.puzzle.service.IPuzzleGenerateService; import com.ycwl.basic.puzzle.service.IPuzzleTemplateService; @@ -93,6 +95,8 @@ public class FaceMatchingOrchestrator { private IPuzzleTemplateService puzzleTemplateService; @Autowired private IPuzzleGenerateService puzzleGenerateService; + @Autowired + private PuzzleGenerationRecordMapper puzzleGenerationRecordMapper; /** * 编排人脸匹配的完整流程 @@ -365,6 +369,8 @@ public class FaceMatchingOrchestrator { return; } ScenicV2DTO scenicBasic = scenicRepository.getScenicBasic(face.getScenicId()); + List records = puzzleGenerationRecordMapper.listByFaceId(faceId); + // 准备公共动态数据 Map baseDynamicData = new HashMap<>(); if (face.getFaceUrl() != null) { @@ -381,6 +387,11 @@ public class FaceMatchingOrchestrator { int failCount = 0; for (PuzzleTemplateDTO template : templateList) { try { + boolean anyMatch = records.stream().anyMatch(record -> record.getTemplateCode().equals(template.getCode())); + if (anyMatch) { + log.info("模板已生成,跳过"); + continue; + } log.info("开始生成拼图: scenicId={}, templateCode={}, templateName={}", scenicId, template.getCode(), template.getName());