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);