feat:(REQ-3560) 复制文件优化

This commit is contained in:
xudawei 2025-04-15 14:21:46 +08:00
parent b7e4ccd258
commit b81233ad4d
4 changed files with 27 additions and 39 deletions

View File

@ -65,6 +65,7 @@ public enum CodeEnum implements EnumBase<Integer> {
URL_BUCKET_NAME_KEY_ALL_EMPTY(508, "url-bucketName-key同时为空"),
SIGN_URL_DOWNLOAD_FILEKEYS_EXCEEDS_MAXSIZE(509, "fileKeys exceeds the maximum size"),
FILE_TARGET_APP_IS_EMPTY(510, "target app is empty"),
CHANNELCODE_DIFF(511, "云通道不同"),
;
private final Integer code;

View File

@ -52,37 +52,11 @@ public class ServerFileBatchCopyObjectRequest {
@NotBlank(message = "唯一性标识不能为空")
private String fileUuid;
/**
* 目标桶
* 如果目标桶为空,则默认取源桶
*/
private String targetBucketName;
/**
* 目标目录
* 如果目标目录为空,则默认在源目录同级
*/
private String targetDict;
/**
* 目标通道
* 如果目标通道为空,则默认源通道
*/
private String targetChannelCode;
/**
* 文件名称(包含后缀)
*/
private String targetFileName;
/**
* 桶名称
*/
private String srcBucketName;
/**
* 桶文件路径(目录+文件)
*/
private String srcBucketKey;
/**
* 文件对象key
*/

View File

@ -73,14 +73,30 @@ public class CopyObjectCloudDto {
public static CopyObjectCloudDto create(FileCopyObjectDto fileCopyObjectRequest, File file, FileBusinessScene fileBusinessScene,FileBusinessScene targetFileBiz) {
// 入参中有通道则优先取入参否则取源通道
String targetChannelCode = StringUtils.isBlank(fileCopyObjectRequest.getTargetChannelCode()) ? fileBusinessScene.getChannelCode() : fileCopyObjectRequest.getTargetChannelCode();
String targetBucketName = StringUtils.isBlank(fileCopyObjectRequest.getTargetBucketName()) ? fileBusinessScene.getBucketName() : fileCopyObjectRequest.getTargetBucketName();
String targetBucketDict = StringUtils.isBlank(fileCopyObjectRequest.getTargetDict()) ? fileBusinessScene.getDirectory() : fileCopyObjectRequest.getTargetDict();
String fileName = StringUtils.isBlank(fileCopyObjectRequest.getTargetFileName()) ? file.getFileName() : fileCopyObjectRequest.getTargetFileName();
String appCode = (Objects.isNull(targetFileBiz) || StringUtils.isBlank(targetFileBiz.getAppCode())) ? fileBusinessScene.getAppCode() : targetFileBiz.getAppCode();
String appChannelBucketNo = (Objects.isNull(targetFileBiz) || StringUtils.isBlank(targetFileBiz.getAppChannelBucketNo())) ? fileBusinessScene.getAppChannelBucketNo() : targetFileBiz.getAppChannelBucketNo();
String targetChannelCode = fileBusinessScene.getChannelCode();
String targetBucketName = fileBusinessScene.getBucketName();
String targetBucketDict = fileBusinessScene.getDirectory();
String appCode = fileBusinessScene.getAppCode();
String appChannelBucketNo = fileBusinessScene.getAppChannelBucketNo();
if (Objects.nonNull(targetFileBiz)) {
if (StringUtils.isNotBlank(targetFileBiz.getChannelCode())) {
targetChannelCode = targetFileBiz.getChannelCode();
}
if (StringUtils.isNotBlank(targetFileBiz.getBucketName())) {
targetBucketName = targetFileBiz.getBucketName();
}
if (StringUtils.isNotBlank(targetFileBiz.getDirectory())) {
targetBucketDict = targetFileBiz.getDirectory();
}
if (StringUtils.isNotBlank(targetFileBiz.getAppCode())) {
appCode = targetFileBiz.getAppCode();
}
if (StringUtils.isNotBlank(targetFileBiz.getAppChannelBucketNo())) {
appChannelBucketNo = targetFileBiz.getAppChannelBucketNo();
}
}
String fileName = StringUtils.isNotBlank(fileCopyObjectRequest.getTargetFileName()) ? fileCopyObjectRequest.getTargetFileName() : file.getFileName();
String uuid = Utility.getUUID();
return CopyObjectCloudDto.builder()

View File

@ -357,13 +357,10 @@ public class FileManagerImpl implements FileManager {
*/
@Override
public Boolean copyObjects(CopyObjectCloudDto dto) {
//不同的通道不能复制
BizException.error(Objects.equals(dto.getSrcChannelCode(), dto.getTargetChannelCode()), CodeEnum.CHANNELCODE_DIFF);
// 相同的通道-对象复制
if (dto.getSrcChannelCode().equals(dto.getTargetChannelCode())) {
return this.copyObjectWhenSameChannel(dto);
}
// 不同的通道通过url上传至云(通过url复制至云)
String url = this.uploadByUrl(dto.getTargetBucketName(), dto.getTargetKey(), dto.getTargetFileName(), dto.getSrcUrl(), dto.getTargetChannelCode());
return StringUtils.isBlank(url) ? false : true;
return this.copyObjectWhenSameChannel(dto);
}
/**