diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java index 8064fb3b..22c50d8a 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/FileManageController.java @@ -19,10 +19,9 @@ public class FileManageController { private final FileManageService fileManageService; @ApiOperation("上传文件") @PostMapping("/uploadFile") - public String uploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception { + public FileResource uploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception { - FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType()); - return fileResource.getId(); + return fileManageService.uploadFile(multipartFile, multipartFile.getContentType()); } @@ -33,4 +32,12 @@ public class FileManageController { fileManageService.downloadFile(fileId, response); } + + @ApiOperation("删除文件") + @DeleteMapping("/deleteFile") + public boolean deleteFile(@RequestParam String fileId) throws Exception { + + return fileManageService.deleteFile(fileId); + + } } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java index 4de37bce..f3b52a58 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/file/MaterialLibraryManageController.java @@ -10,6 +10,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; + @Api(tags = "素材库管理") @RestController @RequestMapping("/materialLibrary") @@ -20,10 +22,9 @@ public class MaterialLibraryManageController { @ApiOperation("上传素材") @PostMapping("/uploadMaterial") - public String uploadMaterial(@ApiParam("文件") @RequestParam("file") MultipartFile multipartFile, - MaterialLibrary materialLibrary) throws Exception { + public void uploadMaterial(@RequestBody List materialLibraryList) throws Exception { - return materialLibraryManageService.uploadMaterial(multipartFile,materialLibrary); + materialLibraryManageService.uploadMaterial(materialLibraryList); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java index 96dfef84..f19d60e2 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MaterialLibraryManageService.java @@ -2,18 +2,18 @@ package com.supervision.manage.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.supervision.model.MaterialLibrary; -import org.springframework.web.multipart.MultipartFile; + +import java.util.List; public interface MaterialLibraryManageService { /** * 上传素材库文件 - * @param multipartFile 文件内容 - * @param materialLibrary 素材内容 + * @param materialLibraryList 素材内容 * @return 素材id */ - String uploadMaterial(MultipartFile multipartFile, MaterialLibrary materialLibrary) throws Exception; + void uploadMaterial(List materialLibraryList) throws Exception; IPage queryMaterialPage(String materialType, String materialName, String directoryId,Integer pageNum, Integer pageSize); diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java index b24f3318..57e09ec6 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MaterialLibraryManageServiceImpl.java @@ -10,18 +10,20 @@ import com.supervision.manage.service.FileManageService; import com.supervision.manage.service.MaterialLibraryManageService; import com.supervision.model.FileResource; import com.supervision.model.MaterialLibrary; +import com.supervision.service.FileResourceService; import com.supervision.service.MaterialLibraryService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.tuple.Triple; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -30,19 +32,31 @@ public class MaterialLibraryManageServiceImpl implements MaterialLibraryManageSe private final MaterialLibraryService materialLibraryService; private final FileManageService fileManageService; + + private final FileResourceService fileResourceService; @Override @Transactional(rollbackFor = Exception.class) - public String uploadMaterial(MultipartFile multipartFile,MaterialLibrary materialLibrary) throws Exception { + public void uploadMaterial(List materialLibraryList) throws Exception { // 校验素材名是否已经存在 - Assert.notEmpty(materialLibrary.getMaterialName(), "素材名不能为空"); - Assert.notEmpty(materialLibrary.getMaterialType(), "素材类型不能为空"); - - materialLibrary.setMaterialName(renameIfNecessary(materialLibrary.getMaterialName())); - // 保存素材 - FileResource fileResource = fileManageService.uploadFile(multipartFile, multipartFile.getContentType()); - materialLibrary.setFileResourceId(fileResource.getId()); - materialLibraryService.save(materialLibrary); - return materialLibrary.getId(); + Assert.notEmpty(materialLibraryList, "素材列表不能为空"); + materialLibraryList.forEach(materialLibrary -> { + Assert.notEmpty(materialLibrary.getMaterialType(), "素材类型不能为空"); + Assert.notEmpty(materialLibrary.getFileResourceId(), "文件资源id不能为空"); + }); + + List resourceIds = materialLibraryList.stream().map(MaterialLibrary::getFileResourceId).collect(Collectors.toList()); + Map fileResourceMap = fileResourceService.lambdaQuery() + .in(FileResource::getId, resourceIds).list().stream().collect(Collectors.toMap(FileResource::getId, e -> e)); + + for (MaterialLibrary materialLibrary : materialLibraryList) { + FileResource fileResource = fileResourceMap.get(materialLibrary.getFileResourceId()); + Assert.notNull(fileResource, "文件资源不存在"); + materialLibrary.setMaterialName(renameIfNecessary(fileResource.getFileName())); + // 保存素材 + materialLibrary.setFileResourceId(materialLibrary.getFileResourceId()); + materialLibraryService.save(materialLibrary); + } + } @Override