From 50a7c2e9c485a44f47b531b2b992589439c47db3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 17 Mar 2025 18:36:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E6=95=B0=E6=8D=AE=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=99=AF=E5=8C=BA=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ycwl/basic/task/FaceCleaner.java | 72 +++++++++++-------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/ycwl/basic/task/FaceCleaner.java b/src/main/java/com/ycwl/basic/task/FaceCleaner.java index b905bdf..80c2113 100644 --- a/src/main/java/com/ycwl/basic/task/FaceCleaner.java +++ b/src/main/java/com/ycwl/basic/task/FaceCleaner.java @@ -1,6 +1,8 @@ package com.ycwl.basic.task; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.ycwl.basic.constant.StorageConstant; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.ScenicMapper; @@ -31,6 +33,7 @@ import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME; @@ -192,40 +195,49 @@ public class FaceCleaner { private void cleanSourceOss() { log.info("开始清理源视频素材文件"); List list = sourceMapper.list(new SourceReqQuery()); - IStorageAdapter adapter = StorageFactory.use("assets-ext"); - List fileObjectList = adapter.listDir("video-source"); - fileObjectList.parallelStream().forEach(fileObject -> { - if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getVideoUrl())).noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){ - log.info("删除源视频素材文件:{}", fileObject); - adapter.deleteFile(fileObject.getFullPath()); - } else { - log.info("源视频素材文件存在关系:{},未删除", fileObject); - } - }); - log.info("开始清理源图片素材文件"); - IStorageAdapter imageAdapter = StorageFactory.use("faces"); - List imageFileObjectList = imageAdapter.listDir("user-photo"); - imageFileObjectList.parallelStream().forEach(fileObject -> { - if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getUrl())).noneMatch(videoRespVO -> videoRespVO.getUrl().contains(fileObject.getFullPath()))){ - log.info("删除图片文件:{}", fileObject); - imageAdapter.deleteFile(fileObject.getFullPath()); - } else { - log.info("图片文件存在关系:{},未删除", fileObject); - } + scenicMapper.list(new ScenicReqQuery()).forEach(scenic -> { + ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenic.getId()); + IStorageAdapter adapter = StorageFactory.get(scenicConfig.getStoreType()); + adapter.loadConfig(JSONObject.parseObject(scenicConfig.getStoreConfigJson(), Map.class)); + log.info("开始清理视频文件"); + List fileObjectList = adapter.listDir(StorageConstant.VIDEO_PIECE_PATH); + fileObjectList.parallelStream().forEach(fileObject -> { + if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getVideoUrl())).noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){ + log.info("删除文件:{}", fileObject); + adapter.deleteFile(fileObject.getFullPath()); + } else { + log.info("文件存在关系:{},未删除", fileObject); + } + }); + log.info("开始清理图片文件"); + fileObjectList = adapter.listDir(StorageConstant.PHOTO_PATH); + fileObjectList.parallelStream().forEach(fileObject -> { + if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getUrl())).noneMatch(videoRespVO -> videoRespVO.getUrl().contains(fileObject.getFullPath()))){ + log.info("删除文件:{}", fileObject); + adapter.deleteFile(fileObject.getFullPath()); + } else { + log.info("文件存在关系:{},未删除", fileObject); + } + }); }); } private void cleanVideoOss() { log.info("开始清理视频文件"); - List videoRespVOS = videoMapper.list(new VideoReqQuery()); - IStorageAdapter adapter = StorageFactory.use("video"); - List fileObjectList = adapter.listDir(""); - fileObjectList.parallelStream().forEach(fileObject -> { - if (videoRespVOS.parallelStream().noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){ - log.info("删除视频文件:{}", fileObject); - adapter.deleteFile(fileObject.getFullPath()); - } else { - log.info("视频文件存在关系:{},未删除", fileObject); - } + List list = videoMapper.list(new VideoReqQuery()); + scenicMapper.list(new ScenicReqQuery()).forEach(scenic -> { + ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenic.getId()); + IStorageAdapter adapter = StorageFactory.get(scenicConfig.getStoreType()); + adapter.loadConfig(JSONObject.parseObject(scenicConfig.getStoreConfigJson(), Map.class)); + log.info("开始清理视频文件"); + List fileObjectList = adapter.listDir(StorageConstant.VLOG_PATH); + fileObjectList.parallelStream().forEach(fileObject -> { + if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getVideoUrl())).noneMatch(videoRespVO -> videoRespVO.getVideoUrl().contains(fileObject.getFullPath()))){ + log.info("删除文件:{}", fileObject); + adapter.deleteFile(fileObject.getFullPath()); + } else { + log.info("文件存在关系:{},未删除", fileObject); + } + }); }); } }