Procházet zdrojové kódy

同步统计数据

mac před 2 roky
rodič
revize
acdaf0da50

+ 1 - 1
kxs-common/kxs-common-mybatis/src/main/java/com/kxs/common/mybatis/config/MybatisPlusConfig.java

@@ -30,7 +30,7 @@ public class MybatisPlusConfig {
         //动态分表
         DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
         dynamicTableNameInnerInterceptor.setTableNameHandler(
-                new MonthTableNameHandler("kxs_user_amount_log")
+                new MonthTableNameHandler("kxs_user_amount_log", "kxs_user_trade")
         );
 
         interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);

+ 7 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/model/KxsUserTrade.java

@@ -67,6 +67,13 @@ public class KxsUserTrade extends Model<KxsUserTrade> implements Serializable {
     private Integer version;
 
 
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID")
+    private Integer userId;
+
+
     /**
      * 交易日
      */

+ 1 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml

@@ -8,6 +8,7 @@
         <result column="update_time" property="updateTime" />
         <result column="del_flag" property="delFlag" />
         <result column="version" property="version" />
+        <result column="user_id" property="userId" />
         <result column="trade_date" property="tradeDate" />
         <result column="trade_month" property="tradeMonth" />
         <result column="brand_id" property="brandId" />

+ 4 - 0
kxs-transfer/pom.xml

@@ -66,6 +66,10 @@
             <groupId>com.kxs</groupId>
             <artifactId>kxs-store-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.kxs</groupId>
+            <artifactId>kxs-stat-api</artifactId>
+        </dependency>
         <!--core 工具类-->
         <dependency>
             <groupId>com.kxs</groupId>

+ 11 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -19,6 +19,7 @@ import com.kxs.transfer.api.service.KxsDtsLogService;
 import com.kxs.transfer.api.service.product.*;
 import com.kxs.transfer.api.service.product.impl.KxsMachineTrackService;
 import com.kxs.transfer.api.service.product.impl.KxsShopOrderService;
+import com.kxs.transfer.api.service.stat.KxsUserTradeService;
 import com.kxs.transfer.api.service.store.KxsMachineRecycleService;
 import com.kxs.transfer.api.service.store.KxsWarehouseService;
 import com.kxs.transfer.api.service.store.impl.*;
@@ -95,6 +96,9 @@ public class DtsController {
     private final KxsWarehouseLimitLogService kxsWarehouseLimitLogService;
     private final KxsActTotalService kxsActTotalService;
 
+    //统计模块
+    private final KxsUserTradeService kxsUserTradeService;
+
     @Value("${spring.profiles.active}")
     private String active;
 
@@ -338,6 +342,13 @@ public class DtsController {
                 kxsSysMsgService.changeModalData(dmlData);
             }
 
+            //创客交易额统计表
+            if ("TradeDaySummary".equals(dmlData.getTableName())) {
+                kxsUserTradeService.changeData(dmlData);
+            }
+
+
+
             //存储历史数据
             KxsDtsLog kxsDtsLog = new KxsDtsLog();
             kxsDtsLog.setDataId(dataId);

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/stat/KxsMerchantTradeMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.stat;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.stat.api.model.KxsMerchantTrade;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 商户交易统计总表(KxsMerchantTrade)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:06
+ */
+@Mapper
+@DS("stat")
+public interface KxsMerchantTradeMapper extends BaseMapper<KxsMerchantTrade> {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/stat/KxsUserActTradeMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.stat;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.stat.api.model.KxsUserActTrade;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 创客激活统计表(KxsUserActTrade)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:05
+ */
+@Mapper
+@DS("stat")
+public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
+
+}
+

+ 19 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/stat/KxsUserTradeMapper.java

@@ -0,0 +1,19 @@
+package com.kxs.transfer.api.mapper.stat;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.stat.api.model.KxsUserTrade;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 个人交易统计总表(KxsUserTrade)表数据库访问层
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:06
+ */
+@Mapper
+@DS("stat")
+public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
+
+}
+

+ 18 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsMerchantTradeService.java

@@ -0,0 +1,18 @@
+package com.kxs.transfer.api.service.stat;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.stat.api.model.KxsMerchantTrade;
+import com.kxs.transfer.api.mapper.stat.KxsMerchantTradeMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * 商户交易统计总表(KxsMerchantTrade)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:06
+ */
+@Service("kxsMerchantTradeService")
+public class KxsMerchantTradeService extends ServiceImpl<KxsMerchantTradeMapper, KxsMerchantTrade>{
+
+}
+

+ 18 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsUserActTradeService.java

@@ -0,0 +1,18 @@
+package com.kxs.transfer.api.service.stat;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.stat.api.model.KxsUserActTrade;
+import com.kxs.transfer.api.mapper.stat.KxsUserActTradeMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * 创客激活统计表(KxsUserActTrade)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:06
+ */
+@Service("kxsUserActTradeService")
+public class KxsUserActTradeService extends ServiceImpl<KxsUserActTradeMapper, KxsUserActTrade> {
+
+}
+

+ 151 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsUserTradeService.java

@@ -0,0 +1,151 @@
+package com.kxs.transfer.api.service.stat;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.aliyun.dts.subscribe.clients.record.OperationType;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.enums.KindTypeEnum;
+import com.kxs.common.mybatis.handler.MonthTableNameHandler;
+import com.kxs.stat.api.model.KxsUserTrade;
+import com.kxs.transfer.api.mapper.stat.KxsUserTradeMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
+import com.kxs.user.api.model.KxsUserAmountLog;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 个人交易统计总表(KxsUserTrade)表服务实现类
+ *
+ * @author 系统
+ * @since 2024-05-07 17:25:06
+ */
+@Service("kxsUserTradeService")
+public class KxsUserTradeService extends ServiceImpl<KxsUserTradeMapper, KxsUserTrade>{
+
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //全部字段值
+        Map<String, FieldData> fieldDataMap = dmlData.getFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+
+        KxsUserTrade userTrade = new KxsUserTrade();
+        userTrade.setId(id);
+        String tradeMonth;
+        if (fieldDataMap.get("TradeMonth") != null && fieldDataMap.get("TradeMonth").getValue() != null) {
+            tradeMonth = fieldDataMap.get("TradeMonth").getValue().toString();
+        } else {
+            tradeMonth = MonthTableNameHandler.getThisMoth();
+        }
+        //操作类型
+        OperationType operation = dmlData.getOperation();
+        if (operation.equals(OperationType.DELETE)) {
+            // 删除数据
+            baseMapper.deleteById(id);
+            //删除线程,避免线程污染
+            MonthTableNameHandler.removeData();
+            return;
+        }
+
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    userTrade.setUserId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "TradeDate":
+                    userTrade.setTradeDate(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "TradeMonth":
+                    userTrade.setTradeMonth(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BrandId":
+                    userTrade.setBrandId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "SeoTitle":
+                    String changeType = validFieldDataMap.get(field).toString();
+                    if ("self".equals(changeType)) {
+                        userTrade.setTotalType(0);
+                    } else {
+                        userTrade.setTotalType(1);
+                    }
+
+                    break;
+                case "QueryCount":
+                    userTrade.setTradeType(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BeforeTotalAmount":
+                    userTrade.setBeforeTotalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "AfterTotalAmount":
+                    userTrade.setAfterTotalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BeforeBalanceAmount":
+                    userTrade.setBeforeAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "AfterBalanceAmount":
+                    userTrade.setAfterAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "QueryCount":
+                    userTrade.setVariationCause(validFieldDataMap.get(field).toString());
+                    break;
+                case "Remark":
+                    userTrade.setRemark(validFieldDataMap.get(field).toString());
+                    break;
+                case "CreateDate":
+                    userTrade.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userTrade.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+        if (operation.equals(OperationType.UPDATE)) {
+            // 更新数据
+            baseMapper.updateById(userTrade);
+        }
+        if (operation.equals(OperationType.INSERT)) {
+            KxsUserAmountLog kxsUserAmountLog = baseMapper.selectById(userTrade.getId());
+            if (kxsUserAmountLog == null) {
+                // 插入数据
+                baseMapper.insert(userTrade);
+            } else {
+                baseMapper.updateById(userTrade);
+            }
+        }
+        //删除线程,避免线程污染
+        MonthTableNameHandler.removeData();
+
+
+    }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+