feat:(REQ-3560) 复制文件优化
This commit is contained in:
parent
b7e4ccd258
commit
b81233ad4d
@ -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;
|
||||
|
||||
@ -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
|
||||
*/
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user