fix(face): 优化人脸匹配流程中的拼图模板生成逻辑

- 仅在新增人脸时异步生成拼图模板
- 避免重复生成已存在的人脸拼图模板
- 提升人脸匹配服务的执行效率
This commit is contained in:
2025-12-15 18:26:38 +08:00
parent 5d7fe1638e
commit b207b5805a

View File

@@ -36,11 +36,13 @@ import com.ycwl.basic.service.task.TaskFaceService;
import com.ycwl.basic.service.task.TaskService; import com.ycwl.basic.service.task.TaskService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -97,9 +99,9 @@ public class FaceMatchingOrchestrator {
@Autowired @Autowired
private IPuzzleGenerateService puzzleGenerateService; private IPuzzleGenerateService puzzleGenerateService;
@Autowired @Autowired
private PuzzleGenerationRecordMapper puzzleGenerationRecordMapper;
@Autowired
private TaskStatusBiz taskStatusBiz; private TaskStatusBiz taskStatusBiz;
@Autowired
private RedisTemplate<String, String> redisTemplate;
/** /**
* 编排人脸匹配的完整流程 * 编排人脸匹配的完整流程
@@ -356,6 +358,13 @@ public class FaceMatchingOrchestrator {
* 在人脸匹配完成后,异步为该景区的所有启用的拼图模板生成图片 * 在人脸匹配完成后,异步为该景区的所有启用的拼图模板生成图片
*/ */
private void asyncGeneratePuzzleTemplate(Long scenicId, Long faceId, Long memberId) { 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(() -> { new Thread(() -> {
try { try {
log.info("开始异步生成景区拼图模板: scenicId={}, faceId={}", scenicId, faceId); log.info("开始异步生成景区拼图模板: scenicId={}, faceId={}", scenicId, faceId);