You've already forked FrameTour-BE
refactor(storage): 简化存储适配器配置逻辑并移除降级机制
- 移除默认存储配置常量 DEFAULT_STORAGE - 简化 UploadStage 中的存储适配器获取逻辑,直接使用 StorageFactory.use() - 移除降级到默认存储的处理机制 - 在 PuzzleGenerateServiceImpl 中复用存储适配器实例 - 移除 SourceRepository 中的 StorageUnsupportedException 导入 - 移除 GoodsServiceImpl 中的 StorageType 枚举导入 - 移除 SourceServiceImpl 中的 ScenicService 依赖注入 - 移除 PrinterServiceImpl 中的复杂存储适配器配置逻辑 - 在 TaskTaskServiceImpl 中统一使用景点存储适配器 - 在 FaceCleaner 中添加新的存储清理逻辑,使用独立的图片存储适配器 - 添加 sourceImageUrlMap 和 sourceScenicIdMap 来优化文件清理逻辑
This commit is contained in:
@@ -34,7 +34,9 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME;
|
||||
@@ -226,6 +228,16 @@ public class FaceCleaner {
|
||||
public void cleanSourceOss() {
|
||||
log.info("开始清理源视频素材文件");
|
||||
List<SourceRespVO> list = sourceMapper.list(new SourceReqQuery());
|
||||
Map<Long, String> sourceImageUrlMap = new HashMap<>();
|
||||
Map<Long, Long> sourceScenicIdMap = new HashMap<>();
|
||||
list.forEach(item -> {
|
||||
if (item.getId() != null && item.getScenicId() != null) {
|
||||
sourceScenicIdMap.put(item.getId(), item.getScenicId());
|
||||
}
|
||||
if (item.getId() != null) {
|
||||
sourceImageUrlMap.put(item.getId(), item.getUrl());
|
||||
}
|
||||
});
|
||||
ArrayList<String> adapterIdentity = new ArrayList<>();
|
||||
ScenicReqQuery query = new ScenicReqQuery();
|
||||
query.setPageSize(1000);
|
||||
@@ -260,22 +272,45 @@ public class FaceCleaner {
|
||||
log.info("文件存在关系:{},未删除", fileObject);
|
||||
}
|
||||
});
|
||||
log.info("开始清理图片文件");
|
||||
fileObjectList = adapter.listDir(StorageConstant.PHOTO_PATH);
|
||||
fileObjectList.parallelStream().forEach(fileObject -> {
|
||||
if (fileObject.getModifyTime() != null) {
|
||||
// 如果是一天以内修改的,则跳过
|
||||
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) <= 1) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
log.info("开始清理图片文件");
|
||||
IStorageAdapter imageAdapter = StorageFactory.use();
|
||||
List<StorageFileObject> fileObjectList = imageAdapter.listDir(StorageConstant.PHOTO_PATH);
|
||||
fileObjectList.parallelStream().forEach(fileObject -> {
|
||||
if (fileObject.getModifyTime() != null) {
|
||||
// 如果是一天以内修改的,则跳过
|
||||
if (DateUtil.between(fileObject.getModifyTime(), new Date(), DateUnit.DAY) <= 1) {
|
||||
return;
|
||||
}
|
||||
if (list.parallelStream().filter(videoRespVO -> Objects.nonNull(videoRespVO.getUrl())).noneMatch(videoRespVO -> videoRespVO.getUrl().contains(fileObject.getName()))){
|
||||
log.info("删除文件:{}", fileObject);
|
||||
adapter.deleteFile(fileObject.getFullPath());
|
||||
} else {
|
||||
log.info("文件存在关系:{},未删除", fileObject);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
String name = fileObject.getName();
|
||||
if (name == null) {
|
||||
return;
|
||||
}
|
||||
int underscoreIndex = name.indexOf('_');
|
||||
if (underscoreIndex <= 0) {
|
||||
return;
|
||||
}
|
||||
Long sourceId;
|
||||
try {
|
||||
sourceId = Long.parseLong(name.substring(0, underscoreIndex));
|
||||
} catch (NumberFormatException e) {
|
||||
return;
|
||||
}
|
||||
Long scenicId = sourceScenicIdMap.get(sourceId);
|
||||
if (scenicId == null || disableDeleteScenicIds.contains(scenicId.toString())) {
|
||||
return;
|
||||
}
|
||||
|
||||
String imageUrl = sourceImageUrlMap.get(sourceId);
|
||||
if (imageUrl != null && imageUrl.contains(name)) {
|
||||
log.info("文件存在关系:{},未删除", fileObject);
|
||||
return;
|
||||
}
|
||||
log.info("删除文件:{}", fileObject);
|
||||
imageAdapter.deleteFile(fileObject.getFullPath());
|
||||
});
|
||||
}
|
||||
public void cleanVideoOss() {
|
||||
|
||||
Reference in New Issue
Block a user