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()), "入参为空");
|
AssertUtil.isFalse(Objects.isNull(request) || CollectionUtils.isEmpty(request.getCopyObjects()), "入参为空");
|
||||||
List<FileCopyObjectDto> fileCopyObjectDtos = BeanUtil.copyToList(request.getCopyObjects(), FileCopyObjectDto.class);
|
List<FileCopyObjectDto> fileCopyObjectDtos = BeanUtil.copyToList(request.getCopyObjects(), FileCopyObjectDto.class);
|
||||||
List<FileCopyObjectResponse> fileCopyObjectResponses = fileService.batchCopyObject(fileCopyObjectDtos, request.getAppCode());
|
List<FileCopyObjectResponse> fileCopyObjectResponses = fileService.batchCopyObject(fileCopyObjectDtos, request.getAppCode());
|
||||||
|
|||||||
@ -141,6 +141,6 @@ public interface ServerFileServiceApi {
|
|||||||
* 复制文件
|
* 复制文件
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value = "/api/server/batchCopyObject", method = RequestMethod.POST)
|
@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 srcBucketName;
|
||||||
/**
|
/**
|
||||||
* 桶文件目录
|
* 桶文件路径(目录+文件)
|
||||||
*/
|
*/
|
||||||
private String srcBucketKey;
|
private String srcBucketKey;
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -27,26 +27,39 @@ public class ServerFileBatchCopyObjectResponse {
|
|||||||
@Builder
|
@Builder
|
||||||
public static class ServerFileCopyObjectResponse {
|
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 targetBucketName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目的桶目录
|
||||||
|
*/
|
||||||
|
private String targetBucketDict;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目的桶key(三方的桶上的目录+文件名称)
|
* 目的桶key(三方的桶上的目录+文件名称)
|
||||||
*/
|
*/
|
||||||
@ -53,7 +59,7 @@ public class CopyObjectCloudDto {
|
|||||||
private String targetKey;
|
private String targetKey;
|
||||||
private String targetChannelCode;
|
private String targetChannelCode;
|
||||||
|
|
||||||
private String fileName;
|
private String targetFileName;
|
||||||
|
|
||||||
private File file;
|
private File file;
|
||||||
private String fileUuid;
|
private String fileUuid;
|
||||||
@ -72,10 +78,11 @@ public class CopyObjectCloudDto {
|
|||||||
.srcBucketKey(Utility.generateFileKey(file.getDirectory(), file.getFileUuid(), file.getFileFormat()))
|
.srcBucketKey(Utility.generateFileKey(file.getDirectory(), file.getFileUuid(), file.getFileFormat()))
|
||||||
.srcChannelCode(file.getChannelCode())
|
.srcChannelCode(file.getChannelCode())
|
||||||
.targetBucketName(targetBucketName)
|
.targetBucketName(targetBucketName)
|
||||||
|
.targetBucketDict(targetBucketDict)
|
||||||
.targetBucketKey(Utility.generateFileKey(targetBucketDict, uuid, file.getFileFormat()))
|
.targetBucketKey(Utility.generateFileKey(targetBucketDict, uuid, file.getFileFormat()))
|
||||||
.targetKey(uuid)
|
.targetKey(uuid)
|
||||||
.targetChannelCode(targetChannelCode)
|
.targetChannelCode(targetChannelCode)
|
||||||
.fileName(fileName)
|
.targetFileName(fileName)
|
||||||
.file(file)
|
.file(file)
|
||||||
.fileUuid(fileCopyObjectRequest.getFileUuid())
|
.fileUuid(fileCopyObjectRequest.getFileUuid())
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@ -5,9 +5,7 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@ -40,20 +40,20 @@ public class FileCopyObjectResponse {
|
|||||||
/**
|
/**
|
||||||
* 桶名称
|
* 桶名称
|
||||||
*/
|
*/
|
||||||
private String bucketName;
|
private String srcBucketName;
|
||||||
/**
|
/**
|
||||||
* 桶文件目录
|
* 桶文件目录
|
||||||
*/
|
*/
|
||||||
private String bucketDict;
|
private String srcBucketDict;
|
||||||
/**
|
/**
|
||||||
* 文件对象key
|
* 文件对象key
|
||||||
*/
|
*/
|
||||||
private String fileKey;
|
private String srcFileKey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件名称
|
* 文件名称
|
||||||
*/
|
*/
|
||||||
private String fileName;
|
private String srcFileName;
|
||||||
|
|
||||||
public static FileCopyObjectResponse create(CopyObjectCloudDto item) {
|
public static FileCopyObjectResponse create(CopyObjectCloudDto item) {
|
||||||
return FileCopyObjectResponse.builder()
|
return FileCopyObjectResponse.builder()
|
||||||
@ -61,10 +61,10 @@ public class FileCopyObjectResponse {
|
|||||||
.targetFileKey(item.getTargetKey())
|
.targetFileKey(item.getTargetKey())
|
||||||
.targetChannelCode(item.getTargetChannelCode())
|
.targetChannelCode(item.getTargetChannelCode())
|
||||||
// .targetDownloadUrl(this.fileManager.fetchDownloadUrl(item.getFile().getb))
|
// .targetDownloadUrl(this.fileManager.fetchDownloadUrl(item.getFile().getb))
|
||||||
.bucketName(item.getFile().getBucketName())
|
.srcBucketName(item.getFile().getBucketName())
|
||||||
.bucketDict(item.getFile().getDirectory())
|
.srcBucketDict(item.getFile().getDirectory())
|
||||||
.fileKey(item.getFile().getFileUuid())
|
.srcFileKey(item.getFile().getFileUuid())
|
||||||
.fileName(item.getFileName())
|
.srcFileName(item.getTargetFileName())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -357,7 +357,7 @@ public class FileManagerImpl implements FileManager {
|
|||||||
return this.copyObjectWhenSameChannel(dto);
|
return this.copyObjectWhenSameChannel(dto);
|
||||||
}
|
}
|
||||||
// 不同的通道,通过url上传至云(通过url复制至云)
|
// 不同的通道,通过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;
|
return StringUtils.isBlank(url) ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,7 +368,7 @@ public class FileManagerImpl implements FileManager {
|
|||||||
ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(dto.getSrcChannelCode());
|
ChannelTypeEnum typeEnum = ChannelTypeEnum.getChannelTypeByChannelCode(dto.getSrcChannelCode());
|
||||||
switch (typeEnum) {
|
switch (typeEnum) {
|
||||||
case OBS:// 华为云
|
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;
|
return Objects.isNull(huaweiResult) ? false : true;
|
||||||
case OSS:// 阿里云
|
case OSS:// 阿里云
|
||||||
com.aliyun.oss.model.CopyObjectResult aliResult = aliOssService.copyObject(dto.getSrcBucketName(), dto.getSrcBucketKey(), dto.getTargetBucketName(), dto.getTargetKey());
|
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.setAppCode(item.getFile().getAppCode());
|
||||||
ossFile.setChannelCode(item.getTargetChannelCode());
|
ossFile.setChannelCode(item.getTargetChannelCode());
|
||||||
ossFile.setBucketName(item.getTargetBucketName());
|
ossFile.setBucketName(item.getTargetBucketName());
|
||||||
ossFile.setDirectory(item.getTargetBucketKey());
|
ossFile.setDirectory(item.getTargetBucketDict());
|
||||||
ossFile.setStorageUnit(item.getFile().getStorageUnit());
|
ossFile.setStorageUnit(item.getFile().getStorageUnit());
|
||||||
ossFile.setStorageSize(item.getFile().getStorageSize());
|
ossFile.setStorageSize(item.getFile().getStorageSize());
|
||||||
ossFile.setFileFormat(item.getFile().getFileFormat());
|
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.setFileUrl(this.fileManager.fetchDownloadUrl(item.getTargetBucketName(), Utility.generateFileKey(item.getTargetBucketKey(), item.getTargetKey(), item.getFile().getFileFormat()), item.getTargetChannelCode()));
|
||||||
ossFile.setUrlMd5(Utility.getMd5(ossFile.getFileUrl()));
|
ossFile.setUrlMd5(Utility.getMd5(ossFile.getFileUrl()));
|
||||||
ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode());
|
ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode());
|
||||||
ossFile.setFileName(item.getFileName());
|
ossFile.setFileName(item.getTargetFileName());
|
||||||
ossFile.setFileMd5(Utility.getMd5(ossFile.getFileUrl()));
|
ossFile.setFileMd5(Utility.getMd5(ossFile.getFileUrl()));
|
||||||
return ossFile;
|
return ossFile;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user