diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index 2f847838..448c489a 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -1143,13 +1143,6 @@ public class FaceServiceImpl implements FaceService { throw new BaseException("人脸不存在"); } - // 在重新匹配前,删除该人脸的旧数据关系(member_source 和 member_video) - log.debug("删除人脸旧关系数据:faceId={}, memberId={}", faceId, face.getMemberId()); - sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId); - videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId); - memberRelationRepository.clearSCacheByFace(faceId); - log.debug("人脸旧关系数据删除完成:faceId={}", faceId); - List faceSamples = faceSampleMapper.listByIds(faceSampleIds); if (faceSamples.isEmpty()) { log.warn("未找到指定的人脸样本,faceSampleIds: {}", faceSampleIds); @@ -1220,6 +1213,13 @@ public class FaceServiceImpl implements FaceService { List sampleListIds = mergedResult.getSampleListIds(); if (sampleListIds != null && !sampleListIds.isEmpty()) { try { + // 在保存新关系前,删除该人脸的旧数据关系(member_source 和 member_video) + log.debug("删除人脸旧关系数据:faceId={}, memberId={}", faceId, face.getMemberId()); + sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId); + videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId); + memberRelationRepository.clearSCacheByFace(faceId); + log.debug("人脸旧关系数据删除完成:faceId={}", faceId); + List memberSourceEntityList = processMemberSources(sampleListIds, face); if (!memberSourceEntityList.isEmpty()) {