You've already forked FrameTour-BE
fix(face): 优化人脸匹配流程中的拼图模板生成逻辑
- 仅在新增人脸时异步生成拼图模板 - 避免重复生成已存在的人脸拼图模板 - 提升人脸匹配服务的执行效率
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user