Explorar o código

用户收支明细自动分表,自动建表

mac %!s(int64=2) %!d(string=hai) anos
pai
achega
96e283296d

+ 4 - 0
kxs-user/kxs-user-biz/pom.xml

@@ -75,6 +75,10 @@
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-crypto</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>kxs-product-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserAmountLogMapper.java

@@ -21,5 +21,6 @@ public interface KxsUserAmountLogMapper extends BaseMapper<KxsUserAmountLog> {
 
     IPage<UserAmountVariationListVO> getByPage(Page<UserAmountVariationListVO> page, @Param("query") UserAmountVariationListDTO param);
 
+    void automaticTableCreationTasks(String tableName);
 }
 

+ 43 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/task/KxsUserTaskJob.java

@@ -0,0 +1,43 @@
+package com.kxs.user.biz.task;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.kxs.common.mybatis.handler.MonthTableNameHandler;
+import com.kxs.user.biz.mapper.KxsUserAmountLogMapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+
+/**
+ * 产品模块定时任务
+ *
+ * @author 没秃顶的码农
+ * @date 2024-03-13
+ */
+@Component
+@EnableAsync
+@EnableScheduling
+@RequiredArgsConstructor
+@Slf4j
+public class KxsUserTaskJob {
+
+    private final KxsUserAmountLogMapper kxsUserAmountLogMapper;
+
+
+    /**
+     * 自动表创建任务
+     * 每个月15号建立下个月的收支日志表
+     */
+    @Async(value = "getAsyncExecutor")
+    @Scheduled(cron = "0 15 10 15 * ?")
+    public void automaticTableCreationTasks() {
+        String thisMoth = LocalDateTimeUtil.format(LocalDate.now().plusMonths(1L), DatePattern.SIMPLE_MONTH_PATTERN);
+        kxsUserAmountLogMapper.automaticTableCreationTasks("kxs_user_amount_log_" +thisMoth);
+    }
+}

+ 3 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAmountLogMapper.xml

@@ -22,6 +22,9 @@
         <result column="brand_id" property="brandId" />
 
     </resultMap>
+    <update id="automaticTableCreationTasks" parameterType="String">
+        CREATE  TABLE IF NOT EXISTS `${tableName}` LIKE kxs_user_amount_log;
+    </update>
     <select id="getByPage" resultType="com.kxs.user.api.vo.kxsapp.userAccount.UserAmountVariationListVO">
         SELECT * from kxs_user_amount_log
         <where>