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

同步用户余额变动记录表

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

+ 79 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/enums/ChangeTypesEnum.java

@@ -0,0 +1,79 @@
+package com.kxs.common.core.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 账户变更详细类型enum
+ *
+ * @author Lxq
+ * @date 2023-11-01
+ */
+@Getter
+@AllArgsConstructor
+public enum ChangeTypesEnum {
+
+    ACT(0, "激活奖励"),
+    PROFIT(1, "交易分润"),
+    WITHDRAWAL(2, "提现申请"),
+    MENTION_MODERN_PAYMENT(3, "提现代付"),
+    WITHDRAWAL_FEES(4, "提现手续费"),
+    WITHDRAWAL_TAX(5, "提现税点扣除"),
+    WITHDRAWAL_FAILED(6, "提现失败,解冻"),
+    TRADING_REWARDS(12, "交易奖励"),
+    BALANCE_PAYMENT(20, "余额支付"),
+    BALANCE_REFUNDS(21, "余额退款"),
+    RED_ENVELOPE_REWARDS(30, "红包奖励"),
+    EVENT_REWARDS(31, "活动奖励"),
+    BOOT_BONUS(50, "开机奖励"),
+    TRAFFIC_CARD_COMMISSION(60, "流量卡分佣"),
+    ARTIFICIAL_FREEZING(61, "人工冻结"),
+    ARTIFICIAL_THAWING(62, "人工解冻"),
+    MANUAL_DEDUCTIONS(63, "人工扣减"),
+    INCREASED_LABOR(64, "人工增加"),
+    DEPOSIT_HOLD(65, "押金暂扣"),
+    DEPOSIT_IS_REFUNDED(66, "押金退还"),
+    PROFITSHARING_SUBSIDY(111, "分润补贴"),
+    REFERRAL_REWARDS(112, "推荐奖励"),
+    PRIVATE_PAY_DIVIDENDS(114, "私董会分红"),
+    SPLIT_POSITION_REWARDS(115, "分仓奖励"),
+    GRAND_ALLIANCE_LEADER_REWARD(116, "大盟主奖励"),
+    ALLIANCE_LEADER_REWARD(117, "盟主奖励(储蓄金入账)"),
+    LEADER_PURCHASE_BONUS(118, "盟主奖励(购机奖励)"),
+    FOR_WILL_BE_REFUNDED(119, "分仓临时额度退还"),
+    CENTER_PURCHASE_BONUS(120, "运营中心(购机奖励)"),
+    FULFILLMENT_CENTER_REWARDS(121, "运营中心奖励"),
+    SHARE_LEADER_ALLIANCE(122, "推荐大盟主奖励"),
+    SHARE_LEADER_SMALL_ALLIANCE(123, "推荐小盟主奖励"),
+    DEDUCTION_MACHINE_AND_EQUIPMENT_PAYMENT(124, "扣机具货款"),
+    SOFTWARE_SERVICE_FEE(125, "软件服务费"),
+    MACHINE_RETURN_AMOUNT(126, "机具货款退还"),
+    PARTNER_REWARDS(127, "运营中心分仓奖励"),
+    PARTNER_PURCHASE_BONUS(128, "合伙人(购机奖励)"),
+    REFERRAL_FULFILLMENT_CENTER_REWARDS(129, "推荐运营中心奖励"),
+    ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND(130, "预发临时额度退还"),
+    CODE_CARDS_ACTIVATE_REWARDS(131, "码牌激活奖励"),
+    DIRECT_TEAM_WITHDRAWALS(132, "直营团队提现"),
+    INSTANT_BRUSH_PLUS_REWARDS(133, "立刷加码奖励"),
+    REQUEST_A_REFUND_FOR_PREDEPARTURE_MACHINE(134, "预发机申请退款"),
+    LARGECAP_DIVIDENDS(135, "大盘分红"),
+    CULTIVATION_AWARD(136, "培养奖"),
+    DEEP_LEADER_AWARD(137, "深度领导人奖"),
+    INSTALLMENT_WITHHOLDING(201, "分期预扣款"),
+    MAKER_WITHHOLDING(202, "创客预扣款"),
+    LETS_SHARE_PROFITS(301, "来客吧分润"),
+    GUEST_BAR_ACTIVATION_PRIZE(311, "来客吧激活奖"),
+    VISITOR_ACCOUNT_OPENING_AWARD(312, "来客吧开户奖"),
+    COME_ON_MAIN_PRIZE_GRAND_ALLIANCE(313, "来客吧大盟主奖"),
+    VISITOR_BAR_OPERATION_CENTER_AWARD(314, "来客吧运营中心奖"),
+    VISITOR_BAR_ACHIEVEMENT_AWARD(315, "来客吧达标奖");
+
+    /**
+     * 状态码
+     */
+    private final Integer type;
+    /**
+     * 状态码码描述
+     */
+    private final String description;
+}

+ 14 - 7
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsForAmountWithdrawServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.constant.enums.ChangeTypesEnum;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
 import com.kxs.common.core.constant.enums.VariationTypeEnum;
 import com.kxs.common.core.exception.GlobalCustomerException;
@@ -145,14 +146,20 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
         userLimit.setValidAmount(NumberUtil.sub(userLimit.getValidAmount(),param.getYueAmount()));
         kxsWarehouseLimitMapper.updateById(userLimit);
 
-        KxsUserAmountLog userAmount = new KxsUserAmountLog();
-        userAmount.setUserId(kxsForAmountWithdraw.getUserId());
-        userAmount.setKind(KindTypeEnum.ADD.getType());
-        userAmount.setVariationCause("临额提现");
-        userAmount.setVariationType(VariationTypeEnum.ACCOUNT_TYPE_BA_RETURN.getType());
-        userAmount.setAmount(BigDecimal.valueOf(param.getYueAmount()));
+        KxsUserAmountLog userAmountLog = new KxsUserAmountLog();
+        userAmountLog.setUserId(kxsForAmountWithdraw.getUserId());
+        userAmountLog.setKind(KindTypeEnum.ADD.getType());
+        //分仓临时额度提现
+        if(kxsForAmountWithdraw.getWithdrawType() == 0){
+            userAmountLog.setVariationType(ChangeTypesEnum.FOR_WILL_BE_REFUNDED.getType());
+            userAmountLog.setVariationCause(ChangeTypesEnum.FOR_WILL_BE_REFUNDED.getDescription());
+        }else{
+            userAmountLog.setVariationType(ChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getType());
+            userAmountLog.setVariationCause(ChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getDescription());
+        }
+        userAmountLog.setAmount(BigDecimal.valueOf(param.getYueAmount()));
 
-        R<Boolean> booleanR = remoteKxsUserService.userAmountChange(userAmount, SecurityConstants.FROM_IN);
+        R<Boolean> booleanR = remoteKxsUserService.userAmountChange(userAmountLog, SecurityConstants.FROM_IN);
         if(!booleanR.getData()){
             throw new GlobalCustomerException("提现申请失败");
         }

+ 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.KxsUserAmountLogService;
 import com.kxs.transfer.api.service.user.KxsUserAmountService;
 import com.kxs.transfer.api.service.user.KxsUserService;
 import lombok.RequiredArgsConstructor;
@@ -36,6 +37,7 @@ public class DtsController {
     private final KxsUserService kxsUserService;
     private final KxsUserAddressService kxsUserAddressService;
     private final KxsUserAmountService kxsUserAmountService;
+    private final KxsUserAmountLogService kxsUserAmountLogService;
 
     @DtsMsgListener
     public void dtsListener(Long dataId, DMLData dmlData, DefaultUserRecord record){
@@ -82,6 +84,10 @@ public class DtsController {
         if("UserMoveInfo".equals(dmlData.getTableName())){
             kxsUserService.changeUserPwd(dmlData);
         }
+        //用户账户余额日志
+        if("UserAccountRecord".equals(dmlData.getTableName())){
+            kxsUserAmountLogService.changeData(dmlData);
+        }
 
         //存储历史数据
         KxsDtsLog kxsDtsLog = new KxsDtsLog();

+ 2 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/KxsUserAmountLogService.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.KxsUserAmountLog;
 
 /**
@@ -11,5 +12,6 @@ import com.kxs.user.api.model.KxsUserAmountLog;
  */
 public interface KxsUserAmountLogService extends IService<KxsUserAmountLog> {
 
+    void changeData(DMLData dmlData);
 }
 

+ 71 - 0
kxs-transfer/src/main/java/com/kxs/transfer/api/service/user/impl/KxsUserAmountLogServiceImpl.java

@@ -1,11 +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.KxsUserAmountLogMapper;
+import com.kxs.transfer.api.model.table.DMLData;
+import com.kxs.transfer.api.model.table.FieldData;
 import com.kxs.transfer.api.service.user.KxsUserAmountLogService;
+import com.kxs.user.api.model.KxsUserAmount;
 import com.kxs.user.api.model.KxsUserAmountLog;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 用户余额记录日志表(KxsUserAmountLog)表服务实现类
  *
@@ -15,5 +25,66 @@ import org.springframework.stereotype.Service;
 @Service("kxsUserAmountLogService")
 public class KxsUserAmountLogServiceImpl extends ServiceImpl<KxsUserAmountLogMapper, KxsUserAmountLog> implements KxsUserAmountLogService {
 
+    @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());
+
+        KxsUserAmountLog userAmountLog = new KxsUserAmountLog();
+        userAmountLog.setId(id);
+
+        //操作类型
+        OperationType operation = dmlData.getOperation();
+        for (String field : changeFieldList) {
+
+            switch (field) {
+                case "UserId":
+                    userAmountLog.setUserId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ProductType":
+                    userAmountLog.setBrandId(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ChangeType":
+                    userAmountLog.setVariationType(Integer.valueOf(validFieldDataMap.get(field).toString()));
+                    break;
+                case "ChangeAmount":
+                    userAmountLog.setAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BeforeTotalAmount":
+                    userAmountLog.setBeforeTotalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "AfterTotalAmount":
+                    userAmountLog.setAfterTotalAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "BeforeBalanceAmount":
+                    userAmountLog.setBeforeAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "AfterBalanceAmount":
+                    userAmountLog.setAfterAmount(new BigDecimal(validFieldDataMap.get(field).toString()));
+                    break;
+                case "CreateDate":
+                    userAmountLog.setCreateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+                case "UpdateDate":
+                    userAmountLog.setUpdateTime(LocalDateTimeUtil.parse(fieldDataMap.get(field).toString(), DatePattern.NORM_DATETIME_PATTERN));
+                    break;
+            }
+        }
+
+        if(operation.equals(OperationType.UPDATE)){
+            // 更新数据
+            baseMapper.updateById(userAmountLog);
+        }
+        if(operation.equals(OperationType.INSERT)){
+            // 插入数据
+            baseMapper.insert(userAmountLog);
+        }
+    }
 }
 

+ 12 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/model/KxsUserAmountLog.java

@@ -80,6 +80,12 @@ public class KxsUserAmountLog extends Model<KxsUserAmountLog> implements Seriali
     @Schema(description = "变动前金额")
     private BigDecimal beforeAmount;
 
+    /**
+     * 变动前总收益
+     */
+    @Schema(description = "变动前总收益")
+    private BigDecimal beforeTotalAmount;
+
 
     /**
      * 变动后金额
@@ -88,6 +94,12 @@ public class KxsUserAmountLog extends Model<KxsUserAmountLog> implements Seriali
     private BigDecimal afterAmount;
 
 
+    /**
+     * 变动后总收益
+     */
+    @Schema(description = "变动后总收益")
+    private BigDecimal afterTotalAmount;
+
     /**
      * 操作金额
      */

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

@@ -10,7 +10,10 @@
         <result column="version" property="version" />
         <result column="user_id" property="userId" />
         <result column="before_amount" property="beforeAmount" />
+        <result column="before_amount" property="beforeAmount" />
+        <result column="before_total_amount" property="beforeTotalAmount" />
         <result column="after_amount" property="afterAmount" />
+        <result column="after_total_amount" property="afterTotalAmount" />
         <result column="amount" property="amount" />
         <result column="variation_type" property="variationType" />
         <result column="variation_cause" property="variationCause" />

+ 4 - 0
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAmountMapper.xml

@@ -15,6 +15,10 @@
         <result column="total_amount" property="totalAmount" />
         <result column="user_id" property="userId" />
         <result column="advance_amount" property="advanceAmount" />
+        <result column="leader_reserve" property="leaderReserve" />
+        <result column="leader_balance_amount" property="leaderBalanceAmount" />
+        <result column="leader_advance_amount" property="leaderAdvanceAmount" />
+        <result column="partner_advance_amount" property="partnerAdvanceAmount" />
 
     </resultMap>