Просмотр исходного кода

用户结算卡修改记录同步,用户分期表数据同步

mac 2 лет назад
Родитель
Сommit
ef83dbef69

+ 16 - 1
kxs-transfer/src/main/java/com/kxs/transfer/api/controller/DtsController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.product.api.model.KxsMerchant;
 import com.kxs.system.api.model.KxsSchoolStudy;
 import com.kxs.transfer.api.annotation.DtsMsgListener;
+import com.kxs.transfer.api.mapper.user.KxsUserByStageMapper;
 import com.kxs.transfer.api.model.KxsDtsErrorLog;
 import com.kxs.transfer.api.model.KxsDtsLog;
 import com.kxs.transfer.api.model.table.DMLData;
@@ -20,6 +21,7 @@ import com.kxs.transfer.api.service.sys.KxsSchoolStudyService;
 import com.kxs.transfer.api.service.sys.KxsSysMsgService;
 import com.kxs.transfer.api.service.user.*;
 import com.kxs.user.api.model.KxsPartner;
+import com.kxs.user.api.model.KxsUserByStage;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.exception.ExceptionUtils;
@@ -54,11 +56,12 @@ public class DtsController {
     private final KxsUserAmountLogService kxsUserAmountLogService;
     private final KxsUserWithdrawalService kxsUserWithdrawalService;
     private final KxsLeaderService kxsLeaderService;
-    private final KxsLeaderAmountLogService kxsLeaderAmountLogService;
     private final KxsPartnerService kxsPartnerService;
     private final KxsMorningService kxsMorningService;
     private final KxsSchoolStudyService kxsSchoolStudyService;
     private final KxsSysMsgService kxsSysMsgService;
+    private final KxsBankChangeLogService kxsBankChangeLogService;
+    private final KxsUserByStageService kxsUserByStageService;
 
     private final KxsMachineService kxsMachineService;
 
@@ -167,6 +170,18 @@ public class DtsController {
             if ("UserAccount".equals(dmlData.getTableName()) && "KxsOpServer".equals(dmlData.getDatabaseName())) {
                 kxsPartnerService.changeAccountData(dmlData);
             }
+            //用户结算卡变更记录
+            if ("SettlementCardChangeRecord".equals(dmlData.getTableName())) {
+                kxsBankChangeLogService.changeData(dmlData);
+            }
+            //分期表数据同步
+            if ("ToChargeByStage".equals(dmlData.getTableName())) {
+                kxsUserByStageService.changeData(dmlData);
+            }
+            //分期期数表数据同步
+            if ("ToChargeBackRecordSub".equals(dmlData.getTableName())) {
+                kxsUserByStageService.changeInfoData(dmlData);
+            }
 
 
             //商品表同步

+ 1 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/mapper/user/KxsUserByStageMapper.java

@@ -1,6 +1,7 @@
 package com.kxs.transfer.api.mapper.user;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.user.api.model.KxsUserByStage;
 import org.apache.ibatis.annotations.Mapper;
 

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

@@ -1,6 +1,7 @@
 package com.kxs.transfer.api.service.user;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.user.api.model.KxsBankChangeLog;
 
 /**
@@ -11,5 +12,6 @@ import com.kxs.user.api.model.KxsBankChangeLog;
  */
 public interface KxsBankChangeLogService extends IService<KxsBankChangeLog> {
 
+    void changeData(DMLData dmlData);
 }
 

+ 4 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserByStageService.java

@@ -1,6 +1,7 @@
 package com.kxs.transfer.api.service.user;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.user.api.model.KxsUserByStage;
 
 /**
@@ -11,5 +12,8 @@ import com.kxs.user.api.model.KxsUserByStage;
  */
 public interface KxsUserByStageService extends IService<KxsUserByStage> {
 
+    void changeData(DMLData dmlData);
+
+    void changeInfoData(DMLData dmlData);
 }
 

+ 65 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsBankChangeLogServiceImpl.java

@@ -1,11 +1,20 @@
 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.KxsBankChangeLogMapper;
+import com.kxs.transfer.api.model.table.DMLData;
 import com.kxs.transfer.api.service.user.KxsBankChangeLogService;
 import com.kxs.user.api.model.KxsBankChangeLog;
+import com.kxs.user.api.model.KxsUserAdvance;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 用户结算卡变更记录(KxsBankChangeLog)表服务实现类
  *
@@ -15,5 +24,61 @@ import org.springframework.stereotype.Service;
 @Service("kxsBankChangeLogService")
 public class KxsBankChangeLogServiceImpl extends ServiceImpl<KxsBankChangeLogMapper, KxsBankChangeLog> implements KxsBankChangeLogService {
 
+    @Override
+    public void changeData(DMLData dmlData) {
+        //修改的字段值
+        Map<String, Object> validFieldDataMap = dmlData.getValidFieldDataMap();
+        //修改的字段
+        List<String> changeFieldList = dmlData.getChangeFieldList();
+        //操作的主键
+        int id = Integer.parseInt(dmlData.getId());
+
+        KxsBankChangeLog bankChangeLog = new KxsBankChangeLog();
+        bankChangeLog.setId(id);
+        //操作类型
+        OperationType operation = dmlData.getOperation();
+        if(operation.equals(OperationType.DELETE)){
+            // 更新数据
+            baseMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    bankChangeLog.setUserId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BeforeCardNo":
+                    bankChangeLog.setBeforeCardNo(validFieldDataMap.get(field).toString());
+                    break;
+                case "AfterCardNo":
+                    bankChangeLog.setAfterCardNo(validFieldDataMap.get(field).toString());
+                    break;
+                case "CreateDate":
+                    bankChangeLog.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    bankChangeLog.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+
+            // 更新数据
+            baseMapper.updateById(bankChangeLog);
+        }
+        if(operation.equals(OperationType.INSERT)){
+
+            KxsBankChangeLog kxsBankChangeLog = baseMapper.selectById(id);
+            if (kxsBankChangeLog != null){
+                baseMapper.updateById(bankChangeLog);
+            }else{
+                // 插入数据
+                baseMapper.insert(bankChangeLog);
+            }
+        }
+
+    }
 }
 

+ 175 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserByStageServiceImpl.java

@@ -1,11 +1,25 @@
 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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.product.api.model.KxsTicket;
+import com.kxs.transfer.api.mapper.user.KxsUserByStageLogMapper;
 import com.kxs.transfer.api.mapper.user.KxsUserByStageMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
 import com.kxs.transfer.api.service.user.KxsUserByStageService;
 import com.kxs.user.api.model.KxsUserByStage;
+import com.kxs.user.api.model.KxsUserByStageLog;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 用户分期表(KxsUserByStage)表服务实现类
  *
@@ -13,7 +27,168 @@ import org.springframework.stereotype.Service;
  * @since 2024-01-03 09:39:56
  */
 @Service("kxsUserByStageService")
+@RequiredArgsConstructor
 public class KxsUserByStageServiceImpl extends ServiceImpl<KxsUserByStageMapper, KxsUserByStage> implements KxsUserByStageService {
 
+    private final KxsUserByStageLogMapper kxsUserByStageLogMapper;
+    @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());
+
+        KxsUserByStage userByStage = new KxsUserByStage();
+        userByStage.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+        if(operation.equals(OperationType.DELETE)){
+            baseMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    int userId = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    userByStage.setUserId(userId);
+                    break;
+                case "Status":
+                    int status = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    int timeNumber = Integer.parseInt(fieldDataMap.get("TimeNumber").getValue().toString());
+                    int queryCount = Integer.parseInt(fieldDataMap.get("QueryCount").getValue().toString());
+                    if(status == -1){
+                        baseMapper.deleteById(id);
+                        return;
+                    } else if (status == 0 && queryCount == 0) {
+                        userByStage.setStatus(0);
+                    } else if (status == 1 && timeNumber == queryCount) {
+                        userByStage.setStatus(2);
+                    }else {
+                        userByStage.setStatus(1);
+                    }
+                    break;
+                case "SeoTitle":
+                    userByStage.setCreateBy(validFieldDataMap.get(field).toString());
+                    break;
+                case "SeoKeyword":
+                    userByStage.setStageSn(validFieldDataMap.get(field).toString());
+                    break;
+                case "TotalAmount":
+                    userByStage.setStageAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ChargeAmount":
+                    userByStage.setDeductAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "TimeNumber":
+                    userByStage.setNumber(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "Remark":
+                    userByStage.setRemark(validFieldDataMap.get(field).toString());
+                    break;
+                case "StartDate":
+                    userByStage.setDeductStartTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "CreateDate":
+                    userByStage.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userByStage.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.INSERT)){
+            KxsUserByStage kxsUserByStage = baseMapper.selectById(userByStage.getId());
+            if(kxsUserByStage == null){
+                baseMapper.insert(userByStage);
+            }
+        }
+        if(operation.equals(OperationType.UPDATE)){
+
+            baseMapper.updateById(userByStage);
+        }
+    }
+
+    @Override
+    public void changeInfoData(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());
+
+        KxsUserByStageLog userByStageLog = new KxsUserByStageLog();
+        userByStageLog.setId(id);
+
+        OperationType operation = dmlData.getOperation();
+        if(operation.equals(OperationType.DELETE)){
+            kxsUserByStageLogMapper.deleteById(id);
+            return;
+        }
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "ParentId":
+                    userByStageLog.setStageId(Integer.parseInt(validFieldDataMap.get(field).toString()));
+                    break;
+                case "Status":
+                    int status = Integer.parseInt(validFieldDataMap.get(field).toString());
+                    if(status == -1){
+                        kxsUserByStageLogMapper.deleteById(id);
+                        return;
+                    }else {
+                        userByStageLog.setStatus(status);
+                    }
+                    break;
+                case "SeoTitle":
+                    userByStageLog.setCreateBy(validFieldDataMap.get(field).toString());
+                    break;
+                case "ChargeAmount":
+                    userByStageLog.setAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "TimeNumber":
+                    int parentId = Integer.parseInt(fieldDataMap.get("ParentId").getValue().toString());
+                    //查询当前入库最新的分期记录
+                    KxsUserByStageLog kxsUserByStageLog = kxsUserByStageLogMapper.selectOne(Wrappers.<KxsUserByStageLog>lambdaQuery()
+                            .eq(KxsUserByStageLog::getStageId, parentId)
+                            .orderByDesc(KxsUserByStageLog::getDeductTime).last("limit 1"));
+                    if(kxsUserByStageLog == null){
+                        userByStageLog.setThisNumber(1);
+                    }else{
+                        userByStageLog.setThisNumber(kxsUserByStageLog.getThisNumber() + 1);
+                    }
+                    break;
+                case "Remark":
+                    userByStageLog.setRemark(validFieldDataMap.get(field).toString());
+                    break;
+                case "StartDate":
+                    userByStageLog.setDeductTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "CreateDate":
+                    userByStageLog.setCreateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userByStageLog.setUpdateTime(LocalDateTimeUtil.parse(validFieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.INSERT)){
+            KxsUserByStageLog kxsUserByStageLog = kxsUserByStageLogMapper.selectById(id);
+            if(kxsUserByStageLog == null){
+                kxsUserByStageLogMapper.insert(userByStageLog);
+            }
+        }
+        if(operation.equals(OperationType.UPDATE)){
+
+            kxsUserByStageLogMapper.updateById(userByStageLog);
+        }
+    }
 }
 

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

@@ -241,4 +241,37 @@ SELECT Id as id, UserId as user_id, PlacardId as msg_id FROM MsgPlacardRead
 SELECT Id as id, CreateDate as create_time, UpdateDate as update_time,EffectStartDate as start_time, EffectEndDate as end_time, case Status when  0 then 0 when -1 then 1 else 0 end  del_flag,
 MsgType - 1 as msg_type, BgPic as bg_pic, Title as title, Content as content, Url as url,
 BtnText as btn_text, TimeByDay as time_by_day, IsWeekend as is_weekend, UrlParam as url_param
-FROM MsgAlert
+FROM MsgAlert
+--用户结算卡变更记录
+select a.Id as id, a.UserId as user_id, a.CreateDate as create_time, a.UpdateDate as update_time,
+BeforeCardNo as before_card_no, AfterCardNo as after_card_no
+FROM SettlementCardChangeRecord a
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 3 - 4
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserByStage.java

@@ -5,10 +5,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -57,6 +54,8 @@ public class KxsUserByStage extends Model<KxsUserByStage> implements Serializabl
      * 删除标记,0未删除,1已删除
      */
     @Schema(description = "删除标记,0未删除,1已删除")
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
     private String delFlag;
 
 

+ 3 - 4
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserByStageLog.java

@@ -5,10 +5,7 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -57,6 +54,8 @@ public class KxsUserByStageLog extends Model<KxsUserByStageLog> implements Seria
      * 删除标记,0未删除,1已删除
      */
     @Schema(description = "删除标记,0未删除,1已删除")
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
     private String delFlag;