From 8c76c85ae2012417eb07a2d75066200bc4f75418 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 20 Nov 2025 17:33:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(puzzle):=20=E6=B7=BB=E5=8A=A0=E6=8B=BC?= =?UTF-8?q?=E5=9B=BE=E7=94=9F=E6=88=90=E8=AE=B0=E5=BD=95=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入 PuzzleGenerationRecordEntity 和 PuzzleGenerationRecordMapper - 在人脸匹配编排流程中查询已有拼图生成记录 - 增加模板重复生成判断逻辑,避免重复处理 - 跳过已生成模板并记录日志提示 --- .../pc/orchestrator/FaceMatchingOrchestrator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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());