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