You've already forked FrameTour-BE
feat(puzzle): 添加拼图素材版本缓存优化重复生成
- 新增 puzzleSourceVersionCache 缓存用于记录拼图素材版本 - 实现 isPuzzleSourceChanged 方法判断素材是否变化 - 添加 markPuzzleSourceVersion 方法标记当前素材版本 - 实现 invalidatePuzzleSourceVersion 方法清除指定人脸缓存 - 在人脸关系变更时自动清除相关拼图素材版本缓存 - 重构 AppPuzzleController 使用 PuzzleRepository 替代直接访问 Mapper - 添加生成记录缓存机制,包括按人脸ID和记录ID的缓存 - 实现素材版本缓存命中时复用历史记录功能 - 优化重复内容检测逻辑,添加缓存标记机制 - 在各种生成流程中添加缓存清除逻辑确保数据一致性
This commit is contained in:
@@ -207,6 +207,8 @@ public class FaceServiceImpl implements FaceService {
|
||||
private FaceDetectLogAiCamService faceDetectLogAiCamService;
|
||||
@Autowired
|
||||
private OrderRepository orderRepository;
|
||||
@Autowired
|
||||
private com.ycwl.basic.biz.FaceStatusManager faceStatusManager;
|
||||
|
||||
@Override
|
||||
public ApiResponse<PageInfo<FaceRespVO>> pageQuery(FaceReqQuery faceReqQuery) {
|
||||
@@ -994,6 +996,7 @@ public class FaceServiceImpl implements FaceService {
|
||||
sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId);
|
||||
videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId);
|
||||
memberRelationRepository.clearSCacheByFace(faceId);
|
||||
faceStatusManager.invalidatePuzzleSourceVersion(faceId);
|
||||
log.debug("人脸旧关系数据删除完成:faceId={}", faceId);
|
||||
|
||||
List<MemberSourceEntity> memberSourceEntityList = sourceRelationProcessor.processMemberSources(sampleListIds, face);
|
||||
@@ -1016,6 +1019,7 @@ public class FaceServiceImpl implements FaceService {
|
||||
log.warn("没有有效的关联关系可创建: faceId={}, 原始数量={}", faceId, memberSourceEntityList.size());
|
||||
}
|
||||
memberRelationRepository.clearSCacheByFace(faceId);
|
||||
faceStatusManager.invalidatePuzzleSourceVersion(faceId);
|
||||
taskTaskService.autoCreateTaskByFaceId(faceId);
|
||||
|
||||
log.info("自定义人脸匹配完成:faceId={}, 匹配样本数={}, 关联源文件数={}, 免费数={}",
|
||||
|
||||
@@ -341,6 +341,7 @@ public class FaceMatchingOrchestrator {
|
||||
|
||||
// 清除缓存
|
||||
memberRelationRepository.clearSCacheByFace(faceId);
|
||||
faceStatusManager.invalidatePuzzleSourceVersion(faceId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -92,6 +92,8 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
private ScenicService scenicService;
|
||||
@Autowired
|
||||
private MemberRelationRepository memberRelationRepository;
|
||||
@Autowired
|
||||
private com.ycwl.basic.biz.FaceStatusManager faceStatusManager;
|
||||
|
||||
private IAcsClient getClient() {
|
||||
AliFaceBodyAdapter use = (AliFaceBodyAdapter) FaceBodyFactory.use();
|
||||
@@ -172,6 +174,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
log.warn("没有有效的关联关系可创建: faceId={}, 原始数量={}", faceId, memberSourceEntityList.size());
|
||||
}
|
||||
memberRelationRepository.clearSCacheByFace(faceId);
|
||||
faceStatusManager.invalidatePuzzleSourceVersion(faceId);
|
||||
List<FaceSampleEntity> faceSampleList = faceRepository.getFaceSampleList(faceId);
|
||||
List<Long> faceSampleIds = faceSampleList.stream()
|
||||
.sorted(Comparator.comparing(FaceSampleEntity::getCreateAt).reversed())
|
||||
|
||||
Reference in New Issue
Block a user