From 2e92cf5c910d0feff4482c416c1ec089b5345033 Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Thu, 8 May 2025 17:21:00 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E8=84=B8=E7=9C=9F=E5=AE=9E=E5=88=A0?=
 =?UTF-8?q?=E9=99=A4=E3=80=81=E6=B8=85=E7=90=86=E9=80=BB=E8=BE=91=E4=BC=98?=
 =?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/com/ycwl/basic/mapper/FaceMapper.java    |  1 +
 .../java/com/ycwl/basic/task/FaceCleaner.java     | 15 +++++++++++----
 src/main/resources/mapper/FaceMapper.xml          |  5 ++++-
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ycwl/basic/mapper/FaceMapper.java b/src/main/java/com/ycwl/basic/mapper/FaceMapper.java
index 3af2ae1..51331ff 100644
--- a/src/main/java/com/ycwl/basic/mapper/FaceMapper.java
+++ b/src/main/java/com/ycwl/basic/mapper/FaceMapper.java
@@ -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);
 
diff --git a/src/main/java/com/ycwl/basic/task/FaceCleaner.java b/src/main/java/com/ycwl/basic/task/FaceCleaner.java
index 6bfebf9..6a2008e 100644
--- a/src/main/java/com/ycwl/basic/task/FaceCleaner.java
+++ b/src/main/java/com/ycwl/basic/task/FaceCleaner.java
@@ -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());
             });
+
         });
     }
 
diff --git a/src/main/resources/mapper/FaceMapper.xml b/src/main/resources/mapper/FaceMapper.xml
index 6168dff..8b33258 100644
--- a/src/main/resources/mapper/FaceMapper.xml
+++ b/src/main/resources/mapper/FaceMapper.xml
@@ -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>