| | |
| | | private DappFundFlowDao dappFundFlowDao; |
| | | |
| | | private final String ADDRESS = "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25"; |
| | | int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void compile(EthUsdtContract.TransferEventResponse e) { |
| | | int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); |
| | | if (e.to != null) { |
| | | // 合约创建时,同时创建地址 |
| | | if ("0x0000000000000000000000000000000000000000".equals(e.from)) { |
| | | DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null); |
| | | if (toMember == null) { |
| | | toMember = dappMemberService.insertMember(e.to, "0"); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | DappMemberEntity fromMember = dappMemberService.findByAddress(e.from, null); |
| | | if (fromMember == null) { |
| | | fromMember = dappMemberService.insertMember(e.from, null); |
| | | DappMemberEntity sourceAddress = dappMemberDao.selectByAddress(ChainEnum.BSC_TFC.getAddress(), null); |
| | | fromMember = dappMemberService.insertMember(e.from, sourceAddress.getInviteId()); |
| | | } |
| | | |
| | | // 如果转账对象地址不为源池地址,则创建用户 |
| | | if (!e.to.equals(ADDRESS)) { |
| | | DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null); |
| | | if (toMember == null) { |
| | |
| | | } |
| | | } |
| | | |
| | | // |
| | | // 卖币 |
| | | if (e.to.equals(ADDRESS)) { |
| | | BigInteger tokens = e.tokens; |
| | | BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(decimals), decimals, RoundingMode.HALF_DOWN); |
| | | DappFundFlowEntity fundFlow = dappFundFlowDao.selectByFromHash(e.log.getTransactionHash(), 1); |
| | | |
| | | BigDecimal amount = BigDecimal.valueOf(tokens.intValue()).divide(BigDecimal.TEN.pow(4), 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 newPrice = fundFlow.getNewestPrice(); |
| | | BigDecimal transferAmount = amount.multiply(newPrice); |
| | | String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(e.from, transferAmount); |
| | | fundFlow.setToHash(hash); |
| | | // 更改状态为已同步 |
| | | fundFlow.setStatus(2); |
| | | fundFlow.setTargetAmount(transferAmount); |
| | | dappFundFlowDao.updateById(fundFlow); |
| | | |
| | | // TODO 划点分配 |
| | | |
| | | // TODO 自动转账 |
| | | // String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(e.from, transferAmount); |
| | | // fundFlow.setToHash(hash); |
| | | // dappFundFlowDao.updateById(fundFlow); |
| | | } |
| | | |
| | | } |