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.DappMemberEntity; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cn.hutool.core.util.StrUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigInteger; @Service public class BscCoinContractEvent implements ContractEventService { @Autowired private DappMemberDao dappMemberDao; private final String ADDRESS = "0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25"; int decimals = ChainService.getInstance(ChainEnum.BSC_TFC.name()).decimals(); @Override public void compile(EthUsdtContract.TransferEventResponse e) { if (e.to != null) { if ("0x0000000000000000000000000000000000000000".equals(e.from)) { return; } DappMemberEntity fromMember = dappMemberDao.selectByAddress(e.from, null); if (fromMember == null) { fromMember = insertMember(e.from, null); } if (!e.to.equals(ADDRESS)) { DappMemberEntity toMember = dappMemberDao.selectByAddress(e.to, null); if (toMember == null) { toMember = insertMember(e.to, fromMember.getInviteId()); } } // 卖币 if (e.to.equals(ADDRESS)) { BigInteger tokens = e.tokens; } } } private DappMemberEntity insertMember(String address, String refererId) { DappMemberEntity member = new DappMemberEntity(); member.setAddress(address); dappMemberDao.insert(member); member.setInviteId(ShareCodeUtil.toSerialCode(member.getId())); member.setRefererId(refererId); if (StrUtil.isNotBlank(refererId)){ boolean flag = false; String parentId = refererId; String ids = ""; while (!flag && StringUtils.isNotBlank(parentId)) { if (StrUtil.isBlank(ids)) { ids += parentId; } else { ids += ("," + parentId); } DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId); if (parentMember == null) { break; } parentId = parentMember.getRefererId(); if(StringUtils.isBlank(parentId)){ break; } if (parentMember.getRefererId().equals(parentMember.getInviteId())) { flag = true; } } member.setRefererIds(ids); } dappMemberDao.updateById(member); return member; } }