代码提交
This commit is contained in:
parent
fbb207077e
commit
27a36ce938
@ -23,7 +23,9 @@ import com.amazonaws.services.s3.model.ObjectMetadata;
|
|||||||
import com.amazonaws.services.s3.model.S3Object;
|
import com.amazonaws.services.s3.model.S3Object;
|
||||||
import com.amazonaws.services.s3.model.S3ObjectInputStream;
|
import com.amazonaws.services.s3.model.S3ObjectInputStream;
|
||||||
import com.amazonaws.util.IOUtils;
|
import com.amazonaws.util.IOUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -316,7 +318,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int countFiles(String id) {
|
public int countFiles(String id) {
|
||||||
int count = tsFilesMapper.countFiles(id);
|
int count = tsFilesMapper.countFiles(id);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -930,6 +932,8 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
|
|||||||
public String deleteTsFilesByIds(List<String> dataset, String type) {
|
public String deleteTsFilesByIds(List<String> dataset, String type) {
|
||||||
List<TsFiles> filesList = tsFilesMapper.selectBatchIds(dataset);
|
List<TsFiles> filesList = tsFilesMapper.selectBatchIds(dataset);
|
||||||
|
|
||||||
|
//新增一个查询 判断下面有没有备份路径 如果有就不能删除
|
||||||
|
|
||||||
//todo 删除的时候成功以后 删除redis
|
//todo 删除的时候成功以后 删除redis
|
||||||
for (int page = 1; page <= 5; page++) {
|
for (int page = 1; page <= 5; page++) {
|
||||||
String redisKey = "tsfiles_" + filesList.get(0).getTaskId() + "_" + filesList.get(0).getNodeId() + "_parentId" + filesList.get(0).getParentId() + "_page_" + page;
|
String redisKey = "tsfiles_" + filesList.get(0).getTaskId() + "_" + filesList.get(0).getNodeId() + "_parentId" + filesList.get(0).getParentId() + "_page_" + page;
|
||||||
@ -939,7 +943,7 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
|
|||||||
|
|
||||||
|
|
||||||
int LocalSuccessCount = 0, LocalFailCount = 0, Localtotal = CollUtil.size(dataset);
|
int LocalSuccessCount = 0, LocalFailCount = 0, Localtotal = CollUtil.size(dataset);
|
||||||
//Todo 最直接的办法 循环出来 一条一条删除
|
//Todo 最直接的办法 循环出来 一条一条删除 如果是文件夹 要递归下面所有的文件和文件夹进行删除
|
||||||
for (TsFiles files : filesList) {
|
for (TsFiles files : filesList) {
|
||||||
|
|
||||||
|
|
||||||
@ -988,16 +992,14 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (totalCount > 1) {
|
if (totalCount > 1) {
|
||||||
//return ResponseResult.success("批量删除 " + totalCount + " 个, 删除成功 " + deleteSuccessCount + " 个, 失败 " + deleteFailCount + " 个.");
|
|
||||||
LOGGER.error("批量删除 " + totalCount + " 个, 删除成功 " + deleteSuccessCount + " 个, 失败 " + deleteFailCount + " 个.");
|
LOGGER.error("批量删除 " + totalCount + " 个, 删除成功 " + deleteSuccessCount + " 个, 失败 " + deleteFailCount + " 个.");
|
||||||
} else {
|
} else {
|
||||||
//return totalCount == deleteSuccessCount ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败");
|
|
||||||
LOGGER.error("批量删除 " + totalCount + " 个, 删除成功 " + deleteSuccessCount + " 个, 失败 " + deleteFailCount + " 个.");
|
LOGGER.error("批量删除 " + totalCount + " 个, 删除成功 " + deleteSuccessCount + " 个, 失败 " + deleteFailCount + " 个.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果是1 说明成功删除
|
//如果是1 说明成功删除
|
||||||
if (deleteSuccessCount >= 1) {
|
if (deleteSuccessCount >= 1) {
|
||||||
int valueDelete = deleteFolder(files.getId(), type);
|
int valueDelete = deleteFolderAndSubFiles(files.getId(), type);
|
||||||
if (valueDelete > 0) {
|
if (valueDelete > 0) {
|
||||||
LocalSuccessCount = valueDelete;
|
LocalSuccessCount = valueDelete;
|
||||||
LOGGER.info("表结构成功删除");
|
LOGGER.info("表结构成功删除");
|
||||||
@ -1076,73 +1078,122 @@ public class TsFilesServiceImpl extends ServiceImpl<TsFilesMapper, TsFiles> impl
|
|||||||
return "Local批量删除 " + Localtotal + " 个, 删除成功 " + LocalSuccessCount + " 个, 失败 " + LocalFailCount + " 个.";
|
return "Local批量删除 " + Localtotal + " 个, 删除成功 " + LocalSuccessCount + " 个, 失败 " + LocalFailCount + " 个.";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调用删除方法并返回删除数量
|
// // 调用删除方法并返回删除数量
|
||||||
public int deleteFolder(String folderId, String type) {
|
// public int deleteFolder(String folderId, String type) {
|
||||||
return deleteFolderAndSubFiles(folderId, type); // 返回删除的记录数量
|
// return deleteFolderAndSubFiles(folderId, type); // 返回删除的记录数量
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 递归删除文件夹及其子文件,并返回删除的记录数量
|
// 递归删除文件夹及其子文件,并返回删除的记录数量
|
||||||
public int deleteFolderAndSubFiles(String folderId, String type) {
|
public int deleteFolderAndSubFiles(String folderId, String type) {
|
||||||
int deletedCount = 0; // 记录删除的数量
|
int deletedCount = 0; // 记录删除的数量
|
||||||
|
|
||||||
// 查询该文件夹下的所有子文件
|
|
||||||
QueryWrapper<TsFiles> queryWrapper = new QueryWrapper<>();
|
//判断是删除本地还是minio 先通过父ID修改所有的 然后通过父ID查询下面所有的文件夹 进行递归
|
||||||
queryWrapper.eq("parent_id", folderId); // 根据父ID查询所有子文件
|
if ("local".equals(type)) {
|
||||||
List<TsFiles> subFiles = tsFilesMapper.selectList(queryWrapper);
|
//如果是本地 先先吧所有的work_path修改成空 然后删除所有work_path和backup_path为空的数据
|
||||||
|
LambdaUpdateWrapper<TsFiles> updateWrapper1 = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper1.eq(TsFiles::getParentId, folderId).set(TsFiles::getWorkPath, "");
|
||||||
|
int updatedCount = tsFilesMapper.update(null, updateWrapper1);
|
||||||
|
LOGGER.info("本地更新操作:将 {} 条记录的 work_path 设置为空", updatedCount);
|
||||||
|
|
||||||
|
|
||||||
|
// 批量删除备份路径和工作路径为空的数据 条件是父ID等于folderId
|
||||||
|
LambdaQueryWrapper<TsFiles> deleteWrapper = new LambdaQueryWrapper<>();
|
||||||
|
deleteWrapper.eq(TsFiles::getParentId, folderId)
|
||||||
|
.and(wrapper -> wrapper.isNull(TsFiles::getBackupPath).or().eq(TsFiles::getBackupPath, ""))
|
||||||
|
.and(wrapper -> wrapper.isNull(TsFiles::getWorkPath).or().eq(TsFiles::getWorkPath, ""));
|
||||||
|
int deletedCounts = tsFilesMapper.delete(deleteWrapper);
|
||||||
|
LOGGER.info("本地删除操作:成功删除了 {} 条 work_path 和 backup_path 都为空的记录", deletedCounts);
|
||||||
|
deletedCount += deletedCounts;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//删除minio的时候判断本地路径是否为空 如果为空直接删除 如果不为空把BackupPath修改成空
|
||||||
|
//如果是minio 先先吧所有的backup_path修改成空 然后删除所有work_path和backup_path为空的数据
|
||||||
|
LambdaUpdateWrapper<TsFiles> updateWrapper1 = new LambdaUpdateWrapper<>();
|
||||||
|
updateWrapper1.eq(TsFiles::getParentId, folderId).set(TsFiles::getBackupPath, "");
|
||||||
|
int updatedCount = tsFilesMapper.update(null, updateWrapper1);
|
||||||
|
LOGGER.info("minio更新操作:将 {} 条记录的 work_path 设置为空", updatedCount);
|
||||||
|
|
||||||
|
|
||||||
|
// 批量删除备份路径和工作路径为空的数据 条件是父ID等于folderId
|
||||||
|
LambdaQueryWrapper<TsFiles> deleteWrapper = new LambdaQueryWrapper<>();
|
||||||
|
deleteWrapper.eq(TsFiles::getParentId, folderId)
|
||||||
|
.and(wrapper -> wrapper.isNull(TsFiles::getBackupPath).or().eq(TsFiles::getBackupPath, ""))
|
||||||
|
.and(wrapper -> wrapper.isNull(TsFiles::getWorkPath).or().eq(TsFiles::getWorkPath, ""));
|
||||||
|
int deletedCounts = tsFilesMapper.delete(deleteWrapper);
|
||||||
|
LOGGER.info("minio删除操作:成功删除了 {} 条 work_path 和 backup_path 都为空的记录", deletedCounts);
|
||||||
|
deletedCount += deletedCounts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查询该文件夹下的所有子文件夹
|
||||||
|
QueryWrapper<TsFiles> queryWrapperFolder = new QueryWrapper<>();
|
||||||
|
queryWrapperFolder.eq("parent_id", folderId); // 根据父ID查询所有子文件
|
||||||
|
queryWrapperFolder.eq("is_file", "FOLDER");//查询所有的文件夹
|
||||||
|
List<TsFiles> subFolder = tsFilesMapper.selectList(queryWrapperFolder);
|
||||||
|
if (subFolder.size() > 0) {
|
||||||
|
for (TsFiles subFile : subFolder) {
|
||||||
|
deletedCount += deleteFolderAndSubFiles(subFile.getId(), type); // 累加删除数量
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 递归删除子文件
|
// 递归删除子文件
|
||||||
for (TsFiles subFile : subFiles) {
|
// for (TsFiles subFile : subFiles) {
|
||||||
// 递归调用删除子文件的逻辑
|
// // 递归调用删除子文件的逻辑
|
||||||
deletedCount += deleteFolderAndSubFiles(subFile.getId(), type); // 累加删除数量
|
// deletedCount += deleteFolderAndSubFiles(subFile.getId(), type); // 累加删除数量
|
||||||
|
//
|
||||||
|
// //判断是删除本地还是minio
|
||||||
|
// if ("local".equals(type)) {
|
||||||
|
// //删除本地的时候判断minio路径是否为空 如果为空直接删除 如果不为空把workPath修改成空
|
||||||
|
// if (StringUtils.isNotEmpty(subFile.getBackupPath())) {
|
||||||
|
// subFile.setWorkPath("");
|
||||||
|
// tsFilesMapper.updateById(subFile);
|
||||||
|
// } else {
|
||||||
|
// // 删除子文件记录(从数据库中删除)
|
||||||
|
// tsFilesMapper.deleteById(subFile.getId());
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// } else {
|
||||||
|
// //删除minio的时候判断本地路径是否为空 如果为空直接删除 如果不为空把BackupPath修改成空
|
||||||
|
// if (StringUtils.isNotEmpty(subFile.getWorkPath())) {
|
||||||
|
// subFile.setBackupPath("");
|
||||||
|
// tsFilesMapper.updateById(subFile);
|
||||||
|
// } else {
|
||||||
|
// // 删除子文件记录(从数据库中删除)
|
||||||
|
// tsFilesMapper.deleteById(subFile.getId());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// deletedCount++; // 每删除一个文件,数量加1
|
||||||
|
// }
|
||||||
|
|
||||||
|
//删除修改自身
|
||||||
|
TsFiles tsFilesData = tsFilesMapper.selectById(folderId);
|
||||||
|
if (tsFilesData != null) {
|
||||||
//判断是删除本地还是minio
|
//判断是删除本地还是minio
|
||||||
if ("local".equals(type)) {
|
if ("local".equals(type)) {
|
||||||
//删除本地的时候判断minio路径是否为空 如果为空直接删除 如果不为空把workPath修改成空
|
//删除本地的时候判断minio路径是否为空 如果为空直接删除 如果不为空把workPath修改成空
|
||||||
if (StringUtils.isNotEmpty(subFile.getBackupPath())) {
|
if (StringUtils.isNotEmpty(tsFilesData.getBackupPath())) {
|
||||||
subFile.setWorkPath("");
|
tsFilesData.setWorkPath("");
|
||||||
tsFilesMapper.updateById(subFile);
|
tsFilesMapper.updateById(tsFilesData);
|
||||||
} else {
|
} else {
|
||||||
// 删除子文件记录(从数据库中删除)
|
// 删除子文件记录(从数据库中删除)
|
||||||
tsFilesMapper.deleteById(subFile.getId());
|
tsFilesMapper.deleteById(tsFilesData.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//删除minio的时候判断本地路径是否为空 如果为空直接删除 如果不为空把BackupPath修改成空
|
//删除minio的时候判断本地路径是否为空 如果为空直接删除 如果不为空把BackupPath修改成空
|
||||||
if (StringUtils.isNotEmpty(subFile.getWorkPath())) {
|
if (StringUtils.isNotEmpty(tsFilesData.getWorkPath())) {
|
||||||
subFile.setBackupPath("");
|
tsFilesData.setBackupPath("");
|
||||||
tsFilesMapper.updateById(subFile);
|
tsFilesMapper.updateById(tsFilesData);
|
||||||
} else {
|
} else {
|
||||||
// 删除子文件记录(从数据库中删除)
|
// 删除子文件记录(从数据库中删除)
|
||||||
tsFilesMapper.deleteById(subFile.getId());
|
tsFilesMapper.deleteById(tsFilesData.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
deletedCount++; // 每删除一个文件,数量加1
|
deletedCount++; // 删除文件夹本身,数量加1
|
||||||
}
|
}
|
||||||
|
|
||||||
//删除修改自身
|
|
||||||
TsFiles tsFilesData = tsFilesMapper.selectById(folderId);
|
|
||||||
//判断是删除本地还是minio
|
|
||||||
if ("local".equals(type)) {
|
|
||||||
//删除本地的时候判断minio路径是否为空 如果为空直接删除 如果不为空把workPath修改成空
|
|
||||||
if (StringUtils.isNotEmpty(tsFilesData.getBackupPath())) {
|
|
||||||
tsFilesData.setWorkPath("");
|
|
||||||
tsFilesMapper.updateById(tsFilesData);
|
|
||||||
} else {
|
|
||||||
// 删除子文件记录(从数据库中删除)
|
|
||||||
tsFilesMapper.deleteById(tsFilesData.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
//删除minio的时候判断本地路径是否为空 如果为空直接删除 如果不为空把BackupPath修改成空
|
|
||||||
if (StringUtils.isNotEmpty(tsFilesData.getWorkPath())) {
|
|
||||||
tsFilesData.setBackupPath("");
|
|
||||||
tsFilesMapper.updateById(tsFilesData);
|
|
||||||
} else {
|
|
||||||
// 删除子文件记录(从数据库中删除)
|
|
||||||
tsFilesMapper.deleteById(tsFilesData.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
deletedCount++; // 删除文件夹本身,数量加1
|
|
||||||
|
|
||||||
return deletedCount; // 返回删除的数量
|
return deletedCount; // 返回删除的数量
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user