From 664184af3e070dee665ee736caffa0297804975f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Tue, 18 Mar 2025 11:46:02 +0800
Subject: [PATCH] perf(mall): 移除会员利润计算中的异步执行

---
 src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java b/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
index 92a7e26..341af40 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
@@ -2,6 +2,8 @@
 
 import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum;
 import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
+import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.mall.chain.trcCoin.OkHttpUtil2;
 import cc.mrbird.febs.mall.chain.trcCoin.OklinkDataPageDetailModel;
 import cc.mrbird.febs.mall.chain.trcCoin.OklinkModel;
@@ -20,6 +22,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
@@ -37,6 +40,8 @@
     private MallChargeMapper mallChargeMapper;
     @Resource
     private AgentProducer agentProducer;
+    @Resource
+    private RedisUtils redisUtils;
 
     /**
      * 五分钟  毫秒
@@ -61,9 +66,10 @@
     @Scheduled(cron = "0 0/2 * * * ? ")
     public void chainBlockUpdate() {
         log.info("TRC20同步");
-        String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-                RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getType(),  RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getCode()
-        ).getValue();
+//        String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getType(),  RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getCode()
+//        ).getValue();
+        String sysAddress = "TExto1UjtFcXKw5QdJDRqtx7wTQ15D37GD";
         String type = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getType(),  RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getCode()
         ).getValue();
@@ -125,11 +131,19 @@
                     continue;
                 }
 
-                BigDecimal amount = new BigDecimal(tokenTransfer.getAmount());
+                BigDecimal amount = new BigDecimal(tokenTransfer.getAmount()).setScale(2, RoundingMode.DOWN);
+                String chargeRedis = redisUtils.getString(AppContants.CHARGE_AMOUNT_PROFIX + amount);
+                if (StrUtil.isBlank(chargeRedis)) {
+                    log.info("Redis未扫描到充值金额:{}",transactionId);
+                    return;
+                }else{
+                    redisUtils.del(AppContants.CHARGE_AMOUNT_PROFIX + amount);
+                    log.info("Redis扫描到充值记录:{},{}",transactionId,chargeRedis);
+                }
                 LambdaQueryWrapper<MallCharge> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.eq(MallCharge::getAddress, fromAddress);
                 queryWrapper.eq(MallCharge::getSysAddress, sysAddress);
-                queryWrapper.eq(MallCharge::getAmount, amount);
+                queryWrapper.eq(MallCharge::getAmountReal, amount);
+                queryWrapper.eq(MallCharge::getMemberId, Long.parseLong(chargeRedis));
                 queryWrapper.eq(MallCharge::getType, type);
                 queryWrapper.eq(MallCharge::getState, YesOrNoEnum.ING.getValue());
                 List<MallCharge> mallCharges = mallChargeMapper.selectList(queryWrapper);
@@ -141,7 +155,12 @@
                 MallCharge mallCharge = mallCharges.get(0);
                 mallCharge.setState(YesOrNoEnum.YES.getValue());
                 mallChargeMapper.updateById(mallCharge);
-                agentProducer.sendBuyVipSuccessMsg(mallCharge.getId());
+
+                if(StrUtil.isNotEmpty(mallCharge.getVipCode())){
+                    agentProducer.sendBuyVipSuccessMsg(mallCharge.getId());
+                }else{
+                    agentProducer.sendChargeSuccessMsg(mallCharge.getId());
+                }
 
                 log.info("扫描到用户ID:{},地址:{},充值金额:{}", mallCharge.getMemberId(), fromAddress, amount);
             }

--
Gitblit v1.9.1