Browse Source

用户账户数据同步

mac 2 năm trước cách đây
mục cha
commit
1cdc849288

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

@@ -8,6 +8,7 @@ import com.kxs.transfer.api.model.KxsDtsLog;
 import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.transfer.api.service.KxsDtsLogService;
 import com.kxs.transfer.api.service.user.KxsUserAddressService;
+import com.kxs.transfer.api.service.user.KxsUserAmountService;
 import com.kxs.transfer.api.service.user.KxsUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +35,7 @@ public class DtsController {
 
     private final KxsUserService kxsUserService;
     private final KxsUserAddressService kxsUserAddressService;
+    private final KxsUserAmountService kxsUserAmountService;
 
     @DtsMsgListener
     public void dtsListener(Long dataId, DMLData dmlData, DefaultUserRecord record){
@@ -72,6 +74,10 @@ public class DtsController {
         if("UserAddress".equals(dmlData.getTableName())){
             kxsUserAddressService.changeData(dmlData);
         }
+        //用户账户
+        if("UserAccount".equals(dmlData.getTableName())){
+            kxsUserAmountService.changeData(dmlData);
+        }
         //密码操作
         if("UserMoveInfo".equals(dmlData.getTableName())){
             kxsUserService.changeUserPwd(dmlData);

+ 2 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountService.java

@@ -2,6 +2,7 @@ package com.kxs.transfer.api.service.user;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
+import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.user.api.model.KxsUserAmount;
 import com.kxs.user.api.model.KxsUserAmountLog;
 import com.kxs.user.api.vo.kxsapp.userAccount.MyAccountVO;
@@ -15,5 +16,6 @@ import com.kxs.user.api.vo.kxsapp.userAccount.MyAccountVO;
 public interface KxsUserAmountService extends IService<KxsUserAmount> {
 
 
+    void changeData(DMLData dmlData);
 }
 

+ 69 - 3
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountServiceImpl.java

@@ -1,12 +1,21 @@
 package com.kxs.transfer.api.service.user.impl;
 
+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.transfer.api.mapper.user.KxsUserAmountMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
 import com.kxs.transfer.api.service.user.KxsUserAmountService;
 import com.kxs.user.api.model.KxsUserAmount;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 用户账户表(KxsUserAmount)表服务实现类
  *
@@ -18,12 +27,69 @@ import org.springframework.stereotype.Service;
 public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, KxsUserAmount> implements KxsUserAmountService {
 
 
+    @Override
+    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());
 
+        KxsUserAmount userAmount = new KxsUserAmount();
+        userAmount.setId(id);
 
+        //操作类型
+        OperationType operation = dmlData.getOperation();
+        for (String field : changeFieldList) {
 
+            switch (field) {
+                case "TotalAmount":
+                    userAmount.setAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "FreezeAmount":
+                    userAmount.setFrozenAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "WithdrawAmount":
+                    userAmount.setCashWithdrawalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "TotalProfit":
+                    userAmount.setTotalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ToChargeAmount":
+                    userAmount.setAdvanceAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "LeaderReserve":
+                    userAmount.setLeaderReserve(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "LeaderBalanceAmount":
+                    userAmount.setLeaderBalanceAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "LeaderToChargeAmount":
+                    userAmount.setLeaderAdvanceAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "OperateToChargeAmount":
+                    userAmount.setPartnerAdvanceAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "CreateDate":
+                    userAmount.setCreateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userAmount.setUpdateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
 
-
-
-
+        if(operation.equals(OperationType.UPDATE)){
+            // 更新数据
+            baseMapper.updateById(userAmount);
+        }
+        if(operation.equals(OperationType.INSERT)){
+            // 插入数据
+            baseMapper.insert(userAmount);
+        }
+    }
 }
 

+ 7 - 1
kxs-transfer/src/main/resources/import.txt

@@ -20,4 +20,10 @@ SUBSTRING_INDEX(Areas, ',', 1) AS province,
 SUBSTRING_INDEX(SUBSTRING_INDEX(Areas, ',', -2), ',', 1) AS city,
 SUBSTRING_INDEX(Areas, ',', -1) AS area,
 address, Mobile as phone, RealName as consignee, IsDefault as is_default, CreateDate as create_time, UpdateDate as update_time
- FROM UserAddress
+ FROM UserAddress
+
+ //用户账户表
+ SELECT Id as id, UserId as user_id,CreateDate as create_time, UpdateDate as update_time,
+ TotalAmount as amount, FreezeAmount as frozen_amount, WithdrawAmount as cash_withdrawal_amount, TotalProfit as total_amount, ToChargeAmount as advance_amount, LeaderReserve as leader_reserve, LeaderBalanceAmount as leader_balance_amount,
+ LeaderToChargeAmount as leader_advance_amount, OperateToChargeAmount as partner_advance_amount
+  from UserAccount