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 new file mode 100644 index 0000000..db9c818 --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/controller/WebFileController.java @@ -0,0 +1,45 @@ +package cn.axzo.oss.client.controller; + +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.ServerFileUploadResponse; +import cn.axzo.oss.service.api.FileService; +import cn.azxo.framework.common.model.CommonResponse; +import lombok.SneakyThrows; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 前端文件controller + * + * @author zhangtianyu + * @date 2022/4/14 2:56 PM + **/ +@RestController +@RequestMapping("/webApi") +public class WebFileController { + @Resource + private FileService fileService; + + @SneakyThrows + @PostMapping("/v1/file") + @CrossOrigin + public CommonResponse upload(@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(); + ServerFileUploadResponse response = fileService.upload(fileUploadDto); + WebFileUploadVo result = BeanConvertUtil.copyBean(response, WebFileUploadVo.class); + return CommonResponse.success(result); + } + +} diff --git a/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java b/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java index ea5cf44..9500aea 100644 --- a/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java +++ b/oss-client/src/main/java/cn/axzo/oss/client/handler/ControllerExceptionHandler.java @@ -10,8 +10,10 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.multipart.support.MissingServletRequestPartException; /** * @program: oss @@ -23,6 +25,18 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice public class ControllerExceptionHandler { + @ExceptionHandler(value = MissingServletRequestParameterException.class) + public CommonResponse handleMissingRequestParam(MissingServletRequestParameterException e) { + log.warn("[oss] ControllerExceptionHandler.missing servlet request parameter Exception", e); + return CommonResponse.error(CodeEnum.MISSING_REQUEST_PARAM.getCode(), e.getMessage()); + } + + @ExceptionHandler(value = MissingServletRequestPartException.class) + public CommonResponse handleMissingRequestPart(MissingServletRequestPartException e) { + log.warn("[oss] ControllerExceptionHandler.missing servlet request part Exception", e); + return CommonResponse.error(CodeEnum.MISSING_REQUEST_PARAM.getCode(), e.getMessage()); + } + @ExceptionHandler(value = BizException.class) public CommonResponse bizException(BizException e){ log.warn("[oss] ControllerExceptionHandler.bizException Exception", e); diff --git a/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java b/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java new file mode 100644 index 0000000..4ffa7f5 --- /dev/null +++ b/oss-client/src/main/java/cn/axzo/oss/client/vo/WebFileUploadVo.java @@ -0,0 +1,22 @@ +package cn.axzo.oss.client.vo; + +import lombok.Data; + +/** + * 前端上传文件返回实体 + * + * @author zhangtianyu + * @date 2022/4/14 3:26 PM + **/ +@Data +public class WebFileUploadVo { + private String url; + /** + * 文件 Key + */ + private String fileKey; + /** + * URL MD5 + */ + private String urlMd5; +} 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 e8323bc..b077d45 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 @@ -40,6 +40,7 @@ public enum CodeEnum implements EnumBase { NOT_FILE_FORMAT(108,"failed to get file format"), FILE_FORMAT_NOT_SUPPORTED(109,"file format is not supported"), FILE_UPLOAD_FAILED(109,"file upload failed"), + MISSING_REQUEST_PARAM(110, "missing request param"), ; 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 ec590f9..75b1710 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 @@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMethod; name = "oss", url = "http://oss:9123" ) -@RequestMapping(value = "/api/v1/server") public interface ServerFileServiceApi { /** @@ -27,7 +26,7 @@ public interface ServerFileServiceApi { * @param request * @return */ - @RequestMapping(value = "/upload", method = RequestMethod.POST) + @RequestMapping(value = "/api/v1/server/upload", method = RequestMethod.POST) CommonResponse upload(ServerFileUploadRequest request); /** @@ -35,7 +34,7 @@ public interface ServerFileServiceApi { * @param request * @return */ - @RequestMapping(value = "/delete", method = RequestMethod.POST) + @RequestMapping(value = "/api/v1/server/delete", method = RequestMethod.POST) CommonResponse delete(ServerFileDeleteRequest request); } diff --git a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java index c290db6..4a864c2 100644 --- a/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java +++ b/oss-manager-api/src/main/java/cn/axzo/oss/manager/api/dto/request/ServerFileUploadDto.java @@ -1,8 +1,9 @@ package cn.axzo.oss.manager.api.dto.request; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; /** * @program: oss @@ -11,6 +12,9 @@ import lombok.Data; * @date: 2021-07-29 18:31 **/ @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class ServerFileUploadDto { private String appCode; private String bizScene;