Selaa lähdekoodia

逻辑删除档案,真实删除阿里云上档案相关文件

qianxb 2 vuotta sitten
vanhempi
commit
3e1486dbf0

+ 4 - 0
blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/NewIOSSClient.java

@@ -19,6 +19,7 @@ public interface NewIOSSClient {
     String UPLOAD_FILE_INFO_BYTE = API_PREFIX + "/uploadFileInfoByte";
     String UPLOAD_FILE_INFO_INPUT_STREAM = API_PREFIX + "/uploadFileInfoInputStream";
     String REMOVE_PDF_FILE = API_PREFIX + "/remove-file";
+    String REMOVE_PDF_FILES = API_PREFIX + "/remove-files";
     String UPLOAD_FILE_INFO_WITH_PATH = API_PREFIX + "/uploadFileInfoWithPath";
 
     @PostMapping(value = UPLOAD_FILE_INFO_INPUT_STREAM, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@@ -47,4 +48,7 @@ public interface NewIOSSClient {
 
     @PostMapping(REMOVE_PDF_FILE)
     void removeFile(@RequestParam String fileName);
+
+    @PostMapping(REMOVE_PDF_FILES)
+    void removeFiles(@RequestParam List<String> fileNames);
 }

+ 3 - 1
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/AliossTemplateRe.java

@@ -214,7 +214,9 @@ public class AliossTemplateRe implements OssTemplateRe {
 
     public void removeFiles(List<String> fileNames) {
         try {
-            fileNames.forEach(this::removeFile);
+            fileNames.forEach((fileName) -> {
+                this.removeFile(fileName);
+            });
         } catch (Throwable var3) {
             throw var3;
         }

+ 5 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/NewIOSSClientImpl.java

@@ -55,6 +55,11 @@ public class NewIOSSClientImpl implements NewIOSSClient {
         ossBuilder.template().removeFile(fileName);
     }
 
+    @Override
+    public void removeFiles(List<String> fileNames) {
+        ossBuilder.template().removeFiles(fileNames);
+    }
+
     @Override
     public BladeFile uploadFile(String fileName, String localFileUrl) {
         try {

+ 18 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -50,6 +50,7 @@ import org.springblade.manager.feign.WbsInfoClient;
 import org.springblade.manager.vo.ArchiveTreeContractVO2;
 import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.ProjectClient;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springframework.stereotype.Service;
@@ -77,6 +78,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 	private Map<String,Integer> indexMap = new HashMap<>(); //按立卷位区分和生成流水号
 	private IArchiveAutoPdfService archiveAutoPdfService;
+	private final NewIOSSClient iossClient;
 
 
 
@@ -295,11 +297,22 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		List<String> list = Arrays.asList(ids.split(","));
 		//查询出档案的文件
 		List<ArchiveFile> files = archiveFileClient.getAllArchiveFileByArchiveIds(list);
-		//销毁阿里云上文件
-
-		//删除文件
-		List<Long> collect = files.stream().map(file -> file.getId()).collect(Collectors.toList());
-		archiveFileClient.batchDeleteArchiveFile(collect);
+		if (files != null && files.size() > 0) {
+			//销毁阿里云上文件
+			List<String> removeFiles = new ArrayList<>();
+			for (ArchiveFile file : files) {
+				if (StringUtils.isNotBlank(file.getFileUrl())){
+					removeFiles.add(file.getFileUrl().substring(file.getFileUrl().lastIndexOf("upload")));
+				}
+				if (StringUtils.isNotBlank(file.getPdfFileUrl())){
+					removeFiles.add(file.getPdfFileUrl().substring(file.getPdfFileUrl().lastIndexOf("upload")));
+				}
+			}
+			iossClient.removeFiles(removeFiles);
+			//删除文件
+			List<Long> collect = files.stream().map(file -> file.getId()).collect(Collectors.toList());
+			archiveFileClient.batchDeleteArchiveFile(collect);
+		}
 		//删除案卷
 		baseMapper.deleteBatchIds(list);
 	}

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -290,7 +290,7 @@
     </select>
     <select id="getAllArchiveFileByArchiveIds" resultType="org.springblade.business.entity.ArchiveFile">
         SELECT * FROM u_archive_file
-        WHERE archive_id in
+        WHERE is_deleted = 0 and archive_id in
         <foreach collection="ids" item="id" open="(" separator="," close=")">
             #{id}
         </foreach>