From b207b5805a3c0906c297a16185132cbb2d757568 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 15 Dec 2025 18:26:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(face):=20=E4=BC=98=E5=8C=96=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E5=8C=B9=E9=85=8D=E6=B5=81=E7=A8=8B=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=8B=BC=E5=9B=BE=E6=A8=A1=E6=9D=BF=E7=94=9F=E6=88=90=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 仅在新增人脸时异步生成拼图模板 - 避免重复生成已存在的人脸拼图模板 - 提升人脸匹配服务的执行效率 --- .../pc/orchestrator/FaceMatchingOrchestrator.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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 612783e1..012a48e4 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 @@ -36,11 +36,13 @@ import com.ycwl.basic.service.task.TaskFaceService; import com.ycwl.basic.service.task.TaskService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -97,9 +99,9 @@ public class FaceMatchingOrchestrator { @Autowired private IPuzzleGenerateService puzzleGenerateService; @Autowired - private PuzzleGenerationRecordMapper puzzleGenerationRecordMapper; - @Autowired private TaskStatusBiz taskStatusBiz; + @Autowired + private RedisTemplate redisTemplate; /** * 编排人脸匹配的完整流程 @@ -356,6 +358,13 @@ public class FaceMatchingOrchestrator { * 在人脸匹配完成后,异步为该景区的所有启用的拼图模板生成图片 */ private void asyncGeneratePuzzleTemplate(Long scenicId, Long faceId, Long memberId) { + if (redisTemplate.hasKey("puzzle_generated:face:" + faceId)) { + return; + } + redisTemplate.opsForValue().set( + "puzzle_generated:face:" + faceId, + "1", + 60 * 10, TimeUnit.SECONDS); new Thread(() -> { try { log.info("开始异步生成景区拼图模板: scenicId={}, faceId={}", scenicId, faceId);