From 853b3cec46b6918641ea651a311bdce80bb05b07 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 17 Jan 2023 21:11:07 +0800
Subject: [PATCH] 1
---
src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java | 2
src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java | 62 ++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java b/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
index b6ad5c3..d328b04 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
@@ -81,7 +81,7 @@
// ChainService.wssBaseCoinEventListener(block, baseCoinService);
// ChainService.wssBaseCoinEventListener(block, bscUsdtContractEvent);
- ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
+// ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
long end = System.currentTimeMillis();
log.info("区块链监听启动完成, 消耗时间{}", end - start);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java b/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
index 4f51d39..23aa1ab 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
@@ -1,15 +1,24 @@
package cc.mrbird.febs.mall.chain.job;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.MallMoneyFlowTypeEnum;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.chain.constants.ChainConstants;
import cc.mrbird.febs.mall.chain.enums.ChainEnum;
+import cc.mrbird.febs.mall.chain.enums.CoinTypeEnum;
import cc.mrbird.febs.mall.chain.enums.EthService;
import cc.mrbird.febs.mall.chain.service.ChainService;
import cc.mrbird.febs.mall.chain.service.ContractChainService;
import cc.mrbird.febs.mall.chain.service.TrxUsdtUpdateService;
+import cc.mrbird.febs.mall.entity.MallMemberWallet;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
import cc.mrbird.febs.mall.entity.MemberCoinAddressEntity;
+import cc.mrbird.febs.mall.entity.MemberCoinChargeEntity;
+import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
import cc.mrbird.febs.mall.mapper.MemberCoinAddressDao;
+import cc.mrbird.febs.mall.mapper.MemberCoinChargeDao;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
@@ -42,6 +51,12 @@
private RedisUtils redisUtils;
@Resource
private MemberCoinAddressDao memberCoinAddressDao;
+ @Resource
+ private MallMemberWalletMapper mallMemberWalletMapper;
+ @Resource
+ private IMallMoneyFlowService mallMoneyFlowService;
+ @Resource
+ private MemberCoinChargeDao memberCoinChargeDao;
/**
* 归集ERC20
@@ -76,13 +91,58 @@
// ChainService.getInstance(ChainEnum.BSC_USDT.name()).transferBaseToken(next, gas);
// }
- ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(memberCoinAddressEntity.getPrivateKey(),
+ String transfer = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(memberCoinAddressEntity.getPrivateKey(),
memberCoinAddressEntity.getAddress(),
AppContants.ERC20_POOL_ADDRESS,
balanceOf.toString());
+ if(StrUtil.isNotEmpty(transfer)){
+ Long memberId = memberCoinAddressEntity.getMemberId();
+ // 查询钱包 并更新
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ if (mallMemberWallet == null) {
+ return;
+ }
+ mallMemberWalletMapper.updateBlockBalanceById(mallMemberWallet.getId(), balanceOf.setScale(4, BigDecimal.ROUND_DOWN));
+
+ String orderNo = insertCoinCharge(next, memberId, balanceOf.setScale(4, BigDecimal.ROUND_DOWN), CoinTypeEnum.USDT.name(), "ERC20", BigDecimal.ZERO);
+ Long chargeFlowId = mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ orderNo,
+ balanceOf.setScale(4, BigDecimal.ROUND_DOWN),
+ MallMoneyFlowTypeEnum.CHARGE.getCode(),
+ MallMoneyFlow.STATUS_SUCCESS,
+ MallMoneyFlow.IS_RETURN_Y,
+ memberId,
+ FlowTypeEnum.BALANCE.getValue(),
+ MallMoneyFlowTypeEnum.CHARGE.getName()
+ );
+ }
}
}
+
+ public String insertCoinCharge(String address, Long memberId, BigDecimal newBalance, String symbol, String tag, BigDecimal lastAmount) {
+ MemberCoinChargeEntity memberCoinChargeEntity = new MemberCoinChargeEntity();
+ memberCoinChargeEntity.setAddress(address);
+ memberCoinChargeEntity.setMemberId(memberId);
+ memberCoinChargeEntity.setAmount(newBalance);
+ memberCoinChargeEntity.setSymbol(symbol);
+ memberCoinChargeEntity.setTag(tag);
+ memberCoinChargeEntity.setStatus(1);
+ memberCoinChargeEntity.setLastAmount(lastAmount);
+ String orderNo = generateNo();
+ memberCoinChargeEntity.setOrderCode(orderNo);
+ memberCoinChargeDao.insert(memberCoinChargeEntity);
+ return orderNo;
+ }
+ private String generateNo() {
+ // 生成订单号
+ Long timestamp = System.currentTimeMillis();
+ // 随机数
+ int random = (int) (Math.random() * 10);
+ return String.valueOf(timestamp).substring(2) + random;
+ }
+
/**
* 归集ERC20
*/
--
Gitblit v1.9.1