mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
贴皮文件上传修正
This commit is contained in:
+4
-2
@@ -28,6 +28,7 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -116,8 +117,9 @@ public class VeneerController {
|
||||
@PostMapping("/pic")
|
||||
@Operation(summary = "上传贴皮照片")
|
||||
@OperateLog(logArgs = false, type = CREATE)
|
||||
public CommonResult<Long> uploadVeneerPic(@RequestPart(value = "file") MultipartFile file) throws IOException {
|
||||
return success(veneerService.uploadPic(file));
|
||||
public CommonResult<Long> uploadVeneerPic(@RequestParam("id") Long id,
|
||||
@RequestPart(value = "file") MultipartFile file) throws IOException {
|
||||
return success(veneerService.uploadPic(id, file));
|
||||
}
|
||||
|
||||
@PostMapping("/defect")
|
||||
|
||||
+3
-2
@@ -50,10 +50,11 @@ public interface VeneerService {
|
||||
/**
|
||||
* 上传贴皮照片
|
||||
*
|
||||
* @param file
|
||||
* @param id 贴皮id
|
||||
* @param file 贴皮图片
|
||||
* @return
|
||||
*/
|
||||
Long uploadPic(MultipartFile file) throws IOException;
|
||||
Long uploadPic(Long id, MultipartFile file) throws IOException;
|
||||
|
||||
/**
|
||||
* 贴皮导入模版下载
|
||||
|
||||
+10
-2
@@ -127,7 +127,11 @@ public class VeneerServiceImpl implements VeneerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long uploadPic(MultipartFile file) throws IOException {
|
||||
public Long uploadPic(Long id, MultipartFile file) throws IOException {
|
||||
if (ObjectUtil.isNull(validateExist(id))) {
|
||||
throw new ServiceException(VENEER_NOT_EXIST);
|
||||
}
|
||||
|
||||
Long organId = SecurityFrameworkUtils.getUserOrganId();
|
||||
|
||||
// 获取组织名称
|
||||
@@ -138,7 +142,11 @@ public class VeneerServiceImpl implements VeneerService {
|
||||
} else {
|
||||
organizationDTO = details.getData();
|
||||
}
|
||||
return fileApi.createFileAndReturnId(file.getBytes(), String.format("%s-veneer-pic-file-%s.%s", organizationDTO.getName(), LocalDateTimeUtil.format(LocalDateTime.now(), PURE_DATETIME_PATTERN), getFileExtension(file.getOriginalFilename())));
|
||||
Long fileId = fileApi.createFileAndReturnId(file.getBytes(), String.format("%s-veneer-pic-file-%s.%s", organizationDTO.getName(), LocalDateTimeUtil.format(LocalDateTime.now(), PURE_DATETIME_PATTERN), getFileExtension(file.getOriginalFilename())));
|
||||
veneerMapper.update(new LambdaUpdateWrapper<VeneerDO>()
|
||||
.eq(VeneerDO::getId, id)
|
||||
.set(VeneerDO::getFileId, fileId));
|
||||
return fileId;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -161,10 +161,11 @@ class VeneerControllerTest extends BaseWebUnitTest {
|
||||
"file", "a.jpg", "image/jpeg", "123".getBytes()
|
||||
);
|
||||
|
||||
when(veneerService.uploadPic(any())).thenReturn(10L);
|
||||
when(veneerService.uploadPic(eq(1L), any())).thenReturn(10L);
|
||||
|
||||
mockMvc.perform(multipart("/executor/veneer/pic")
|
||||
.file(file))
|
||||
.file(file)
|
||||
.param("id", "1"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.data").value(10L));
|
||||
}
|
||||
|
||||
+28
-2
@@ -259,6 +259,9 @@ class VeneerServiceImplTest extends BaseMockitoUnitTest {
|
||||
@Test
|
||||
@WithMockLoginUser(organId = 1L)
|
||||
void uploadPic_success() throws Exception {
|
||||
VeneerDO veneerDO = new VeneerDO();
|
||||
veneerDO.setId(1L);
|
||||
when(veneerMapper.selectById(1L)).thenReturn(veneerDO);
|
||||
|
||||
// mock organApi
|
||||
OrganizationDTO dto = new OrganizationDTO();
|
||||
@@ -279,7 +282,7 @@ class VeneerServiceImplTest extends BaseMockitoUnitTest {
|
||||
"test-content".getBytes()
|
||||
);
|
||||
|
||||
Long fileId = veneerService.uploadPic(file);
|
||||
Long fileId = veneerService.uploadPic(1L, file);
|
||||
|
||||
assertEquals(100L, fileId);
|
||||
|
||||
@@ -288,11 +291,16 @@ class VeneerServiceImplTest extends BaseMockitoUnitTest {
|
||||
any(byte[].class),
|
||||
argThat(name -> name.contains("测试组织-veneer-pic-file-"))
|
||||
);
|
||||
verify(veneerMapper).update(argThat((LambdaUpdateWrapper<VeneerDO> wrapper) ->
|
||||
wrapper.getSqlSegment().contains("id") && wrapper.getSqlSet().contains("file_id")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithMockLoginUser(organId = 1L)
|
||||
void uploadPic_fail_when_organ_api_error() {
|
||||
VeneerDO veneerDO = new VeneerDO();
|
||||
veneerDO.setId(1L);
|
||||
when(veneerMapper.selectById(1L)).thenReturn(veneerDO);
|
||||
|
||||
when(organApi.getOrganDetails(1L))
|
||||
.thenReturn(CommonResult.error(500, "组织服务异常"));
|
||||
@@ -306,13 +314,31 @@ class VeneerServiceImplTest extends BaseMockitoUnitTest {
|
||||
|
||||
ServiceException ex = assertThrows(
|
||||
ServiceException.class,
|
||||
() -> veneerService.uploadPic(file)
|
||||
() -> veneerService.uploadPic(1L, file)
|
||||
);
|
||||
|
||||
assertEquals(500, ex.getCode());
|
||||
assertEquals("组织服务异常", ex.getMessage());
|
||||
|
||||
verify(fileApi, never()).createFileAndReturnId(any(), any());
|
||||
verify(veneerMapper, never()).update(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void uploadPic_fail_when_veneer_not_exists() {
|
||||
MockMultipartFile file = new MockMultipartFile(
|
||||
"file",
|
||||
"test.jpg",
|
||||
"image/jpeg",
|
||||
"content".getBytes()
|
||||
);
|
||||
|
||||
assertServiceException(() -> veneerService.uploadPic(999L, file),
|
||||
VENEER_NOT_EXIST);
|
||||
|
||||
verify(organApi, never()).getOrganDetails(anyLong());
|
||||
verify(fileApi, never()).createFileAndReturnId(any(), any());
|
||||
verify(veneerMapper, never()).update(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user