feat:(REQ-3540) 文件复制接口-优化
This commit is contained in:
parent
10e746abd4
commit
503826f5ca
@ -233,7 +233,7 @@ public class ServerFileController implements ServerFileServiceApi {
|
||||
/**
|
||||
* 复制文件
|
||||
*/
|
||||
public CommonResponse<ServerFileBatchCopyObjectResponse> batchCopyObject(ServerFileBatchCopyObjectRequest request) {
|
||||
public CommonResponse<ServerFileBatchCopyObjectResponse> batchCopyObject(@Valid @RequestBody ServerFileBatchCopyObjectRequest request) {
|
||||
AssertUtil.isFalse(Objects.isNull(request) || CollectionUtils.isEmpty(request.getCopyObjects()), "入参为空");
|
||||
List<FileCopyObjectDto> fileCopyObjectDtos = BeanUtil.copyToList(request.getCopyObjects(), FileCopyObjectDto.class);
|
||||
List<FileCopyObjectResponse> fileCopyObjectResponses = fileService.batchCopyObject(fileCopyObjectDtos, request.getAppCode());
|
||||
|
||||
@ -141,6 +141,6 @@ public interface ServerFileServiceApi {
|
||||
* 复制文件
|
||||
*/
|
||||
@RequestMapping(value = "/api/server/batchCopyObject", method = RequestMethod.POST)
|
||||
CommonResponse<ServerFileBatchCopyObjectResponse> batchCopyObject(ServerFileBatchCopyObjectRequest request);
|
||||
CommonResponse<ServerFileBatchCopyObjectResponse> batchCopyObject(@Valid @RequestBody ServerFileBatchCopyObjectRequest request);
|
||||
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ public class ServerFileBatchCopyObjectRequest {
|
||||
*/
|
||||
private String srcBucketName;
|
||||
/**
|
||||
* 桶文件目录
|
||||
* 桶文件路径(目录+文件)
|
||||
*/
|
||||
private String srcBucketKey;
|
||||
/**
|
||||
|
||||
@ -27,26 +27,39 @@ public class ServerFileBatchCopyObjectResponse {
|
||||
@Builder
|
||||
public static class ServerFileCopyObjectResponse {
|
||||
/**
|
||||
* 与入参中的id一致
|
||||
* 唯一标识,没有唯一标识,可以与fileKey一致
|
||||
*/
|
||||
private String id;
|
||||
private String fileUuid;
|
||||
|
||||
/**
|
||||
* 原文件的fileKey
|
||||
* 目标桶
|
||||
* 如果目标桶为空,则默认取源桶
|
||||
*/
|
||||
private String oldFileKey;
|
||||
private String targetFileKey;
|
||||
|
||||
/**
|
||||
* 原文件的url
|
||||
* 目标通道
|
||||
* 如果目标通道为空,则默认源通道
|
||||
*/
|
||||
private String oldFileUrl;
|
||||
private String targetChannelCode;
|
||||
|
||||
/**
|
||||
* 新文件的filekey
|
||||
* 桶名称
|
||||
*/
|
||||
private String newFileKey;
|
||||
private String srcBucketName;
|
||||
/**
|
||||
* 桶文件目录
|
||||
*/
|
||||
private String srcBucketDict;
|
||||
/**
|
||||
* 文件对象key
|
||||
*/
|
||||
private String srcFileKey;
|
||||
|
||||
private String newUrl;
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String srcFileName;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -42,6 +42,12 @@ public class CopyObjectCloudDto {
|
||||
* 目的桶名称
|
||||
*/
|
||||
private String targetBucketName;
|
||||
|
||||
/**
|
||||
* 目的桶目录
|
||||
*/
|
||||
private String targetBucketDict;
|
||||
|
||||
/**
|
||||
* 目的桶key(三方的桶上的目录+文件名称)
|
||||
*/
|
||||
@ -53,7 +59,7 @@ public class CopyObjectCloudDto {
|
||||
private String targetKey;
|
||||
private String targetChannelCode;
|
||||
|
||||
private String fileName;
|
||||
private String targetFileName;
|
||||
|
||||
private File file;
|
||||
private String fileUuid;
|
||||
@ -72,10 +78,11 @@ public class CopyObjectCloudDto {
|
||||
.srcBucketKey(Utility.generateFileKey(file.getDirectory(), file.getFileUuid(), file.getFileFormat()))
|
||||
.srcChannelCode(file.getChannelCode())
|
||||
.targetBucketName(targetBucketName)
|
||||
.targetBucketDict(targetBucketDict)
|
||||
.targetBucketKey(Utility.generateFileKey(targetBucketDict, uuid, file.getFileFormat()))
|
||||
.targetKey(uuid)
|
||||
.targetChannelCode(targetChannelCode)
|
||||
.fileName(fileName)
|
||||
.targetFileName(fileName)
|
||||
.file(file)
|
||||
.fileUuid(fileCopyObjectRequest.getFileUuid())
|
||||
.build();
|
||||
|
||||
@ -5,9 +5,7 @@ import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@ -40,20 +40,20 @@ public class FileCopyObjectResponse {
|
||||
/**
|
||||
* 桶名称
|
||||
*/
|
||||
private String bucketName;
|
||||
private String srcBucketName;
|
||||
/**
|
||||
* 桶文件目录
|
||||
*/
|
||||
private String bucketDict;
|
||||
private String srcBucketDict;
|
||||
/**
|
||||
* 文件对象key
|
||||
*/
|
||||
private String fileKey;
|
||||
private String srcFileKey;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
private String srcFileName;
|
||||
|
||||
public static FileCopyObjectResponse create(CopyObjectCloudDto item) {
|
||||
return FileCopyObjectResponse.builder()
|
||||
@ -61,10 +61,10 @@ public class FileCopyObjectResponse {
|
||||
.targetFileKey(item.getTargetKey())
|
||||
.targetChannelCode(item.getTargetChannelCode())
|
||||
// .targetDownloadUrl(this.fileManager.fetchDownloadUrl(item.getFile().getb))
|
||||
.bucketName(item.getFile().getBucketName())
|
||||
.bucketDict(item.getFile().getDirectory())
|
||||
.fileKey(item.getFile().getFileUuid())
|
||||
.fileName(item.getFileName())
|
||||
.srcBucketName(item.getFile().getBucketName())
|
||||
.srcBucketDict(item.getFile().getDirectory())
|
||||
.srcFileKey(item.getFile().getFileUuid())
|
||||
.srcFileName(item.getTargetFileName())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@ -357,7 +357,7 @@ public class FileManagerImpl implements FileManager {
|
||||
return this.copyObjectWhenSameChannel(dto);
|
||||
}
|
||||
// 不同的通道,通过url上传至云(通过url复制至云)
|
||||
String url = this.uploadByUrl(dto.getTargetBucketName(), dto.getTargetKey(), dto.getFileName(), dto.getSrcUrl(), dto.getTargetChannelCode());
|
||||
String url = this.uploadByUrl(dto.getTargetBucketName(), dto.getTargetKey(), dto.getTargetFileName(), dto.getSrcUrl(), dto.getTargetChannelCode());
|
||||
return StringUtils.isBlank(url) ? false : true;
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ public class FileManagerImpl implements FileManager {
|
||||
ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(dto.getSrcChannelCode());
|
||||
switch (typeEnum) {
|
||||
case OBS:// 华为云
|
||||
CopyObjectResult huaweiResult = huaWeiCloudService.copyObject(dto.getSrcBucketName(), dto.getSrcBucketKey(), dto.getTargetBucketName(), dto.getTargetKey());
|
||||
CopyObjectResult huaweiResult = huaWeiCloudService.copyObject(dto.getSrcBucketName(), dto.getSrcBucketKey(), dto.getTargetBucketName(), dto.getTargetBucketKey());
|
||||
return Objects.isNull(huaweiResult) ? false : true;
|
||||
case OSS:// 阿里云
|
||||
com.aliyun.oss.model.CopyObjectResult aliResult = aliOssService.copyObject(dto.getSrcBucketName(), dto.getSrcBucketKey(), dto.getTargetBucketName(), dto.getTargetKey());
|
||||
|
||||
@ -1306,7 +1306,7 @@ public class FileServiceImpl implements FileService {
|
||||
ossFile.setAppCode(item.getFile().getAppCode());
|
||||
ossFile.setChannelCode(item.getTargetChannelCode());
|
||||
ossFile.setBucketName(item.getTargetBucketName());
|
||||
ossFile.setDirectory(item.getTargetBucketKey());
|
||||
ossFile.setDirectory(item.getTargetBucketDict());
|
||||
ossFile.setStorageUnit(item.getFile().getStorageUnit());
|
||||
ossFile.setStorageSize(item.getFile().getStorageSize());
|
||||
ossFile.setFileFormat(item.getFile().getFileFormat());
|
||||
@ -1314,7 +1314,7 @@ public class FileServiceImpl implements FileService {
|
||||
ossFile.setFileUrl(this.fileManager.fetchDownloadUrl(item.getTargetBucketName(), Utility.generateFileKey(item.getTargetBucketKey(), item.getTargetKey(), item.getFile().getFileFormat()), item.getTargetChannelCode()));
|
||||
ossFile.setUrlMd5(Utility.getMd5(ossFile.getFileUrl()));
|
||||
ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode());
|
||||
ossFile.setFileName(item.getFileName());
|
||||
ossFile.setFileName(item.getTargetFileName());
|
||||
ossFile.setFileMd5(Utility.getMd5(ossFile.getFileUrl()));
|
||||
return ossFile;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user