From 0aadd1d0649408d9ef56cca94a47790f4c70c322 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 26 Feb 2025 13:43:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E8=BF=87=E6=9C=9F=E4=BA=BA?= =?UTF-8?q?=E8=84=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/pc/face/entity/FaceEntity.java | 1 + .../basic/model/pc/face/req/FaceReqQuery.java | 2 ++ .../java/com/ycwl/basic/task/FaceCleaner.java | 32 +++++++++++++++++++ src/main/resources/mapper/FaceMapper.xml | 24 ++++++++++---- 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ycwl/basic/model/pc/face/entity/FaceEntity.java b/src/main/java/com/ycwl/basic/model/pc/face/entity/FaceEntity.java index 8c74f5a..0d9151c 100644 --- a/src/main/java/com/ycwl/basic/model/pc/face/entity/FaceEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/face/entity/FaceEntity.java @@ -43,4 +43,5 @@ public class FaceEntity { private String matchResult; private Date createAt; private Date updateAt; + private int isDelete; } diff --git a/src/main/java/com/ycwl/basic/model/pc/face/req/FaceReqQuery.java b/src/main/java/com/ycwl/basic/model/pc/face/req/FaceReqQuery.java index cfe8d21..82c9482 100644 --- a/src/main/java/com/ycwl/basic/model/pc/face/req/FaceReqQuery.java +++ b/src/main/java/com/ycwl/basic/model/pc/face/req/FaceReqQuery.java @@ -32,5 +32,7 @@ public class FaceReqQuery extends BaseQueryParameterReq { private String matchResult; private Date startTime; private Date endTime; + private Date updateStartTime; + private Date updateEndTime; private Integer finishedJourney; } diff --git a/src/main/java/com/ycwl/basic/task/FaceCleaner.java b/src/main/java/com/ycwl/basic/task/FaceCleaner.java index 8cbd4ab..4122cb8 100644 --- a/src/main/java/com/ycwl/basic/task/FaceCleaner.java +++ b/src/main/java/com/ycwl/basic/task/FaceCleaner.java @@ -1,10 +1,13 @@ package com.ycwl.basic.task; import cn.hutool.core.date.DateUtil; +import com.ycwl.basic.mapper.FaceMapper; 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.req.FaceReqQuery; +import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery; import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; @@ -29,6 +32,8 @@ import java.util.Date; import java.util.List; import java.util.Objects; +import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME; + @Component @EnableScheduling @Slf4j @@ -45,6 +50,8 @@ public class FaceCleaner { private VideoMapper videoMapper; @Autowired private ScenicRepository scenicRepository; + @Autowired + private FaceMapper faceMapper; @Scheduled(cron = "0 0 4 * * ?") public void clean(){ @@ -56,6 +63,31 @@ public class FaceCleaner { }); } + @Scheduled(cron = "0 0 3 * * ?") + public void deleteExpireFace() { + ScenicReqQuery scenicQuery = new ScenicReqQuery(); + List scenicList = scenicMapper.list(scenicQuery); + scenicList.parallelStream().forEach(scenic -> { + ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenic.getId()); + Integer sampleStoreDay = scenicConfig.getSampleStoreDay(); + if (sampleStoreDay == null) { + log.info("当前景区{},人脸样本保存天数未设置,默认3天", scenic.getName()); + sampleStoreDay = 3; + } + FaceReqQuery req = new FaceReqQuery(); + req.setScenicId(scenic.getId()); + req.setUpdateEndTime(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -sampleStoreDay)); + List list = faceMapper.list(req); + list.forEach(face -> { + boolean result = faceService.deleteFaceSample(USER_FACE_DB_NAME+face.getScenicId(), face.getId().toString()); + if (result) { + faceMapper.deleteById(face.getId()); + } + }); + log.info("当前景区{},删除人脸样本{}个", scenic.getName(), list.size()); + }); + } + @Scheduled(cron = "0 0 3 * * ?") public void deleteNotBuySource(){ ScenicReqQuery scenicQuery = new ScenicReqQuery(); diff --git a/src/main/resources/mapper/FaceMapper.xml b/src/main/resources/mapper/FaceMapper.xml index 38f5b85..7848f42 100644 --- a/src/main/resources/mapper/FaceMapper.xml +++ b/src/main/resources/mapper/FaceMapper.xml @@ -30,11 +30,11 @@ update face set finished_journey = 1 where id = #{id} - delete from face where id = #{id} + update face set is_delete = 1 where id = #{id} - delete from face where id in ( + update face set is_delete = 1 where id in ( #{id} @@ -45,9 +45,13 @@ select id, scenic_id, member_id, face_url,score, match_sample_ids, first_match_rate, match_result from face + is_delete = 0 and member_id = #{memberId} + + and scenic_id = #{scenicId} + and match_sample_ids like concat('%', #{matchSampleIds}, '%') @@ -63,6 +67,12 @@ and create_at <= #{endTime} + + and update_at >= #{updateStartTime} + + + and update_at <= #{updateEndTime} + select id, scenic_id, member_id, face_url,score, match_sample_ids, first_match_rate, match_result, create_at, update_at from face - where member_id = #{userId} and scenic_id = #{scenicId} + where member_id = #{userId} and scenic_id = #{scenicId} and is_delete = 0 order by update_at desc limit 1 @@ -97,13 +107,13 @@