mac il y a 2 ans
Parent
commit
e6826899e6

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

@@ -346,6 +346,9 @@ public class DtsController {
             if ("TradeDaySummary".equals(dmlData.getTableName())) {
                 kxsUserTradeService.changeData(dmlData);
             }
+            if ("TradeDaySummary2".equals(dmlData.getTableName())) {
+                kxsUserTradeService.change2Data(dmlData);
+            }
 
 
 

+ 87 - 80
kxs-transfer/src/main/java/com/kxs/transfer/api/service/stat/KxsUserTradeService.java

@@ -1,20 +1,16 @@
 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.core.toolkit.Wrappers;
 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;
 
@@ -25,7 +21,7 @@ import java.util.Map;
  * @since 2024-05-07 17:25:06
  */
 @Service("kxsUserTradeService")
-public class KxsUserTradeService extends ServiceImpl<KxsUserTradeMapper, KxsUserTrade>{
+public class KxsUserTradeService extends ServiceImpl<KxsUserTradeMapper, KxsUserTrade> {
 
     public void changeData(DMLData dmlData) {
         //修改的字段值
@@ -37,97 +33,109 @@ public class KxsUserTradeService extends ServiceImpl<KxsUserTradeMapper, KxsUser
         //操作的主键
         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;
-        }
+        //每个请求线程维护一个month数据,避免多线程数据冲突
+        MonthTableNameHandler.setData(tradeMonth);
 
-        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 (fieldDataMap.get("UserId").getValue() != null) {
+            userTrade.setUserId(Integer.valueOf(fieldDataMap.get("UserId").getValue().toString()));
         }
-        if (operation.equals(OperationType.UPDATE)) {
-            // 更新数据
-            baseMapper.updateById(userTrade);
+        if (fieldDataMap.get("TradeDate").getValue() != null) {
+            userTrade.setTradeDate(Integer.valueOf(fieldDataMap.get("TradeDate").getValue().toString()));
         }
-        if (operation.equals(OperationType.INSERT)) {
-            KxsUserAmountLog kxsUserAmountLog = baseMapper.selectById(userTrade.getId());
-            if (kxsUserAmountLog == null) {
-                // 插入数据
-                baseMapper.insert(userTrade);
+        if (fieldDataMap.get("TradeMonth").getValue() != null) {
+            userTrade.setTradeMonth(Integer.valueOf(fieldDataMap.get("TradeMonth").getValue().toString()));
+        }
+        if (fieldDataMap.get("BrandId").getValue() != null) {
+            userTrade.setBrandId(Integer.valueOf(fieldDataMap.get("BrandId").getValue().toString()));
+        }
+        if (fieldDataMap.get("SeoTitle").getValue() != null) {
+            String seoTitle = fieldDataMap.get("SeoTitle").getValue().toString();
+            if ("self".equals(seoTitle)) {
+                userTrade.setTotalType(0);
+                userTrade.setHelpDirectTradeAmt(new BigDecimal(fieldDataMap.get("HelpDirectTradeAmt").getValue().toString()));
+                userTrade.setHelpDebitTradeAmt(new BigDecimal(fieldDataMap.get("HelpDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProDirectTradeAmt(new BigDecimal(fieldDataMap.get("NotHelpDirectTradeAmt").getValue().toString()));
+                userTrade.setProDebitTradeAmt(new BigDecimal(fieldDataMap.get("NotHelpDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProADirectTradeAmt(new BigDecimal(fieldDataMap.get("ProfitDirectTradeAmt").getValue().toString()));
+                userTrade.setProADebitTradeAmt(new BigDecimal(fieldDataMap.get("ProfitNonDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProADebitCapTradeAmt(new BigDecimal(fieldDataMap.get("ProfitDirectDebitCapTradeAmt").getValue().toString()));
             } else {
-                baseMapper.updateById(userTrade);
+                userTrade.setTotalType(1);
+                userTrade.setHelpDirectTradeAmt(new BigDecimal(fieldDataMap.get("HelpNonDirectTradeAmt").getValue().toString()));
+                userTrade.setHelpDebitTradeAmt(new BigDecimal(fieldDataMap.get("HelpNonDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProDirectTradeAmt(new BigDecimal(fieldDataMap.get("NotHelpNonDirectTradeAmt").getValue().toString()));
+                userTrade.setProDebitTradeAmt(new BigDecimal(fieldDataMap.get("NotHelpNonDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProADirectTradeAmt(new BigDecimal(fieldDataMap.get("ProfitNonDirectTradeAmt").getValue().toString()));
+                userTrade.setProADebitTradeAmt(new BigDecimal(fieldDataMap.get("ProfitNonDirectDebitTradeAmt").getValue().toString()));
+                userTrade.setProADebitCapTradeAmt(new BigDecimal(fieldDataMap.get("ProfitNonDirectDebitTradeAmt").getValue().toString()));
             }
         }
+        if (fieldDataMap.get("QueryCount").getValue() != null) {
+            userTrade.setTradeType(Integer.valueOf(fieldDataMap.get("QueryCount").getValue().toString()));
+        }
+        if (fieldDataMap.get("HelpDirectDebitCapTradeAmt").getValue() != null) {
+            userTrade.setHelpDebitCapTradeAmt(new BigDecimal(fieldDataMap.get("HelpDirectDebitCapTradeAmt").getValue().toString()));
+        }
+        if (fieldDataMap.get("HelpDirectDebitCapNum").getValue() != null) {
+            userTrade.setHelpDebitCapNum(Integer.valueOf(fieldDataMap.get("HelpDirectDebitCapNum").getValue().toString()));
+        }
+        if (fieldDataMap.get("NotHelpDirectDebitCapNum").getValue() != null) {
+            userTrade.setProDebitCapNum(Integer.valueOf(fieldDataMap.get("NotHelpDirectDebitCapNum").getValue().toString()));
+        }
+        if (fieldDataMap.get("ProfitDirectDebitCapNum").getValue() != null) {
+            userTrade.setProADebitCapNum(Integer.valueOf(fieldDataMap.get("ProfitDirectDebitCapNum").getValue().toString()));
+        }
+
+        KxsUserTrade kxsUserTrade = baseMapper.selectOne(Wrappers.<KxsUserTrade>lambdaQuery()
+                .eq(KxsUserTrade::getUserId, userTrade.getUserId())
+                .eq(KxsUserTrade::getBrandId, userTrade.getBrandId())
+                .eq(KxsUserTrade::getTradeType, userTrade.getTradeType())
+                .eq(KxsUserTrade::getTotalType, userTrade.getTotalType())
+                .eq(KxsUserTrade::getTradeMonth, userTrade.getTradeMonth())
+                .eq(KxsUserTrade::getTradeDate, userTrade.getTradeDate()));
+        if (kxsUserTrade == null) {
+            // 插入数据
+            baseMapper.insert(userTrade);
+        } else {
+            userTrade.setId(kxsUserTrade.getId());
+            baseMapper.updateById(userTrade);
+        }
+
         //删除线程,避免线程污染
         MonthTableNameHandler.removeData();
 
-
     }
+
+    public void change2Data(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();
+
+        String tradeMonth;
+        if (fieldDataMap.get("TradeMonth") != null && fieldDataMap.get("TradeMonth").getValue() != null) {
+            tradeMonth = fieldDataMap.get("TradeMonth").getValue().toString();
+        } else {
+            tradeMonth = MonthTableNameHandler.getThisMoth();
+        }
+        //每个请求线程维护一个month数据,避免多线程数据冲突
+        MonthTableNameHandler.setData(tradeMonth);
     }
+}
 
 
 
@@ -147,5 +155,4 @@ public class KxsUserTradeService extends ServiceImpl<KxsUserTradeMapper, KxsUser
 
 
 
-}