From d245d09837e20c1cd0931bba49771aa4b936cec3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 13 Jun 2025 15:01:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=B7=B3=E8=BF=87=E6=99=AF?= =?UTF-8?q?=E5=8C=BA=E6=96=87=E4=BB=B6=E5=88=A0=E9=99=A4=EF=BC=8C=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=E9=87=8D=E5=A4=8Dadapter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/task/FaceCleaner.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ycwl/basic/task/FaceCleaner.java b/src/main/java/com/ycwl/basic/task/FaceCleaner.java index 4e28ced..386b802 100644 --- a/src/main/java/com/ycwl/basic/task/FaceCleaner.java +++ b/src/main/java/com/ycwl/basic/task/FaceCleaner.java @@ -33,11 +33,13 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME; +import static com.ycwl.basic.constant.StorageConstant.VIID_FACE; @Component @EnableScheduling @@ -58,6 +60,7 @@ public class FaceCleaner { private FaceMapper faceMapper; @Autowired private ScenicService scenicService; + public static final List disableDeleteScenicIds = List.of("3955650120997015552"); @Scheduled(cron = "0 0 1 * * ?") public void deleteExpireSample(){ @@ -217,9 +220,9 @@ public class FaceCleaner { } private void cleanFaceSampleOss() { log.info("开始清理人脸文件"); - List faceSampleRespVOS = faceSampleMapper.list(new FaceSampleReqQuery()); + List list = faceSampleMapper.list(new FaceSampleReqQuery()); IStorageAdapter adapter = StorageFactory.use("faces"); - List fileObjectList = adapter.listDir("user-face"); + List fileObjectList = adapter.listDir(VIID_FACE); fileObjectList.parallelStream().forEach(fileObject -> { if (fileObject.getModifyTime() != null) { // 如果是一天以内修改的,则跳过 @@ -227,7 +230,7 @@ public class FaceCleaner { return; } } - if(faceSampleRespVOS.parallelStream().noneMatch(faceSampleRespVO -> faceSampleRespVO.getFaceUrl().contains(fileObject.getName()))){ + if(list.parallelStream().noneMatch(faceSampleRespVO -> faceSampleRespVO.getFaceUrl().contains(fileObject.getName()))){ log.info("删除人脸文件:{}", fileObject); adapter.deleteFile(fileObject.getFullPath()); } @@ -236,8 +239,20 @@ public class FaceCleaner { public void cleanSourceOss() { log.info("开始清理源视频素材文件"); List list = sourceMapper.list(new SourceReqQuery()); + ArrayList adapterIdentity = new ArrayList<>(); scenicMapper.list(new ScenicReqQuery()).forEach(scenic -> { + if (disableDeleteScenicIds.contains(scenic.getId().toString())) { + log.info("景区【{}】禁止删除文件,跳过!", scenic.getName()); + return; + } IStorageAdapter adapter = scenicService.getScenicStorageAdapter(scenic.getId()); + String identity = adapter.identity(); + if (!adapterIdentity.contains(identity)) { + log.info("因为Identity相同,跳过"); + adapterIdentity.add(identity); + } else { + return; + } log.info("开始清理视频文件"); List fileObjectList = adapter.listDir(StorageConstant.VIDEO_PIECE_PATH); fileObjectList.parallelStream().forEach(fileObject -> { @@ -275,8 +290,20 @@ public class FaceCleaner { public void cleanVideoOss() { log.info("开始清理视频文件"); List list = videoMapper.list(new VideoReqQuery()); + ArrayList adapterIdentity = new ArrayList<>(); scenicMapper.list(new ScenicReqQuery()).forEach(scenic -> { + if (disableDeleteScenicIds.contains(scenic.getId().toString())) { + log.info("景区【{}】禁止删除文件,跳过!", scenic.getName()); + return; + } IStorageAdapter adapter = scenicService.getScenicStorageAdapter(scenic.getId()); + String identity = adapter.identity(); + if (!adapterIdentity.contains(identity)) { + adapterIdentity.add(identity); + } else { + log.info("因为Identity相同,跳过"); + return; + } log.info("开始清理视频文件"); List fileObjectList = adapter.listDir(StorageConstant.VLOG_PATH); fileObjectList.parallelStream().forEach(fileObject -> {