人脸真实删除、清理逻辑优化

This commit is contained in:
2025-05-08 17:21:00 +08:00
parent ef978529ac
commit 2e92cf5c91
3 changed files with 16 additions and 5 deletions

View File

@ -23,6 +23,7 @@ public interface FaceMapper {
FaceEntity get(Long id);
int add(FaceEntity face);
int deleteById(Long id);
int forceDeleteById(Long id);
int deleteByIds(@Param("list") List<Long> ids);
int update(FaceEntity face);

View File

@ -9,6 +9,7 @@ import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.ScenicMapper;
import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.mapper.VideoMapper;
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
@ -105,17 +106,23 @@ public class FaceCleaner {
}
FaceReqQuery req = new FaceReqQuery();
req.setScenicId(scenic.getId());
req.setUpdateEndTime(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -faceStoreDay));
List<FaceRespVO> list = faceMapper.list(req);
Date faceEndDate = DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -faceStoreDay);
List<FaceEntity> list = faceMapper.listEntityBeforeDate(scenic.getId(), faceEndDate);
list.forEach(face -> {
boolean result = adapter.deleteFace(USER_FACE_DB_NAME+face.getScenicId(), face.getId().toString());
if (result) {
log.info("当前景区{}人脸样本ID{},删除成功", scenic.getId(), face.getId());
faceMapper.deleteById(face.getId());
} else {
log.info("当前景区{}人脸样本ID{},删除失败", scenic.getId(), face.getId());
result = adapter.deleteFace(USER_FACE_DB_NAME+face.getScenicId(), face.getId().toString());
if (result) {
log.info("当前景区{}人脸样本ID{},删除成功", scenic.getId(), face.getId());
} else {
log.info("当前景区{}人脸样本ID{},删除失败", scenic.getId(), face.getId());
}
}
faceMapper.forceDeleteById(face.getId());
});
});
}

View File

@ -32,6 +32,9 @@
<delete id="deleteById">
update face set is_delete = 1 where id = #{id}
</delete>
<delete id="forceDeleteById">
DELETE FROM face where id = #{id}
</delete>
<delete id="deleteByIds">
<if test="list!= null and list.size() > 0">
update face set is_delete = 1 where id in (
@ -121,6 +124,6 @@
SELECT * FROM `zt`.`face_sample` WHERE `scenic_id` = '3930324797233434624' AND `create_at` &lt; '2025-03-07 14:40:36' AND `device_id` = '3961959104355897344'
</select>
<select id="listEntityBeforeDate" resultType="com.ycwl.basic.model.pc.face.entity.FaceEntity">
SELECT * FROM `zt`.`face` WHERE `scenic_id` = #{scenicId} AND `create_at` &lt; #{date}
SELECT * FROM `zt`.`face` WHERE `scenic_id` = #{scenicId} AND `create_at` &lt; #{endDate}
</select>
</mapper>