Jelajahi Sumber

定时删除 detail 数据 数据量太大了

xgb 4 hari lalu
induk
melakukan
8406baba0a

+ 19 - 0
fs-admin/src/main/java/com/fs/his/task/Task.java

@@ -63,6 +63,7 @@ import com.fs.huifuPay.domain.HuiFuQueryOrderResult;
 import com.fs.huifuPay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
 import com.fs.huifuPay.service.HuiFuService;
 import com.fs.im.dto.*;
+import com.fs.im.service.IFsImMsgSendDetailService;
 import com.fs.im.service.IImService;
 import com.fs.im.service.OpenIMService;
 import com.fs.qw.domain.QwCompany;
@@ -234,6 +235,9 @@ public class Task {
     @Autowired
     private AiHookService aiHookService;
 
+    @Autowired
+    private IFsImMsgSendDetailService fsImMsgSendDetailService;
+
 
     /**
      * 定时任务,处理ai禁止回复之后的消息
@@ -1872,5 +1876,20 @@ public class Task {
         allFutures.join(); // 等待所有任务完成
     }
 
+    /**
+     * @Description: 定时删除数据
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/3/6 9:22
+     */
+    public void deleteDataIM(Integer days){
+        if(days==null){
+            days=3;
+        }
+        fsImMsgSendDetailService.cleanOldData( days);
+    }
+
+
 
 }

+ 8 - 0
fs-service/src/main/java/com/fs/im/mapper/FsImMsgSendDetailMapper.java

@@ -62,4 +62,12 @@ public interface FsImMsgSendDetailMapper extends BaseMapper<FsImMsgSendDetail>{
 
     List<FsImMsgSendDetailVO> selectSendDetailVOList(Long logId);
 
+    /**
+     * 删除指定日期之前的数据
+     *
+     * @param date 需要删除的日期(保留该日期之后的数据)
+     * @return 结果
+     */
+    int deleteDataByDate(java.util.Date date);
+
 }

+ 15 - 7
fs-service/src/main/java/com/fs/im/service/IFsImMsgSendDetailService.java

@@ -6,14 +6,14 @@ import com.fs.im.domain.FsImMsgSendDetail;
 
 /**
  * openim消息记录详情Service接口
- * 
+ *
  * @author fs
  * @date 2025-08-21
  */
 public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
     /**
      * 查询openim消息记录详情
-     * 
+     *
      * @param logDetailId openim消息记录详情主键
      * @return openim消息记录详情
      */
@@ -21,7 +21,7 @@ public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
 
     /**
      * 查询openim消息记录详情列表
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return openim消息记录详情集合
      */
@@ -29,7 +29,7 @@ public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
 
     /**
      * 新增openim消息记录详情
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return 结果
      */
@@ -37,7 +37,7 @@ public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
 
     /**
      * 修改openim消息记录详情
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return 结果
      */
@@ -45,7 +45,7 @@ public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
 
     /**
      * 批量删除openim消息记录详情
-     * 
+     *
      * @param logDetailIds 需要删除的openim消息记录详情主键集合
      * @return 结果
      */
@@ -53,9 +53,17 @@ public interface IFsImMsgSendDetailService extends IService<FsImMsgSendDetail>{
 
     /**
      * 删除openim消息记录详情信息
-     * 
+     *
      * @param logDetailId openim消息记录详情主键
      * @return 结果
      */
     int deleteFsImMsgSendDetailByLogDetailId(Long logDetailId);
+
+    /**
+     * 清理指定天数之前的数据
+     *
+     * @param days 保留的天数
+     * @return 删除的记录数
+     */
+    int cleanOldData(int days);
 }

+ 22 - 7
fs-service/src/main/java/com/fs/im/service/impl/FsImMsgSendDetailServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.im.service.impl;
 
+import java.util.Calendar;
 import java.util.List;
 import com.fs.common.utils.DateUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,7 +12,7 @@ import com.fs.im.service.IFsImMsgSendDetailService;
 
 /**
  * openim消息记录详情Service业务层处理
- * 
+ *
  * @author fs
  * @date 2025-08-21
  */
@@ -20,7 +21,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 查询openim消息记录详情
-     * 
+     *
      * @param logDetailId openim消息记录详情主键
      * @return openim消息记录详情
      */
@@ -32,7 +33,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 查询openim消息记录详情列表
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return openim消息记录详情
      */
@@ -44,7 +45,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 新增openim消息记录详情
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return 结果
      */
@@ -57,7 +58,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 修改openim消息记录详情
-     * 
+     *
      * @param fsImMsgSendDetail openim消息记录详情
      * @return 结果
      */
@@ -69,7 +70,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 批量删除openim消息记录详情
-     * 
+     *
      * @param logDetailIds 需要删除的openim消息记录详情主键
      * @return 结果
      */
@@ -81,7 +82,7 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
 
     /**
      * 删除openim消息记录详情信息
-     * 
+     *
      * @param logDetailId openim消息记录详情主键
      * @return 结果
      */
@@ -90,4 +91,18 @@ public class FsImMsgSendDetailServiceImpl extends ServiceImpl<FsImMsgSendDetailM
     {
         return baseMapper.deleteFsImMsgSendDetailByLogDetailId(logDetailId);
     }
+
+    /**
+     * 清理指定天数之前的数据
+     *
+     * @param days 保留的天数
+     * @return 删除的记录数
+     */
+    @Override
+    public int cleanOldData(int days) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DAY_OF_MONTH, -days);
+        java.util.Date cutoffDate = calendar.getTime();
+        return baseMapper.deleteDataByDate(cutoffDate);
+    }
 }

+ 6 - 1
fs-service/src/main/resources/mapper/im/FsImMsgSendDetailMapper.xml

@@ -103,7 +103,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
-<!--    <insert id="insertFsImMsgSendDetailBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="logDetailId">-->
+    <delete id="deleteDataByDate" parameterType="java.util.Date">
+        DELETE FROM fs_im_msg_send_detail
+        WHERE create_time &lt; #{date}
+    </delete>
+
+    <!--    <insert id="insertFsImMsgSendDetailBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="logDetailId">-->
 <!--        insert into fs_im_msg_send_detail (-->
 <!--            log_id,-->
 <!--            company_user_id,-->