Просмотр исходного кода

优化历史消息批量删除逻辑及分页大小

wangyunpeng 19 часов назад
Родитель
Сommit
5c4cc91f4e

+ 2 - 0
common-module/src/main/java/com/tzld/piaoquan/growth/common/dao/mapper/HistoryMessageMapper.java

@@ -34,4 +34,6 @@ public interface HistoryMessageMapper {
     int updateByPrimaryKey(HistoryMessage record);
 
     void insertList(@Param("list") List<HistoryMessage> list);
+
+    int deleteByIds(@Param("ids") List<Long> ids);
 }

+ 8 - 0
common-module/src/main/resources/mapper/HistoryMessageMapper.xml

@@ -335,4 +335,12 @@
       )
     </foreach>
   </insert>
+
+  <delete id="deleteByIds">
+    delete from we_com_history_message
+    where id in
+    <foreach collection="ids" item="id" open="(" separator="," close=")">
+      #{id,jdbcType=BIGINT}
+    </foreach>
+  </delete>
 </mapper>

+ 4 - 5
offline-module/src/main/java/com/tzld/piaoquan/offline/job/WeComHistoryDataJob.java

@@ -741,17 +741,16 @@ public class WeComHistoryDataJob {
             Date daysAgoDate = DateUtil.getDaysAgoDate(7);
             HistoryMessageExample example = new HistoryMessageExample();
             example.createCriteria().andCreateTimeLessThan(daysAgoDate);
-            example.setPage(new Page<>(1, 10000));
+            example.setPage(new Page<>(1, 1000));
             example.setOrderByClause("id asc");
             List<HistoryMessage> historyMessages = historyMessageMapper.selectByExample(example);
-            log.info("copyHistoryMessageJob historyMessages={}", historyMessages);
+            log.info("copyHistoryMessageJob historyMessages.size={}", historyMessages.size());
             if (CollectionUtils.isEmpty(historyMessages)) {
                 break;
             }
             historyMessageBackupMapper.insertList(historyMessages);
-            for (HistoryMessage historyMessage : historyMessages) {
-                historyMessageMapper.deleteByPrimaryKey(historyMessage.getId());
-            }
+            List<Long> ids = historyMessages.stream().map(HistoryMessage::getId).collect(Collectors.toList());
+            historyMessageMapper.deleteByIds(ids);
             Thread.sleep(1000);
         }
         return ReturnT.SUCCESS;