Răsfoiți Sursa

在线收集替换文件后删除被替换的文件

“zhifk” 2 ani în urmă
părinte
comite
1d3d38cbc2

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ArchiveFileVO.java

@@ -85,4 +85,9 @@ public class ArchiveFileVO extends ArchiveFile {
      */
     private String contractType;
 
+    /**
+     * 是否更改文件地址 0 未更改,1已更改
+     */
+    private Integer isUpdateUrl;
+
 }

+ 25 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -12,12 +12,15 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.*;
+import java.util.concurrent.ExecutorService;
 
 /**
  * 服务实现类
@@ -30,6 +33,9 @@ import java.util.*;
 public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, ArchiveFile> implements IArchiveFileService {
 
     private final IDictBizClient dictBizClient;
+    private final NewIOSSClient iossClient;
+
+    private ExecutorService executorService;
 
     @Override
     public IPage<ArchiveFileVO> selectArchiveFilePage(ArchiveFileVO vo) {
@@ -107,10 +113,29 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 //				return integer-t1;
 //			}
 //		});
+        StringBuffer ids = new StringBuffer();
         Collections.sort(listInt);
         for (int i = 0; i < list.size(); i++) {
             list.get(i).setSort(listInt.get(i));
+            if(list.get(i).getIsUpdateUrl() == 1) {
+                ids.append(list.get(i).getId() + ",");
+            }
         }
+        if(ids != null && ids.length()>0){
+        List<String> removeFiles = new ArrayList<>();
+        List<ArchiveFile> archiveFileByFileIds = baseMapper.getArchiveFileByFileIds(Func.toLongList(ids.toString()));
+        if(archiveFileByFileIds!=null && archiveFileByFileIds.size()>0){
+            for(ArchiveFile archiveFile:archiveFileByFileIds){
+                if(StringUtils.isNotEmpty(archiveFile.getFileUrl().trim())){
+                    removeFiles.add(archiveFile.getFileUrl());
+                }
+            }
+            executorService.execute(()->{
+                iossClient.removeFiles(removeFiles);
+            });
+        }
+        }
+
         this.updateBatchById(JSONArray.parseArray(JSONObject.toJSONString(list), ArchiveFile.class));
     }