refactor: 收紧附件上传接口
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
package com.bruce.common.controller;
|
||||
|
||||
import com.bruce.common.entity.SysAttachment;
|
||||
import com.bruce.common.domain.entity.SysAttachment;
|
||||
import com.bruce.common.domain.model.RequestResult;
|
||||
import com.bruce.common.dto.request.SysAttachmentUploadRequest;
|
||||
import com.bruce.common.service.ISysAttachmentService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
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;
|
||||
|
||||
@Tag(name = "系统附件管理")
|
||||
@RestController
|
||||
@@ -21,9 +22,7 @@ public class SysAttachmentController {
|
||||
|
||||
@Operation(summary = "上传附件")
|
||||
@PostMapping("/upload")
|
||||
public SysAttachment upload(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam String sourceType,
|
||||
@RequestParam(required = false) Long sourceId) {
|
||||
return sysAttachmentService.upload(file, sourceType, sourceId);
|
||||
public RequestResult<SysAttachment> upload(@ModelAttribute SysAttachmentUploadRequest request) {
|
||||
return RequestResult.success(sysAttachmentService.upload(request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.bruce.common.dto.request;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Data
|
||||
@Schema(description = "附件上传请求")
|
||||
public class SysAttachmentUploadRequest {
|
||||
|
||||
@Schema(description = "上传文件")
|
||||
private MultipartFile file;
|
||||
|
||||
@Schema(description = "来源类型")
|
||||
private String sourceType;
|
||||
|
||||
@Schema(description = "来源业务ID")
|
||||
private Long sourceId;
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.bruce.common.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bruce.common.entity.SysAttachment;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.bruce.common.domain.entity.SysAttachment;
|
||||
import com.bruce.common.dto.request.SysAttachmentUploadRequest;
|
||||
|
||||
public interface ISysAttachmentService extends IService<SysAttachment> {
|
||||
|
||||
SysAttachment upload(MultipartFile file, String sourceType, Long sourceId);
|
||||
SysAttachment upload(SysAttachmentUploadRequest request);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@ package com.bruce.common.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bruce.common.config.AttachmentProperties;
|
||||
import com.bruce.common.entity.SysAttachment;
|
||||
import com.bruce.common.domain.entity.SysAttachment;
|
||||
import com.bruce.common.dto.request.SysAttachmentUploadRequest;
|
||||
import com.bruce.common.mapper.SysAttachmentMapper;
|
||||
import com.bruce.common.service.ISysAttachmentService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -29,10 +30,15 @@ public class SysAttachmentServiceImpl extends ServiceImpl<SysAttachmentMapper, S
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysAttachment upload(MultipartFile file, String sourceType, Long sourceId) {
|
||||
public SysAttachment upload(SysAttachmentUploadRequest request) {
|
||||
if (request == null) {
|
||||
throw new IllegalArgumentException("上传请求不能为空");
|
||||
}
|
||||
MultipartFile file = request.getFile();
|
||||
if (file == null || file.isEmpty()) {
|
||||
throw new IllegalArgumentException("上传文件不能为空");
|
||||
}
|
||||
String sourceType = request.getSourceType();
|
||||
if (!StringUtils.hasText(sourceType)) {
|
||||
throw new IllegalArgumentException("sourceType不能为空");
|
||||
}
|
||||
@@ -54,7 +60,7 @@ public class SysAttachmentServiceImpl extends ServiceImpl<SysAttachmentMapper, S
|
||||
|
||||
SysAttachment attachment = new SysAttachment();
|
||||
attachment.setSourceType(sourceType);
|
||||
attachment.setSourceId(sourceId);
|
||||
attachment.setSourceId(request.getSourceId());
|
||||
attachment.setOriginalName(originalName);
|
||||
attachment.setFileName(storedFileName);
|
||||
attachment.setFileSuffix(suffix);
|
||||
|
||||
@@ -4,15 +4,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bruce.common.controller.SysAttachmentController;
|
||||
import com.bruce.common.entity.SysAttachment;
|
||||
import com.bruce.common.domain.model.RequestResult;
|
||||
import com.bruce.common.dto.request.SysAttachmentUploadRequest;
|
||||
import com.bruce.common.domain.entity.SysAttachment;
|
||||
import com.bruce.common.mapper.SysAttachmentMapper;
|
||||
import com.bruce.common.service.ISysAttachmentService;
|
||||
import com.bruce.common.service.impl.SysAttachmentServiceImpl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@@ -31,18 +33,16 @@ class SysAttachmentComponentStructureTests {
|
||||
void sysAttachmentShouldExposeUploadMethods() throws NoSuchMethodException {
|
||||
Method serviceMethod = ISysAttachmentService.class.getMethod(
|
||||
"upload",
|
||||
MultipartFile.class,
|
||||
String.class,
|
||||
Long.class
|
||||
SysAttachmentUploadRequest.class
|
||||
);
|
||||
Method controllerMethod = SysAttachmentController.class.getMethod(
|
||||
"upload",
|
||||
MultipartFile.class,
|
||||
String.class,
|
||||
Long.class
|
||||
SysAttachmentUploadRequest.class
|
||||
);
|
||||
|
||||
assertNotNull(serviceMethod);
|
||||
assertNotNull(controllerMethod);
|
||||
assertEquals(SysAttachment.class, serviceMethod.getReturnType());
|
||||
assertEquals(RequestResult.class, controllerMethod.getReturnType());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user