package cc.mrbird.febs.dapp.service.impl; import cc.mrbird.febs.common.utils.ShareCodeUtil; 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.mapper.DappMemberDao; import cc.mrbird.febs.dapp.service.DappMemberService; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; @Slf4j @Service public class BscUsdtContractEvent implements ContractEventService { @Resource private DappMemberService dappMemberService; @Resource private DappFundFlowDao dappFundFlowDao; private final String ADDRESS = "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25"; int decimals = ChainService.getInstance(ChainEnum.BSC_USDT.name()).decimals(); int tfcDecimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); @Override public void compile(EthUsdtContract.TransferEventResponse e) { if (ADDRESS.equals(e.to)) { DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); if (fromMember == null) { fromMember = dappMemberService.insertMember(e.from, null); } // BigInteger tokens = e.tokens; // BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); // // DappFundFlowEntity fundFlow = new DappFundFlowEntity(fromMember.getId(), amount, 2, null, null, e.log.getTransactionHash()); // dappFundFlowDao.insert(fundFlow); // // // TODO price // BigDecimal newPrice = BigDecimal.valueOf(1); // // BigDecimal transferAmount = amount.multiply(newPrice); // String hash = ChainService.getInstance(ChainEnum.BSC_TFC.name()).transfer(e.from, transferAmount); // fundFlow.setToHash(hash); // dappFundFlowDao.updateById(fundFlow); } } }