From 94cd46e73dc0cf836bba9711c23b8e47e8039658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=89=8D=E7=A6=8F?= Date: Fri, 4 Nov 2022 17:44:11 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=89=A9=E5=B1=95=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ServerFileController.java | 8 ++++++ .../oss/http/api/ServerFileServiceApi.java | 9 +++++++ .../http/model/FileInformationResponse.java | 23 +++++++++++++++++ .../dto/response/FileInformationResponse.java | 24 ++++++++++++++++++ .../cn/axzo/oss/service/api/FileService.java | 3 +++ .../oss/service/impl/FileServiceImpl.java | 25 ++++++++++++++++--- 6 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java index cb2db71..c96b8fb 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java @@ -3,6 +3,7 @@ package cn.axzo.oss.client.controller; import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.oss.common.utils.BeanConvertUtil; import cn.axzo.oss.http.api.ServerFileServiceApi; +import cn.axzo.oss.http.model.FileInformationResponse; import cn.axzo.oss.http.model.ServerFileDeleteRequest; import cn.axzo.oss.http.model.ServerFileUploadRequest; import cn.axzo.oss.http.model.ServerFileUploadResponse; @@ -36,6 +37,13 @@ public class ServerFileController implements ServerFileServiceApi { return CommonResponse.success(BeanConverter.convert(fileService.upload(dto),ServerFileUploadResponse.class)); } + @Override + public CommonResponse uploadV2(ServerFileUploadRequest request) { + ServerFileUploadDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadDto.class); + request.setFileContent(null); + return CommonResponse.success(BeanConverter.convert(fileService.uploadV2(dto),FileInformationResponse.class)); + } + /** * 根据文件url删除文件 * @param request diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java index 75b1710..a17b017 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java @@ -1,5 +1,6 @@ package cn.axzo.oss.http.api; +import cn.axzo.oss.http.model.FileInformationResponse; import cn.axzo.oss.http.model.ServerFileDeleteRequest; import cn.axzo.oss.http.model.ServerFileUploadRequest; import cn.axzo.oss.http.model.ServerFileUploadResponse; @@ -29,6 +30,14 @@ public interface ServerFileServiceApi { @RequestMapping(value = "/api/v1/server/upload", method = RequestMethod.POST) CommonResponse upload(ServerFileUploadRequest request); + /** + * 上传文件 + * @param request + * @return + */ + @RequestMapping(value = "/api/v2/server/upload", method = RequestMethod.POST) + CommonResponse uploadV2(ServerFileUploadRequest request); + /** * 删除文件 * @param request diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java new file mode 100644 index 0000000..f7d3856 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java @@ -0,0 +1,23 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +@Data +public class FileInformationResponse { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java new file mode 100644 index 0000000..73cc490 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java @@ -0,0 +1,24 @@ +package cn.axzo.oss.manager.api.dto.response; + +import lombok.Data; + +@Data +public class FileInformationResponse { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + + /** + * URL MD5 + */ + private String urlMd5; +} diff --git a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java index fafed85..c8fbc37 100644 --- a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java +++ b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java @@ -2,6 +2,7 @@ package cn.axzo.oss.service.api; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; /** @@ -25,4 +26,6 @@ public interface FileService { * @param request */ ServerFileUploadResponse upload(ServerFileUploadDto request); + + FileInformationResponse uploadV2(ServerFileUploadDto request); } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index ce92433..427561d 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -22,6 +22,7 @@ import cn.axzo.oss.manager.api.FileManager; import cn.axzo.oss.manager.api.FileUploadConfigManager; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; import cn.axzo.oss.service.api.FileService; import java.util.Arrays; @@ -108,6 +109,17 @@ public class FileServiceImpl implements FileService { */ @Override public ServerFileUploadResponse upload(ServerFileUploadDto dto) { + File ossFile = uploadFileAndGetFile(dto); + return setResponse(ossFile); + } + + @Override + public FileInformationResponse uploadV2(ServerFileUploadDto request) { + File ossFile = uploadFileAndGetFile(request); + return setFileInfoResp(ossFile); + } + + private File uploadFileAndGetFile(ServerFileUploadDto dto) { log.info("update fileName:{},appCode:{},bizScene:{}", dto.getFileName(), dto.getAppCode(), dto.getBizScene()); // 检查appCode @@ -123,11 +135,8 @@ public class FileServiceImpl implements FileService { // 通过渠道码和桶名称获取获取指定上传配置 FileUploadConfig fileUploadConfig = fileUploadConfigManager .getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory()); - // 上传文件并生成file对象 - File ossFile = generateFile(fileUploadConfig, dto); - - return setResponse(ossFile); + return generateFile(fileUploadConfig, dto); } /** @@ -202,4 +211,12 @@ public class FileServiceImpl implements FileService { return response; } + private FileInformationResponse setFileInfoResp(File ossFile){ + FileInformationResponse resp=new FileInformationResponse(); + resp.setUrl(ossFile.getFileUrl()); + resp.setFileName(ossFile.getFileName()); + resp.setUrlMd5(ossFile.getUrlMd5()); + return resp; + } + } From f0a0f4051504396d11a9e547b7917811bef0937f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=89=8D=E7=A6=8F?= Date: Sat, 5 Nov 2022 15:21:56 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=89=A9=E5=B1=95=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/controller/WebFileController.java | 19 +++++++++++++++ .../axzo/oss/client/vo/FileInformationVo.java | 24 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java index db9c818..c580297 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java @@ -1,8 +1,10 @@ package cn.axzo.oss.client.controller; +import cn.axzo.oss.client.vo.FileInformationVo; import cn.axzo.oss.client.vo.WebFileUploadVo; import cn.axzo.oss.common.utils.BeanConvertUtil; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FileInformationResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; import cn.axzo.oss.service.api.FileService; import cn.azxo.framework.common.model.CommonResponse; @@ -42,4 +44,21 @@ public class WebFileController { return CommonResponse.success(result); } + + @PostMapping("/v2/file") + @CrossOrigin + @SneakyThrows + public CommonResponse uploadV2(@Valid @RequestParam String appCode, + @Valid @RequestParam String bizScene, + @Valid @RequestParam MultipartFile file) { + ServerFileUploadDto fileUploadDto = ServerFileUploadDto.builder() + .appCode(appCode) + .bizScene(bizScene) + .fileName(file.getOriginalFilename()) + .fileContent(file.getBytes()) + .build(); + FileInformationResponse response = fileService.uploadV2(fileUploadDto); + FileInformationVo result = BeanConvertUtil.copyBean(response, FileInformationVo.class); + return CommonResponse.success(result); + } } diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java new file mode 100644 index 0000000..b49c0ce --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java @@ -0,0 +1,24 @@ +package cn.axzo.oss.client.vo; + +import lombok.Data; + +@Data +public class FileInformationVo { + /** + * 文件 URL + */ + private String url; + /** + * 文件名称 + */ + private String fileName; + /** + * 文件大小 + */ + private Long fileSize; + + /** + * URL MD5 + */ + private String urlMd5; +} From 16722c76e479c13d9dcb6ce4224b7b06f2882e20 Mon Sep 17 00:00:00 2001 From: tianliyong Date: Wed, 16 Nov 2022 19:53:06 +0800 Subject: [PATCH 3/7] =?UTF-8?q?add=20=E8=8E=B7=E5=8F=96=E6=96=87=E4=BB=B6u?= =?UTF-8?q?rl/=E8=8E=B7=E5=8F=96=E6=96=87=E4=BB=B6filekey=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ServerFileController.java | 29 +- .../client/controller/WebFileController.java | 17 + .../cn/axzo/oss/client/vo/FindFileUrlVo.java | 21 + .../cn/axzo/oss/dal/repository/FileDao.java | 6 + .../oss/dal/repository/impl/FileDaoImpl.java | 32 +- .../oss/http/api/ServerFileServiceApi.java | 18 +- .../oss/http/model/FindFileKeyRequest.java | 22 + .../oss/http/model/FindFileKeyResponse.java | 22 + .../oss/http/model/FindFileUrlRequest.java | 20 + .../oss/http/model/FindFileUrlResponse.java | 21 + .../api/dto/request/FindFileKeyDto.java | 26 ++ .../api/dto/request/FindFileUrlDto.java | 26 ++ .../api/dto/response/FindFileKeyResponse.java | 22 + .../api/dto/response/FindFileUrlResponse.java | 21 + .../cn/axzo/oss/service/api/FileService.java | 34 +- .../oss/service/impl/FileServiceImpl.java | 377 ++++++++++-------- 16 files changed, 531 insertions(+), 183 deletions(-) create mode 100644 oss-client/src/main/java/cn/axzo/oss/client/vo/FindFileUrlVo.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyRequest.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyResponse.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java create mode 100644 oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlResponse.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileKeyResponse.java create mode 100644 oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileUrlResponse.java diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java index cb2db71..2d6216b 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/ServerFileController.java @@ -3,9 +3,9 @@ package cn.axzo.oss.client.controller; import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.oss.common.utils.BeanConvertUtil; import cn.axzo.oss.http.api.ServerFileServiceApi; -import cn.axzo.oss.http.model.ServerFileDeleteRequest; -import cn.axzo.oss.http.model.ServerFileUploadRequest; -import cn.axzo.oss.http.model.ServerFileUploadResponse; +import cn.axzo.oss.http.model.*; +import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto; +import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; import cn.axzo.oss.service.api.FileService; @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; +import java.util.List; /** * 服务端文件 Controller @@ -47,4 +48,26 @@ public class ServerFileController implements ServerFileServiceApi { fileService.delete(dto); return CommonResponse.success(); } + + /** + * 获取文件url + * @param request + * @return + */ + @Override + public CommonResponse> getFileUrl(FindFileUrlRequest request) { + FindFileUrlDto dto = BeanConvertUtil.copyBean(request, FindFileUrlDto.class); + return CommonResponse.success(BeanConverter.convert(fileService.findFileUrl(dto), FindFileUrlResponse.class)); + } + + /** + * 获取文件key,用于历史数据清理 + * @param request + * @return + */ + @Override + public CommonResponse> getFileKey(FindFileKeyRequest request) { + FindFileKeyDto dto = BeanConvertUtil.copyBean(request, FindFileKeyDto.class); + return CommonResponse.success(BeanConverter.convert(fileService.findFileKey(dto), FindFileKeyResponse.class)); + } } diff --git a/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java index db9c818..f45a2ca 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java @@ -1,8 +1,12 @@ package cn.axzo.oss.client.controller; +import cn.axzo.core.utils.converter.BeanConverter; +import cn.axzo.oss.client.vo.FindFileUrlVo; import cn.axzo.oss.client.vo.WebFileUploadVo; import cn.axzo.oss.common.utils.BeanConvertUtil; +import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; import cn.axzo.oss.service.api.FileService; import cn.azxo.framework.common.model.CommonResponse; @@ -12,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; /** * 前端文件controller @@ -42,4 +47,16 @@ public class WebFileController { return CommonResponse.success(result); } + @SneakyThrows + @PostMapping("/v1/file/getUrl") + @CrossOrigin + public CommonResponse> getUrl(@Valid @RequestParam String appCode, + @Valid @RequestParam List fileKey) { + FindFileUrlDto dto = FindFileUrlDto.builder() + .appCode(appCode) + .fileKey(fileKey) + .build(); + List response = fileService.findFileUrl(dto); + return CommonResponse.success(BeanConverter.convert(response, FindFileUrlVo.class)); + } } diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/FindFileUrlVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/FindFileUrlVo.java new file mode 100644 index 0000000..91187e6 --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/FindFileUrlVo.java @@ -0,0 +1,21 @@ +package cn.axzo.oss.client.vo; + +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 19:41 + * @Description: 前端获取文件url返回实体 + */ +@Data +public class FindFileUrlVo { + + /** + * 文件 URL + */ + private String url; + /** + * 文件 Key + */ + private String fileKey; +} diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileDao.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileDao.java index 64f0f7b..1097aa5 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileDao.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/FileDao.java @@ -3,6 +3,8 @@ package cn.axzo.oss.dal.repository; import cn.axzo.oss.dal.entity.File; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 文件上传记录 服务类 @@ -20,4 +22,8 @@ public interface FileDao extends IService { * @return */ File getByAppCodeAndUrlMd5(String appCode, String urlMd5); + + List getByAppCodeAndFileUuids(String appCode, List fileKey); + + List getByAppCodeAndUrlMd5s(String appCode, List urlMd5List); } diff --git a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileDaoImpl.java b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileDaoImpl.java index c6da68c..91b086f 100644 --- a/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileDaoImpl.java +++ b/oss-dal/src/main/java/cn/axzo/oss/dal/repository/impl/FileDaoImpl.java @@ -8,6 +8,8 @@ import cn.axzo.oss.dal.repository.FileDao; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Repository; +import java.util.List; + /** *

* 文件上传记录 Dao实现类 @@ -19,10 +21,28 @@ import org.springframework.stereotype.Repository; @Repository("fileDao") public class FileDaoImpl extends ServiceImpl implements FileDao { - @Override - public File getByAppCodeAndUrlMd5(String appCode, String urlMd5) { - return lambdaQuery().eq(File::getAppCode, appCode).eq(File::getUrlMd5, urlMd5) - .eq(File::getStatus, FileStatus.SUCCESS).eq(File::getIsDelete, TableDelete.UN_DELETED) - .last("limit 1").one(); - } + @Override + public File getByAppCodeAndUrlMd5(String appCode, String urlMd5) { + return lambdaQuery().eq(File::getAppCode, appCode).eq(File::getUrlMd5, urlMd5) + .eq(File::getStatus, FileStatus.SUCCESS).eq(File::getIsDelete, TableDelete.UN_DELETED) + .last("limit 1").one(); + } + + @Override + public List getByAppCodeAndFileUuids(String appCode, List fileKey) { + return lambdaQuery().eq(File::getAppCode, appCode) + .in(File::getFileUuid, fileKey) + .eq(File::getStatus, FileStatus.SUCCESS) + .eq(File::getIsDelete, TableDelete.UN_DELETED) + .list(); + } + + @Override + public List getByAppCodeAndUrlMd5s(String appCode, List urlMd5List) { + return lambdaQuery().eq(File::getAppCode, appCode) + .in(File::getUrlMd5, urlMd5List) + .eq(File::getStatus, FileStatus.SUCCESS) + .eq(File::getIsDelete, TableDelete.UN_DELETED) + .list(); + } } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java index 75b1710..20c9f18 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/api/ServerFileServiceApi.java @@ -1,13 +1,13 @@ package cn.axzo.oss.http.api; -import cn.axzo.oss.http.model.ServerFileDeleteRequest; -import cn.axzo.oss.http.model.ServerFileUploadRequest; -import cn.axzo.oss.http.model.ServerFileUploadResponse; +import cn.axzo.oss.http.model.*; import cn.azxo.framework.common.model.CommonResponse; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.util.List; + /** * 服务端 OSS 服务 * @@ -37,4 +37,16 @@ public interface ServerFileServiceApi { @RequestMapping(value = "/api/v1/server/delete", method = RequestMethod.POST) CommonResponse delete(ServerFileDeleteRequest request); + /** + * 获取文件URL + */ + @RequestMapping(value = "api/v1/server/getUrl", method = RequestMethod.POST) + CommonResponse> getFileUrl(FindFileUrlRequest request); + + /** + * 获取文件key + * 用于历史数据清理 + */ + @RequestMapping(value = "api/v1/server/getFileKey", method = RequestMethod.POST) + CommonResponse> getFileKey(FindFileKeyRequest request); } diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyRequest.java new file mode 100644 index 0000000..60bdfd3 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyRequest.java @@ -0,0 +1,22 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 17:39 + * @Description: 服务端获取文件key请求类 + */ +@Data +public class FindFileKeyRequest { + + @NotBlank(message = "appCode must not be null") + private String appCode; + + @NotNull(message = "url must not be null") + private List url; +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyResponse.java new file mode 100644 index 0000000..6996a7f --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileKeyResponse.java @@ -0,0 +1,22 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 18:21 + * @Description: 服务端获取文件key响应类 + */ +@Data +public class FindFileKeyResponse { + + /** + * 文件 URL + */ + private String url; + + /** + * 文件 Key + */ + private String fileKey; +} diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java new file mode 100644 index 0000000..21199a9 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java @@ -0,0 +1,20 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 17:33 + * @Description: 服务端获取文件url请求类 + */ +@Data +public class FindFileUrlRequest { + + @NotBlank(message = "appCode must not be null") + private String appCode; + + @NotBlank(message = "fileKey must not be null") + private String fileKey; +} \ No newline at end of file diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlResponse.java new file mode 100644 index 0000000..3135094 --- /dev/null +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlResponse.java @@ -0,0 +1,21 @@ +package cn.axzo.oss.http.model; + +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 18:21 + * @Description: 服务端获取文件url响应类 + */ +@Data +public class FindFileUrlResponse { + + /** + * 文件 URL + */ + private String url; + /** + * 文件 Key + */ + private String fileKey; +} diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java new file mode 100644 index 0000000..0eec266 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java @@ -0,0 +1,26 @@ +package cn.axzo.oss.manager.api.dto.request; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 17:39 + * @Description: 服务端获取文件key请求类 + */ +@Data +@Builder +public class FindFileKeyDto { + + /** + * 应用码 + */ + private String appCode; + + /** + * 文件url + */ + private List url; +} diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java new file mode 100644 index 0000000..a688116 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java @@ -0,0 +1,26 @@ +package cn.axzo.oss.manager.api.dto.request; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 17:33 + * @Description: 服务端获取文件url请求类 + */ +@Data +@Builder +public class FindFileUrlDto { + + /** + * 应用码 + */ + private String appCode; + + /** + * 文件uuid + */ + private List fileKey; +} \ No newline at end of file diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileKeyResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileKeyResponse.java new file mode 100644 index 0000000..61ec186 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileKeyResponse.java @@ -0,0 +1,22 @@ +package cn.axzo.oss.manager.api.dto.response; + +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 18:21 + * @Description: 服务端获取文件key响应类 + */ +@Data +public class FindFileKeyResponse { + + /** + * 文件 URL + */ + private String url; + + /** + * 文件 Key + */ + private String fileKey; +} diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileUrlResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileUrlResponse.java new file mode 100644 index 0000000..5c49131 --- /dev/null +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FindFileUrlResponse.java @@ -0,0 +1,21 @@ +package cn.axzo.oss.manager.api.dto.response; + +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/16 18:21 + * @Description: 服务端获取文件url响应类 + */ +@Data +public class FindFileUrlResponse { + + /** + * 文件 URL + */ + private String url; + /** + * 文件 Key + */ + private String fileKey; +} diff --git a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java index fafed85..cc098e9 100644 --- a/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java +++ b/oss-service-api/src/main/java/cn/axzo/oss/service/api/FileService.java @@ -1,9 +1,15 @@ package cn.axzo.oss.service.api; +import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto; +import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; +import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; +import java.util.List; + /** * @Author admin * @Description @@ -12,17 +18,21 @@ import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; **/ public interface FileService { - /** - * 删除文件 - * - * @param dto - */ - void delete(ServerFileDeleteDto dto); + /** + * 删除文件 + * + * @param dto + */ + void delete(ServerFileDeleteDto dto); - /** - * 上传 - * - * @param request - */ - ServerFileUploadResponse upload(ServerFileUploadDto request); + /** + * 上传 + * + * @param request + */ + ServerFileUploadResponse upload(ServerFileUploadDto request); + + List findFileUrl(FindFileUrlDto dto); + + List findFileKey(FindFileKeyDto dto); } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index ce92433..e099bcf 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -9,26 +9,31 @@ import cn.axzo.oss.common.enums.FileStatusEnum; import cn.axzo.oss.common.exception.BizException; import cn.axzo.oss.common.utils.JsonUtil; import cn.axzo.oss.common.utils.Utility; -import cn.axzo.oss.dal.entity.AppChannelBucket; -import cn.axzo.oss.dal.entity.File; -import cn.axzo.oss.dal.entity.FileApp; -import cn.axzo.oss.dal.entity.FileBusinessScene; -import cn.axzo.oss.dal.entity.FileUploadConfig; +import cn.axzo.oss.dal.entity.*; import cn.axzo.oss.dal.repository.FileAppDao; import cn.axzo.oss.dal.repository.FileDao; import cn.axzo.oss.manager.api.AppChannelBucketManager; import cn.axzo.oss.manager.api.FileBusinessSceneManager; import cn.axzo.oss.manager.api.FileManager; import cn.axzo.oss.manager.api.FileUploadConfigManager; +import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto; +import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto; import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto; import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto; +import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse; +import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse; import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse; import cn.axzo.oss.service.api.FileService; -import java.util.Arrays; +import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * @Author admin * @Description @@ -39,167 +44,221 @@ import org.springframework.stereotype.Service; @Slf4j public class FileServiceImpl implements FileService { - @Autowired - private FileManager fileManager; + @Autowired + private FileManager fileManager; - @Autowired - private FileDao fileDao; + @Autowired + private FileDao fileDao; - @Autowired - private FileAppDao fileAppDao; - @Autowired - private AppChannelBucketManager appChannelBucketManager; - @Autowired - private FileBusinessSceneManager fileBusinessSceneManager; - @Autowired - private FileUploadConfigManager fileUploadConfigManager; + @Autowired + private FileAppDao fileAppDao; + @Autowired + private AppChannelBucketManager appChannelBucketManager; + @Autowired + private FileBusinessSceneManager fileBusinessSceneManager; + @Autowired + private FileUploadConfigManager fileUploadConfigManager; - /** - * 删除文件 - * - * @param dto - */ - @Override - public void delete(ServerFileDeleteDto dto) { - log.info("delete dto = {}", JsonUtil.obj2Str(dto)); - // 检查app code - checkAppCode(dto.getAppCode()); + /** + * 删除文件 + * + * @param dto + */ + @Override + public void delete(ServerFileDeleteDto dto) { + log.info("delete dto = {}", JsonUtil.obj2Str(dto)); + // 检查app code + checkAppCode(dto.getAppCode()); - String urlMd5 = Utility.getMd5(dto.getUrl()); - log.info("delete urlMd5 = {}", urlMd5); + String urlMd5 = Utility.getMd5(dto.getUrl()); + log.info("delete urlMd5 = {}", urlMd5); - File file = fileDao.getByAppCodeAndUrlMd5(dto.getAppCode(), urlMd5); - if (Utility.objIsNull(file)) { - log.warn("delete file is null,url = {}, urlMd5 = {}", dto.getUrl(), urlMd5); - return; - } - String tgtFileKey = Utility - .generateFileKey(file.getDirectory(), file.getFileUuid(), file.getFileFormat()); - log.debug("delete tgtFileKey = {}", tgtFileKey); - boolean deleteFlag = fileManager.delete(file.getBucketName(), tgtFileKey); - log.info("delete deleteFlag = {}", deleteFlag); - if (deleteFlag) { - File updateFile = new File(); - updateFile.setIsDelete(TableDelete.DELETED); - updateFile.setStatus(FileStatus.DELETED); - updateFile.setUpdateBy(dto.getOperator()); - updateFile.setId(file.getId()); - fileDao.updateById(updateFile); - } - } - - - /** - * 检查appCode是否有效 - * - * @param appCode - */ - private void checkAppCode(final String appCode) { - log.info("checkAppCode appCode = {}", appCode); - FileApp fileApp = fileAppDao.getByAppCode(appCode); - BizException.error(Utility.objIsNotNull(fileApp), CodeEnum.APP_CODE_NOT_FOUND); - } - - /** - * 上传 - * - * @param dto - */ - @Override - public ServerFileUploadResponse upload(ServerFileUploadDto dto) { - log.info("update fileName:{},appCode:{},bizScene:{}", - dto.getFileName(), dto.getAppCode(), dto.getBizScene()); - // 检查appCode - checkAppCode(dto.getAppCode()); - - // 通过appcode获取文件渠道桶信息 - AppChannelBucket appChannelBucket = appChannelBucketManager.getByAppCode(dto.getAppCode()); - - // 通过渠道桶编码获取到具体文件业务场景 - FileBusinessScene scene = fileBusinessSceneManager - .getByBucketNoAndScene(appChannelBucket.getAppChannelBucketNo(), dto.getBizScene()); - - // 通过渠道码和桶名称获取获取指定上传配置 - FileUploadConfig fileUploadConfig = fileUploadConfigManager - .getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory()); - - // 上传文件并生成file对象 - File ossFile = generateFile(fileUploadConfig, dto); - - return setResponse(ossFile); - } - - /** - * 判断文件是否符合要求 - */ - private String isFileConform(FileUploadConfig fileUploadConfig, int fileLength, String fileName) { - // 文件大小超出上限 - int size = Utility - .capacityConversion(fileUploadConfig.getStorageSize(), fileUploadConfig.getStorageUnit()); - BizException.error(size > fileLength, CodeEnum.FILE_SIZE_EXCEEDS_LIMIT); - // 文件格式判断 - String[] formats = fileUploadConfig.getFileFormat().split(FileClassEnum.COMMA.type); - - int lastIndexOf = fileName.lastIndexOf(FileClassEnum.DOT.type); - BizException - .error(lastIndexOf != CommonConstants.NOT_FOUND_INDEX_OF, CodeEnum.NOT_FILE_FORMAT); - - // 是否包含指定格式 - String fileFormat = fileName.substring(lastIndexOf + CommonConstants.ONE).toLowerCase(); - boolean contains = Arrays.asList(formats).contains(fileFormat); - BizException.error(contains, CodeEnum.FILE_FORMAT_NOT_SUPPORTED); - - return fileFormat; - } - - private File generateFile(FileUploadConfig fileUploadConfig, ServerFileUploadDto dto) { - // 判断容量 - String fileConform = isFileConform(fileUploadConfig, dto.getFileContent().length, - dto.getFileName()); - - String uuid = Utility.getUUID(); - - // 生成上传文件的唯一key - String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileConform); - - File ossFile = new File(); - ossFile.setAppChannelBucketNo(fileUploadConfig.getAppChannelBucketNo()); - ossFile.setAppCode(fileUploadConfig.getAppCode()); - ossFile.setChannelCode(fileUploadConfig.getChannelCode()); - ossFile.setBucketName(fileUploadConfig.getBucketName()); - ossFile.setDirectory(fileUploadConfig.getDirectory()); - ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_FAIL.getCode()); - ossFile.setStorageUnit(fileUploadConfig.getStorageUnit()); - ossFile.setStorageSize(fileUploadConfig.getStorageSize()); - ossFile.setFileFormat(fileConform); - // 上传文件 - String fileUrl = fileManager.uploadByStream( - fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileContent()); - - // 保存失败 - if (Utility.isBlank(fileUrl)) { - log.error("fileUrl is empty"); - //fileDao.save(ossFile); - throw new BizException(CodeEnum.FILE_UPLOAD_FAILED); + File file = fileDao.getByAppCodeAndUrlMd5(dto.getAppCode(), urlMd5); + if (Utility.objIsNull(file)) { + log.warn("delete file is null,url = {}, urlMd5 = {}", dto.getUrl(), urlMd5); + return; + } + String tgtFileKey = Utility + .generateFileKey(file.getDirectory(), file.getFileUuid(), file.getFileFormat()); + log.debug("delete tgtFileKey = {}", tgtFileKey); + boolean deleteFlag = fileManager.delete(file.getBucketName(), tgtFileKey); + log.info("delete deleteFlag = {}", deleteFlag); + if (deleteFlag) { + File updateFile = new File(); + updateFile.setIsDelete(TableDelete.DELETED); + updateFile.setStatus(FileStatus.DELETED); + updateFile.setUpdateBy(dto.getOperator()); + updateFile.setId(file.getId()); + fileDao.updateById(updateFile); + } } - ossFile.setFileUuid(uuid); - ossFile.setFileUrl(fileUrl); - ossFile.setUrlMd5(Utility.getMd5(fileUrl)); - ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode()); - ossFile.setFileName(dto.getFileName()); - ossFile.setFileMd5(Utility.getMd5(dto.getFileContent())); - fileDao.save(ossFile); - return ossFile; - } - private ServerFileUploadResponse setResponse(File ossFile){ - ServerFileUploadResponse response = new ServerFileUploadResponse(); - response.setUrl(ossFile.getFileUrl()); - response.setUrlMd5(ossFile.getUrlMd5()); - response.setFileKey(ossFile.getFileUuid()); - return response; - } + /** + * 检查appCode是否有效 + * + * @param appCode + */ + private void checkAppCode(final String appCode) { + log.info("checkAppCode appCode = {}", appCode); + FileApp fileApp = fileAppDao.getByAppCode(appCode); + BizException.error(Utility.objIsNotNull(fileApp), CodeEnum.APP_CODE_NOT_FOUND); + } + + /** + * 上传 + * + * @param dto + */ + @Override + public ServerFileUploadResponse upload(ServerFileUploadDto dto) { + log.info("update fileName:{},appCode:{},bizScene:{}", + dto.getFileName(), dto.getAppCode(), dto.getBizScene()); + // 检查appCode + checkAppCode(dto.getAppCode()); + + // 通过appcode获取文件渠道桶信息 + AppChannelBucket appChannelBucket = appChannelBucketManager.getByAppCode(dto.getAppCode()); + + // 通过渠道桶编码获取到具体文件业务场景 + FileBusinessScene scene = fileBusinessSceneManager + .getByBucketNoAndScene(appChannelBucket.getAppChannelBucketNo(), dto.getBizScene()); + + // 通过渠道码和桶名称获取获取指定上传配置 + FileUploadConfig fileUploadConfig = fileUploadConfigManager + .getByUploadConfig(scene.getAppChannelBucketNo(), scene.getDirectory()); + + // 上传文件并生成file对象 + File ossFile = generateFile(fileUploadConfig, dto); + + return setResponse(ossFile); + } + + @Override + public List findFileUrl(FindFileUrlDto dto) { + log.info("find file url dto = {}", JsonUtil.obj2Str(dto)); + // 检查app code + checkAppCode(dto.getAppCode()); + + List fileList = fileDao.getByAppCodeAndFileUuids(dto.getAppCode(), dto.getFileKey()); + if (CollectionUtil.isEmpty(fileList)) { + log.warn("find file url is null,key = {}", Arrays.toString(dto.getFileKey().toArray())); + return new ArrayList<>(); + } + return setFileUrlRes(fileList); + } + + @Override + public List findFileKey(FindFileKeyDto dto) { + log.info("find file key dto = {}", JsonUtil.obj2Str(dto)); + // 检查app code + checkAppCode(dto.getAppCode()); + + List urlMd5List = dto.getUrl().stream() + .map(url -> Utility.getMd5(url)) + .collect(Collectors.toList()); + + List fileList = fileDao.getByAppCodeAndUrlMd5s(dto.getAppCode(), urlMd5List); + if (CollectionUtil.isEmpty(fileList)) { + log.warn("find file key is null,url = {}", Arrays.toString(dto.getUrl().toArray())); + return new ArrayList<>(); + } + return setFileKeyRes(fileList); + } + + private List setFileUrlRes(List fileList) { + List resList = new ArrayList<>(); + fileList.forEach(file -> { + FindFileUrlResponse response = new FindFileUrlResponse(); + response.setUrl(file.getFileUrl()); + response.setFileKey(file.getFileUuid()); + resList.add(response); + }); + return resList; + } + + private List setFileKeyRes(List fileList) { + List resList = new ArrayList<>(); + fileList.forEach(file -> { + FindFileKeyResponse response = new FindFileKeyResponse(); + response.setUrl(file.getFileUrl()); + response.setFileKey(file.getFileUuid()); + resList.add(response); + }); + return resList; + } + + /** + * 判断文件是否符合要求 + */ + private String isFileConform(FileUploadConfig fileUploadConfig, int fileLength, String fileName) { + // 文件大小超出上限 + int size = Utility + .capacityConversion(fileUploadConfig.getStorageSize(), fileUploadConfig.getStorageUnit()); + BizException.error(size > fileLength, CodeEnum.FILE_SIZE_EXCEEDS_LIMIT); + // 文件格式判断 + String[] formats = fileUploadConfig.getFileFormat().split(FileClassEnum.COMMA.type); + + int lastIndexOf = fileName.lastIndexOf(FileClassEnum.DOT.type); + BizException + .error(lastIndexOf != CommonConstants.NOT_FOUND_INDEX_OF, CodeEnum.NOT_FILE_FORMAT); + + // 是否包含指定格式 + String fileFormat = fileName.substring(lastIndexOf + CommonConstants.ONE).toLowerCase(); + boolean contains = Arrays.asList(formats).contains(fileFormat); + BizException.error(contains, CodeEnum.FILE_FORMAT_NOT_SUPPORTED); + + return fileFormat; + } + + private File generateFile(FileUploadConfig fileUploadConfig, ServerFileUploadDto dto) { + // 判断容量 + String fileConform = isFileConform(fileUploadConfig, dto.getFileContent().length, + dto.getFileName()); + + String uuid = Utility.getUUID(); + + // 生成上传文件的唯一key + String tgtFileKey = Utility.generateFileKey(fileUploadConfig.getDirectory(), uuid, fileConform); + + File ossFile = new File(); + ossFile.setAppChannelBucketNo(fileUploadConfig.getAppChannelBucketNo()); + ossFile.setAppCode(fileUploadConfig.getAppCode()); + ossFile.setChannelCode(fileUploadConfig.getChannelCode()); + ossFile.setBucketName(fileUploadConfig.getBucketName()); + ossFile.setDirectory(fileUploadConfig.getDirectory()); + ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_FAIL.getCode()); + ossFile.setStorageUnit(fileUploadConfig.getStorageUnit()); + ossFile.setStorageSize(fileUploadConfig.getStorageSize()); + ossFile.setFileFormat(fileConform); + // 上传文件 + String fileUrl = fileManager.uploadByStream( + fileUploadConfig.getBucketName(), tgtFileKey, dto.getFileContent()); + + // 保存失败 + if (Utility.isBlank(fileUrl)) { + log.error("fileUrl is empty"); + //fileDao.save(ossFile); + throw new BizException(CodeEnum.FILE_UPLOAD_FAILED); + } + + ossFile.setFileUuid(uuid); + ossFile.setFileUrl(fileUrl); + ossFile.setUrlMd5(Utility.getMd5(fileUrl)); + ossFile.setStatus(FileStatusEnum.STATUS_UPLOAD_SUCCESS.getCode()); + ossFile.setFileName(dto.getFileName()); + ossFile.setFileMd5(Utility.getMd5(dto.getFileContent())); + fileDao.save(ossFile); + return ossFile; + } + + private ServerFileUploadResponse setResponse(File ossFile) { + ServerFileUploadResponse response = new ServerFileUploadResponse(); + response.setUrl(ossFile.getFileUrl()); + response.setUrlMd5(ossFile.getUrlMd5()); + response.setFileKey(ossFile.getFileUuid()); + return response; + } } From 4e517e51c853e20287a8c9b4289493d54d2080f6 Mon Sep 17 00:00:00 2001 From: tianliyong Date: Thu, 17 Nov 2022 16:25:07 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E8=8E=B7=E5=8F=96url=E5=92=8CfileKey?= =?UTF-8?q?=E4=B8=A4=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oss-client/src/main/java/cn/axzo/oss/client/Bootstrap.java | 1 - .../java/cn/axzo/oss/http/model/FindFileUrlRequest.java | 3 ++- .../cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java | 4 ++++ .../cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java | 4 ++++ .../oss/manager/api/dto/request/ServerFileDeleteDto.java | 6 ++++++ 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/oss-client/src/main/java/cn/axzo/oss/client/Bootstrap.java b/oss-client/src/main/java/cn/axzo/oss/client/Bootstrap.java index 9c62c48..d82dbe1 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/Bootstrap.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/Bootstrap.java @@ -15,7 +15,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @Slf4j @MapperScan(basePackages = {"cn.axzo.oss.dal.mapper"}) @SpringBootApplication(scanBasePackages = {"cn.axzo.oss"}) -@MapperScan(basePackages = {"cn.axzo.oss.dal.mapper"}) public class Bootstrap { public static void main(String[] args) { diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java index 21199a9..72660e8 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java @@ -3,6 +3,7 @@ package cn.axzo.oss.http.model; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; /** * @Author: liyong.tian @@ -16,5 +17,5 @@ public class FindFileUrlRequest { private String appCode; @NotBlank(message = "fileKey must not be null") - private String fileKey; + private List fileKey; } \ No newline at end of file diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java index 0eec266..a227165 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileKeyDto.java @@ -1,7 +1,9 @@ package cn.axzo.oss.manager.api.dto.request; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @@ -12,6 +14,8 @@ import java.util.List; */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor public class FindFileKeyDto { /** diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java index a688116..2b968eb 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/FindFileUrlDto.java @@ -1,7 +1,9 @@ package cn.axzo.oss.manager.api.dto.request; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @@ -12,6 +14,8 @@ import java.util.List; */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor public class FindFileUrlDto { /** diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileDeleteDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileDeleteDto.java index 1bc1ed7..03de9cb 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileDeleteDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileDeleteDto.java @@ -1,6 +1,9 @@ package cn.axzo.oss.manager.api.dto.request; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * @Author admin @@ -9,6 +12,9 @@ import lombok.Data; * @Version 0.0.1 **/ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class ServerFileDeleteDto { /** From f3a9caf79725845bc4391821c6cc0a222dc11c2a Mon Sep 17 00:00:00 2001 From: tianliyong Date: Thu, 17 Nov 2022 16:28:36 +0800 Subject: [PATCH 5/7] =?UTF-8?q?FindFileUrlReques=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java index 72660e8..7165a4d 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FindFileUrlRequest.java @@ -3,6 +3,7 @@ package cn.axzo.oss.http.model; import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -16,6 +17,6 @@ public class FindFileUrlRequest { @NotBlank(message = "appCode must not be null") private String appCode; - @NotBlank(message = "fileKey must not be null") + @NotNull(message = "fileKey must not be null") private List fileKey; } \ No newline at end of file From b4d06b8e6a5eeb7b1fcd390d72bf692272a43933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=89=8D=E7=A6=8F?= Date: Fri, 18 Nov 2022 11:29:14 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=96=87=E4=BB=B6Key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/oss/client/vo/FileInformationVo.java | 4 ++++ .../dto/response/FileInformationResponse.java | 4 ++++ .../axzo/oss/service/impl/FileServiceImpl.java | 16 +++++++++------- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java index b49c0ce..f123a25 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/FileInformationVo.java @@ -21,4 +21,8 @@ public class FileInformationVo { * URL MD5 */ private String urlMd5; + /** + * 文件 Key + */ + private String fileKey; } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java index 73cc490..9e39554 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/response/FileInformationResponse.java @@ -21,4 +21,8 @@ public class FileInformationResponse { * URL MD5 */ private String urlMd5; + /** + * 文件 Key + */ + private String fileKey; } diff --git a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java index 2972b23..3b016dd 100644 --- a/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java +++ b/oss-service/src/main/java/cn/axzo/oss/service/impl/FileServiceImpl.java @@ -270,11 +270,13 @@ public class FileServiceImpl implements FileService { return response; } - private FileInformationResponse setFileInfoResp(File ossFile) { - FileInformationResponse resp = new FileInformationResponse(); - resp.setUrl(ossFile.getFileUrl()); - resp.setFileName(ossFile.getFileName()); - resp.setUrlMd5(ossFile.getUrlMd5()); - return resp; - } + private FileInformationResponse setFileInfoResp(File ossFile){ + FileInformationResponse resp=new FileInformationResponse(); + resp.setUrl(ossFile.getFileUrl()); + resp.setFileName(ossFile.getFileName()); + resp.setUrlMd5(ossFile.getUrlMd5()); + resp.setFileKey(ossFile.getFileUuid()); + return resp; + } + } From 0d6580bfdff425054583c4da818c9654557e5247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=89=8D=E7=A6=8F?= Date: Fri, 18 Nov 2022 11:40:27 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=96=87=E4=BB=B6Key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/oss/http/model/FileInformationResponse.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java index f7d3856..532e915 100644 --- a/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java +++ b/oss-http-api/src/main/java/cn/axzo/oss/http/model/FileInformationResponse.java @@ -20,4 +20,9 @@ public class FileInformationResponse { * URL MD5 */ private String urlMd5; + + /** + * 文件 Key + */ + private String fileKey; }