diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/domain/mapper/DeleteTableMapper.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/domain/mapper/DeleteTableMapper.java new file mode 100644 index 0000000..8ec2511 --- /dev/null +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/domain/mapper/DeleteTableMapper.java @@ -0,0 +1,58 @@ +package com.hanserwei.hannote.data.align.domain.mapper; + +import org.apache.ibatis.annotations.Param; + +/** + * 删除表 + */ +public interface DeleteTableMapper { + + /** + * 删除日增量表:关注数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignFollowingCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:粉丝数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignFansCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:笔记收藏数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignNoteCollectCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:用户被收藏数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignUserCollectCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:用户被点赞数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignUserLikeCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:笔记点赞数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignNoteLikeCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); + + /** + * 删除日增量表:笔记发布数计数变更 + * + * @param tableNameSuffix 表名后缀 + */ + void deleteDataAlignNotePublishCountTempTable(@Param("tableNameSuffix") String tableNameSuffix); +} \ No newline at end of file diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/DeleteTableXxlJob.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/DeleteTableXxlJob.java new file mode 100644 index 0000000..bc2dd29 --- /dev/null +++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/job/DeleteTableXxlJob.java @@ -0,0 +1,70 @@ +package com.hanserwei.hannote.data.align.job; + +import com.hanserwei.hannote.data.align.constant.TableConstants; +import com.hanserwei.hannote.data.align.domain.mapper.DeleteTableMapper; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * 删除最近一个月的日增量临时表 + */ +@Component +public class DeleteTableXxlJob { + + /** + * 表总分片数 + */ + @Value("${table.shards}") + private int tableShards; + + @Resource + private DeleteTableMapper deleteTableMapper; + + /** + * 1、简单任务示例(Bean模式) + */ + @XxlJob("deleteTableJobHandler") + public void deleteTableJobHandler() { + XxlJobHelper.log("## 开始删除最近一个月的日增量临时表"); + // 今日 + LocalDate today = LocalDate.now(); + + // 日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + + LocalDate startDate = today; + // 从昨天开始往前推一个月 + LocalDate endDate = today.minusMonths(1); + + // 循环最近一个月的日期,不包括今天 + while (startDate.isAfter(endDate)) { + // 往前推一天 + startDate = startDate.minusDays(1); + // 日期字符串 + String date = startDate.format(formatter); + + for (int hashKey = 0; hashKey < tableShards; hashKey++) { + // 表名后缀 + String tableNameSuffix = TableConstants.buildTableNameSuffix(date, hashKey); + XxlJobHelper.log("删除表后缀: {}", tableNameSuffix); + + // 删除表 + deleteTableMapper.deleteDataAlignFollowingCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignFansCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignNoteCollectCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignUserCollectCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignUserLikeCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignNoteLikeCountTempTable(tableNameSuffix); + deleteTableMapper.deleteDataAlignNotePublishCountTempTable(tableNameSuffix); + } + } + XxlJobHelper.log("## 结束删除最近一个月的日增量临时表"); + } + +} \ No newline at end of file diff --git a/han-note-data-align/src/main/resources/mapperxml/DeleteTableMapper.xml b/han-note-data-align/src/main/resources/mapperxml/DeleteTableMapper.xml new file mode 100644 index 0000000..db970e9 --- /dev/null +++ b/han-note-data-align/src/main/resources/mapperxml/DeleteTableMapper.xml @@ -0,0 +1,31 @@ + + + + + DROP TABLE IF EXISTS `t_data_align_following_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_fans_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_note_collect_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_user_collect_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_user_like_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_note_like_count_temp_${tableNameSuffix}`; + + + + DROP TABLE IF EXISTS `t_data_align_note_publish_count_temp_${tableNameSuffix}`; + + \ No newline at end of file