diff --git a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java index 4d19a04..be96ad5 100644 --- a/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java +++ b/oss-common/src/main/java/cn/axzo/oss/common/enums/CodeEnum.java @@ -65,6 +65,7 @@ public enum CodeEnum implements EnumBase { 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; diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/copyobject/ServerFileBatchCopyObjectRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/copyobject/ServerFileBatchCopyObjectRequest.java index b4e4ac1..8cb2466 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/copyobject/ServerFileBatchCopyObjectRequest.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/copyobject/ServerFileBatchCopyObjectRequest.java @@ -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 */ diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/CopyObjectCloudDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/CopyObjectCloudDto.java index fd01b6a..a697a0e 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/CopyObjectCloudDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/CopyObjectCloudDto.java @@ -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() diff --git a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java index d09bd6f..077c705 100644 --- a/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java +++ b/oss-manager/src/main/java/cn/axzo/oss/manager/impl/FileManagerImpl.java @@ -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); } /**