diff --git a/module-file/src/main/java/ink/wgink/module/file/controller/api/FileV2Controller.java b/module-file/src/main/java/ink/wgink/module/file/controller/api/FileV2Controller.java new file mode 100644 index 00000000..f32dcf1c --- /dev/null +++ b/module-file/src/main/java/ink/wgink/module/file/controller/api/FileV2Controller.java @@ -0,0 +1,90 @@ +package ink.wgink.module.file.controller.api; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.module.file.enums.UploadTypeEnum; +import ink.wgink.module.file.pojo.dtos.FileUploadSuccessDTO; +import ink.wgink.module.file.service.v2.IFileV2Service; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultData; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Map; + +/** + * @ClassName: FileController + * @Description: 文件处理 + * @Author: WangGeng + * @Date: 2019/3/10 7:03 PM + * @Version: 1.0 + **/ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "文件接口") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/file/v2") +public class FileV2Controller extends DefaultBaseController { + + @Autowired + private IFileV2Service fileV2Service; + + @ApiOperation(value = "上传文件", notes = "上传文件接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "file", value = "文件name", paramType = "query") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("upload-file") + public SuccessResultData uploadFile(@RequestParam("file") MultipartFile file) { + Map params = requestParams(); + return uploadSingle(file, UploadTypeEnum.FILE, params); + } + + @ApiOperation(value = "上传图片", notes = "上传图片接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "image", value = "文件name", paramType = "query") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("upload-image") + public SuccessResultData uploadImage(@RequestParam("image") MultipartFile image) { + Map params = requestParams(); + return uploadSingle(image, UploadTypeEnum.IMAGE, params); + } + + @ApiOperation(value = "上传视频", notes = "上传视频接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "video", value = "文件video", paramType = "query") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("upload-video") + public SuccessResultData uploadVideo(@RequestParam("video") MultipartFile video) { + Map params = requestParams(); + return uploadSingle(video, UploadTypeEnum.VIDEO, params); + } + + @ApiOperation(value = "上传音频", notes = "上传音频接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "audio", value = "文件audio", paramType = "query") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("upload-audio") + public SuccessResultData uploadAudio(@RequestParam("audio") MultipartFile audio) { + Map params = requestParams(); + return uploadSingle(audio, UploadTypeEnum.AUDIO, params); + } + + /** + * 上传文件 + * + * @param uploadFile + * @param params + * @return + */ + private SuccessResultData uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map params) { + return new SuccessResultData<>(fileV2Service.uploadSingle(uploadFile, uploadTypeEnum, params)); + } + +} diff --git a/module-file/src/main/java/ink/wgink/module/file/pojo/dtos/FileUploadSuccessDTO.java b/module-file/src/main/java/ink/wgink/module/file/pojo/dtos/FileUploadSuccessDTO.java new file mode 100644 index 00000000..55fac07e --- /dev/null +++ b/module-file/src/main/java/ink/wgink/module/file/pojo/dtos/FileUploadSuccessDTO.java @@ -0,0 +1,63 @@ +package ink.wgink.module.file.pojo.dtos; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @ClassName: FileUploadSuccessDTO + * @Description: 文件上传成功 + * @Author: wanggeng + * @Date: 2022/4/13 16:13 + * @Version: 1.0 + */ +@ApiModel +public class FileUploadSuccessDTO implements Serializable { + + private static final long serialVersionUID = -532164203878483022L; + + @ApiModelProperty(name = "fileId", value = "文件ID") + private String fileId; + @ApiModelProperty(name = "fileName", value = "文件名称") + private String fileName; + @ApiModelProperty(name = "fileSize", value = "文件大小") + private Long fileSize; + + public String getFileId() { + return fileId == null ? "" : fileId.trim(); + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getFileName() { + return fileName == null ? "" : fileName.trim(); + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public Long getFileSize() { + return fileSize == null ? 0 : fileSize; + } + + public void setFileSize(Long fileSize) { + this.fileSize = fileSize; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"fileId\":\"") + .append(fileId).append('\"'); + sb.append(",\"fileName\":\"") + .append(fileName).append('\"'); + sb.append(",\"fileSize\":") + .append(fileSize); + sb.append('}'); + return sb.toString(); + } +} diff --git a/module-file/src/main/java/ink/wgink/module/file/service/v2/IFileV2Service.java b/module-file/src/main/java/ink/wgink/module/file/service/v2/IFileV2Service.java new file mode 100644 index 00000000..724e20e9 --- /dev/null +++ b/module-file/src/main/java/ink/wgink/module/file/service/v2/IFileV2Service.java @@ -0,0 +1,19 @@ +package ink.wgink.module.file.service.v2; + +import ink.wgink.module.file.enums.UploadTypeEnum; +import ink.wgink.module.file.pojo.dtos.FileUploadSuccessDTO; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Map; + +/** + * @ClassName: IFileV2Service + * @Description: 文件V2 + * @Author: wanggeng + * @Date: 2022/4/13 16:15 + * @Version: 1.0 + */ +public interface IFileV2Service { + + FileUploadSuccessDTO uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map params); +} diff --git a/module-file/src/main/java/ink/wgink/module/file/service/v2/impl/FileV2ServiceImpl.java b/module-file/src/main/java/ink/wgink/module/file/service/v2/impl/FileV2ServiceImpl.java new file mode 100644 index 00000000..419cf7a5 --- /dev/null +++ b/module-file/src/main/java/ink/wgink/module/file/service/v2/impl/FileV2ServiceImpl.java @@ -0,0 +1,36 @@ +package ink.wgink.module.file.service.v2.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.module.file.enums.UploadTypeEnum; +import ink.wgink.module.file.pojo.dtos.FileUploadSuccessDTO; +import ink.wgink.module.file.service.IFileService; +import ink.wgink.module.file.service.v2.IFileV2Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Map; + +/** + * @ClassName: FileV2ServiceImpl + * @Description: 文件V2 + * @Author: wanggeng + * @Date: 2022/4/13 16:15 + * @Version: 1.0 + */ +@Service +public class FileV2ServiceImpl extends DefaultBaseService implements IFileV2Service { + + @Autowired + private IFileService fileService; + + @Override + public FileUploadSuccessDTO uploadSingle(MultipartFile uploadFile, UploadTypeEnum uploadTypeEnum, Map params) { + fileService.uploadSingle(uploadFile, uploadTypeEnum, params); + FileUploadSuccessDTO fileUploadSuccessDTO = new FileUploadSuccessDTO(); + fileUploadSuccessDTO.setFileId(params.get("fileId").toString()); + fileUploadSuccessDTO.setFileName(params.get("fileName").toString()); + fileUploadSuccessDTO.setFileSize(Long.valueOf(params.get("fileSize").toString())); + return fileUploadSuccessDTO; + } +}