package cc.mrbird.febs.dapp.service.impl;
|
|
import cc.mrbird.febs.common.utils.RedisUtils;
|
import cc.mrbird.febs.dapp.chain.ChainEnum;
|
import cc.mrbird.febs.dapp.chain.ChainService;
|
import cc.mrbird.febs.dapp.chain.ContractEventService;
|
import cc.mrbird.febs.dapp.chain.EthUsdtContract;
|
import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
|
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
|
import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
|
import cc.mrbird.febs.dapp.service.DappMemberService;
|
import cc.mrbird.febs.dapp.service.DappWalletService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.web3j.utils.Numeric;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.math.BigInteger;
|
import java.math.RoundingMode;
|
|
@Slf4j
|
@Service
|
public class BscCoinContractEvent implements ContractEventService {
|
|
@Resource
|
private DappMemberService dappMemberService;
|
|
@Resource
|
private DappFundFlowDao dappFundFlowDao;
|
|
@Resource
|
private RedisUtils redisUtils;
|
|
@Resource
|
private DappWalletService dappWalletService;
|
|
public static void main(String[] args) {
|
System.out.println(Numeric.toBigInt("0x12e4e85"));
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public void compile(EthUsdtContract.TransferEventResponse e) {
|
if (e.to == null) {
|
return;
|
}
|
|
if ("0x0Ba249b2FAC0061dd9c388Bd607418E16490A3fd".toLowerCase().equals(e.to)) {
|
log.info("触发GE手续费监听");
|
|
int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals();
|
// 账户是否已经注册
|
DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null);
|
if (fromMember == null) {
|
return;
|
}
|
|
BigInteger tokens = e.tokens;
|
BigDecimal amount = new BigDecimal(tokens.toString()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN);
|
|
// 充值手续费
|
DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHash(e.log.getTransactionHash(), null);
|
if (fundFlow != null && fundFlow.getStatus() != 1) {
|
return;
|
}
|
|
// 更改状态为已同步
|
fundFlow.setStatus(2);
|
dappFundFlowDao.updateById(fundFlow);
|
|
dappWalletService.updateWalletMineWithLock(amount, fromMember.getId(), 1);
|
}
|
}
|
|
@Override
|
public void sdmUSDT(EthUsdtContract.TransferEventResponse e) {
|
return;
|
}
|
}
|