From 5be9313e0b2b6f4114acce0eae9bc5805158a798 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 30 十二月 2024 11:22:15 +0800
Subject: [PATCH] 子删除过期文件

---
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml         |    4 ++++
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/sync/deleteSync.java     |   28 ++++++++++++++++++++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java |    2 ++
 3 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java
index 22aa07a..3907fae 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java
@@ -18,4 +18,6 @@
 public interface SysOssMapper extends BaseMapperPlus<SysOss, SysOssVo> {
 
     List<Long> getWillDeleted(@Param("maxTime") LocalDateTime maxTime);
+
+    void deleteIds(@Param("ids") List<Long> ids);
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/sync/deleteSync.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/sync/deleteSync.java
index 880148c..f1ca2a9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/sync/deleteSync.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/sync/deleteSync.java
@@ -1,6 +1,9 @@
 package org.dromara.system.sync;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.oss.core.OssClient;
+import org.dromara.common.oss.factory.OssFactory;
 import org.dromara.system.domain.SysOss;
 import org.dromara.system.domain.properties.Boundary;
 import org.dromara.system.domain.vo.SysOssVo;
@@ -12,7 +15,9 @@
 import java.io.IOException;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Objects;
 
+@Slf4j
 @Component
 public class deleteSync {
 
@@ -39,4 +44,27 @@
                 String.valueOf(ossId));
         }
     }
+
+    /**
+     * 姣忓皬鏃跺垹闄�2澶╀箣鍓嶇殑鏂囦欢淇℃伅锛屽洜涓轰笂闈㈢殑鍚屾鍒犻櫎骞朵笉鑳戒繚璇佷簨鍔�
+     *
+     * @throws IOException
+     */
+    @Scheduled(cron = "0 0 * * * ?")
+    public void removeOssTable() throws IOException {
+        log.error("姣忓皬鏃跺畾鏃跺垹闄よ秴杩�2澶╃殑鏁版嵁搴撴枃浠朵俊鎭�......");
+        List<Long> ids = baseMapper.getWillDeleted(LocalDateTime.now().minusDays(2));
+        if (ids.size() == 0) {
+            return;
+        }
+        // 鍒犻櫎瀵瑰簲鏂囦欢
+        OssClient ossClient = OssFactory.instance();
+        for (Long ossId : ids) {
+            SysOss sysOss = baseMapper.selectById(ossId);
+            if (Objects.nonNull(sysOss)) {
+                ossClient.delete(sysOss.getFileName());
+            }
+        }
+        baseMapper.deleteIds(ids);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml
index cb74c1c..ef4fbf0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml
@@ -6,4 +6,8 @@
         SELECT oss_id from sys_oss WHERE create_time &lt;= #{maxTime}
     </select>
 
+    <delete id="deleteIds" parameterType="integer">
+        DELETE FROM sys_oss WHERE oss_id IN <foreach collection="ids" open="(" separator="," close=")" item="id">#{id}</foreach>
+    </delete>
+
 </mapper>

--
Gitblit v1.8.0