From b90e825fab22d58a6ad6860bc0c4f5584e56a5e6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 10 Nov 2020 16:31:57 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java   |   14 +
 src/main/resources/mapper/member/SrcAddressDao.xml                                  |   19 +-
 src/test/java/com/xcong/excoin/GuijiTest.java                                       |   12 +
 src/main/java/com/xcong/excoin/quartz/job/TRC20OrderJob.java                        |   40 +++++
 src/test/java/com/xcong/excoin/FilterTest.java                                      |   93 ++++++++++++
 src/main/java/com/xcong/excoin/utils/TRC20ApiUtils.java                             |   60 +++++++-
 src/test/java/com/xcong/excoin/SRCTest.java                                         |   98 +++++++++++++
 src/main/java/com/xcong/excoin/modules/blackchain/service/Impl/BlockSeriveImpl.java |   30 ++++
 pom.xml                                                                             |   18 ++
 src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java       |    2 
 10 files changed, 343 insertions(+), 43 deletions(-)

diff --git a/pom.xml b/pom.xml
index e767fbc..38f95c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -282,6 +282,24 @@
             <version>4.3.5</version>
         </dependency>
         <!-- submail邮件 end -->
+
+        <!-- 引入poi,解析workbook视图 -->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.16</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.14</version>
+        </dependency>
+        <!-- 处理excel和上面功能是一样的-->
+        <dependency>
+            <groupId>net.sourceforge.jexcelapi</groupId>
+            <artifactId>jxl</artifactId>
+            <version>2.6.10</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/Impl/BlockSeriveImpl.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/Impl/BlockSeriveImpl.java
index ad69c67..c1ea35c 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/Impl/BlockSeriveImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/Impl/BlockSeriveImpl.java
@@ -6,7 +6,10 @@
 import javax.annotation.Resource;
 
 import com.xcong.excoin.modules.blackchain.service.*;
+import com.xcong.excoin.modules.coin.dao.TrcAddressDao;
+import com.xcong.excoin.modules.coin.entity.TrcAddressEntity;
 import com.xcong.excoin.rabbit.producer.UsdtUpdateProducer;
+import com.xcong.excoin.utils.TRC20ApiUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -30,6 +33,8 @@
     MemberDao memberDao;
     @Resource
     MemberCoinAddressDao memberMapper;
+    @Resource
+    private TrcAddressDao trcAddressDao;
 
     @Resource
     private UsdtUpdateProducer usdtUpdateProducer;
@@ -50,6 +55,31 @@
 
             if ("USDT".equals(symbol)) {
                 memberCoinAddress = memberMapper.selectBlockAddressWithTag(Long.parseLong(mId), symbol, lable);
+
+                TrcAddressEntity srcAddressEntity = trcAddressDao.selectSrcAddressByMemberId(member.getId());
+                if (srcAddressEntity != null) {
+                    map.put("trc20_address", srcAddressEntity.getAddress());
+                    map.put("trc20_label", "TRC20");
+                } else {
+                    // 分布式redis锁
+                    for (;;) {
+                        boolean flag = redisUtil.setNotExist("LOCK_TRC20", 1, 5);
+                        if (!flag) {
+                            continue;
+                        }
+
+                        TrcAddressEntity address = trcAddressDao.selectOneSrcAddressUnUse();
+                        address.setMemberId(member.getId());
+                        address.setIsUse(1);
+
+                        TRC20ApiUtils.createWallet(member.getId(), member.getInviteId(), "USDT", address.getAddress());
+                        trcAddressDao.updateById(address);
+
+                        map.put("trc20_address", address.getAddress());
+                        map.put("trc20_label", "TRC20");
+                        break;
+                    }
+                }
             } else {
                 memberCoinAddress = memberMapper.selectBlockAddress(Long.parseLong(mId), symbol);
             }
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java
index 51094c8..88f8461 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java
@@ -101,7 +101,7 @@
                         }
                     } else {
                         String hash = ethService.ethSend(TOTAL_PRIVATE, TOTAL_ADDRESS, address, ETH_FEE,gasPrice);
-                        log.info("转手续费:{}", hash);
+                        log.info("转手续费:{}, address: {}", hash, address);
                     }
                 }
             }
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 7c3ef40..b4f35f7 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -35,10 +35,7 @@
 import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao;
 import com.xcong.excoin.modules.platform.entity.PlatformFeeSettingEntity;
 import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity;
-import com.xcong.excoin.utils.MessageSourceUtils;
-import com.xcong.excoin.utils.RedisUtils;
-import com.xcong.excoin.utils.ShareCodeUtil;
-import com.xcong.excoin.utils.ThreadPoolUtils;
+import com.xcong.excoin.utils.*;
 import lombok.extern.slf4j.Slf4j;
 
 import org.apache.commons.lang3.StringUtils;
@@ -908,7 +905,7 @@
             BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber();
             if (availableBalance.compareTo(BigDecimal.ZERO) > 0
                     && availableBalance.compareTo(coinNumber) >= 0) {
-                //新增提币记录
+                    //新增提币记录
                 MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
                 memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
                 memberCoinWithdrawEntity.setAmount(coinNumber);
@@ -917,6 +914,13 @@
                 memberCoinWithdrawEntity.setMemberId(memberId);
                 memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
 
+                if ("TRC20".equals(memberSubmitCoinApplyDto.getLable()) && CoinTypeEnum.USDT.name().equals(memberSubmitCoinApplyDto.getSymbol())) {
+                    String orderNo = commonservice.generateOrderNo(memberId);
+                    TRC20ApiUtils.coinApply(orderNo, memberId.toString(), CoinTypeEnum.USDT.name(), coinNumber.toPlainString(), memberSubmitCoinApplyDto.getAddress());
+                    memberCoinWithdrawEntity.setTag(orderNo);
+                    memberCoinWithdrawEntity.setLabel("TRC20");
+                }
+
                 Map<String, Object> columnMap = new HashMap<>();
                 columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
                 columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
diff --git a/src/main/java/com/xcong/excoin/quartz/job/TRC20OrderJob.java b/src/main/java/com/xcong/excoin/quartz/job/TRC20OrderJob.java
index 4240da6..ab29562 100644
--- a/src/main/java/com/xcong/excoin/quartz/job/TRC20OrderJob.java
+++ b/src/main/java/com/xcong/excoin/quartz/job/TRC20OrderJob.java
@@ -1,7 +1,37 @@
-package com.xcong.excoin.quartz.job;/**
-*
-* @author wzy
-* @date 2020-11-05
-**/
+package com.xcong.excoin.quartz.job;
+
+import cn.hutool.core.collection.CollUtil;
+import com.xcong.excoin.modules.member.dao.MemberCoinWithdrawDao;
+import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
+import com.xcong.excoin.utils.TRC20ApiUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2020-11-05
+ **/
+@Slf4j
+@Component
 public class TRC20OrderJob {
+
+    @Resource
+    private MemberCoinWithdrawDao memberCoinWithdrawDao;
+
+    public void trc20WithdrawOrder() {
+        Map<String, Object> param = new HashMap<>();
+        param.put("label", "TRC20");
+        param.put("status", 1);
+        List<MemberCoinWithdrawEntity> withdrawEntities = memberCoinWithdrawDao.selectByMap(param);
+        if (CollUtil.isNotEmpty(withdrawEntities)) {
+            for (MemberCoinWithdrawEntity withdrawEntity : withdrawEntities) {
+                String applyOrderInfo = TRC20ApiUtils.getApplyOrderInfo(withdrawEntity.getTag());
+            }
+        }
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/utils/TRC20ApiUtils.java b/src/main/java/com/xcong/excoin/utils/TRC20ApiUtils.java
index dde4c24..02cb361 100644
--- a/src/main/java/com/xcong/excoin/utils/TRC20ApiUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/TRC20ApiUtils.java
@@ -3,6 +3,8 @@
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.http.HttpRequest;
 import com.alibaba.fastjson.JSONObject;
+import com.xcong.excoin.common.exception.GlobalException;
+import lombok.extern.slf4j.Slf4j;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
@@ -12,26 +14,62 @@
  * @author wzy
  * @date 2020-11-05
  **/
+@Slf4j
 public class TRC20ApiUtils {
-    private static final String SRC_API = "http://27.50.59.35:5002/";
+    private static final String TRC20_API = "http://27.50.59.35:5002/";
     private static final String SIGN_STR = "w@a!llokmet";
 
-    public static void apply() {
+    /**
+     * 提币申请
+     */
+    public static void coinApply(String orderNo, String userId, String symbol, String amount, String toAddress) {
         Map<String, Object> param = new HashMap<>();
-        String orderNo = "123445";
-        String userid = "11";
-        String symbol = "USDT";
-        String amount = "1";
-        String toAddress = "Ox";
         param.put("orderno", orderNo);
-        param.put("userid", userid);
+        param.put("userid", userId);
         param.put("symbol", symbol);
         param.put("toAddress", toAddress);
         param.put("amount", new BigDecimal(amount));
-        param.put("sign", SecureUtil.md5(orderNo + userid + symbol + amount + toAddress + SIGN_STR));
-        HttpRequest request = HttpRequest.post(SRC_API + "transout/created");
+        param.put("sign", SecureUtil.md5(orderNo + userId + symbol + amount + toAddress + SIGN_STR));
+        HttpRequest request = HttpRequest.post(TRC20_API + "transout/created");
         String body = request.body(JSONObject.toJSONString(param)).execute().body();
-        System.out.println(body);
+        if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+            log.error("TRC20提币申请失败 : {}", body);
+            throw new GlobalException("提币申请失败");
+        }
     }
 
+
+    /**
+     * 提币订单查询
+     *
+     * @param orderNo 订单编号
+     */
+    public static String getApplyOrderInfo(String orderNo) {
+        String body = HttpRequest.get(TRC20_API + "transout/gettransout?orderNo=" + orderNo).execute().body();
+        if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+            log.error("TRC20获取订单失败:{}, {}", orderNo, body);
+            throw new GlobalException("获取订单失败");
+        }
+
+        return JSONObject.parseObject(body).getString("row");
+    }
+
+    public static void createWallet(Long userId, String userName, String symbol, String address) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("userId", userId);
+        param.put("symbol", symbol);
+        param.put("userName", userName);
+        param.put("walletAddress", address);
+        param.put("accountFlag", 1);
+        param.put("sign", SecureUtil.md5(userId + symbol + address + SIGN_STR));
+        String body = HttpRequest.post(TRC20_API + "account/created").body(JSONObject.toJSONString(param)).execute().body();
+        if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+            log.error("TRC20创建钱包失败:{}, {}, {}", userId, address, body);
+            throw new GlobalException("获取订单失败");
+        }
+    }
+
+    public static void main(String[] args) {
+        createWallet(1L, "1", "USDT", "11");
+    }
 }
diff --git a/src/main/resources/mapper/member/SrcAddressDao.xml b/src/main/resources/mapper/member/SrcAddressDao.xml
index a649376..1737811 100644
--- a/src/main/resources/mapper/member/SrcAddressDao.xml
+++ b/src/main/resources/mapper/member/SrcAddressDao.xml
@@ -1,13 +1,12 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.xcong.excoin.modules.coin.dao.MemberSelectSymbolsDao">
- 	
-	<select id="selectSymbolByMemIdAndSymbol" resultType="com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity">
-		select id id,symbol symbol,member_id memberId from member_select_symbols where member_id = #{memberId} and symbol = #{symbol}
-	</select>
-	
-	<select id="selectSymbolByMemId" resultType="com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity">
-		select id id,symbol symbol,member_id memberId from member_select_symbols where member_id = #{memberId} GROUP BY symbol
-	</select>
-	
+<mapper namespace="com.xcong.excoin.modules.coin.dao.TrcAddressDao">
+
+    <select id="selectSrcAddressByMemberId" resultType="com.xcong.excoin.modules.coin.entity.TrcAddressEntity">
+        select * from trc_address where member_id=#{memberId} and is_use=1
+    </select>
+
+    <select id="selectOneSrcAddressUnUse" resultType="com.xcong.excoin.modules.coin.entity.TrcAddressEntity">
+        select * from trc_address where is_use=2 limit 1
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/excoin/FilterTest.java b/src/test/java/com/xcong/excoin/FilterTest.java
index fe53525..4346a08 100644
--- a/src/test/java/com/xcong/excoin/FilterTest.java
+++ b/src/test/java/com/xcong/excoin/FilterTest.java
@@ -1,7 +1,90 @@
-package com.xcong.excoin;/**
-*
-* @author wzy
-* @date 2020-11-04
-**/
+package com.xcong.excoin;
+
+import com.xcong.excoin.modules.blackchain.service.EthUsdtContract;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.web3j.crypto.Credentials;
+import org.web3j.protocol.Web3j;
+import org.web3j.protocol.core.DefaultBlockParameterName;
+import org.web3j.protocol.core.DefaultBlockParameterNumber;
+import org.web3j.protocol.core.methods.request.EthFilter;
+import org.web3j.protocol.http.HttpService;
+import org.web3j.tx.gas.StaticGasProvider;
+
+import java.math.BigInteger;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2020-11-04
+ **/
+@Slf4j
 public class FilterTest {
+
+
+    public static  BigInteger GAS_PRICE = BigInteger.valueOf(45000000000L);
+    //public static final BigInteger GAS_LIMIT = BigInteger.valueOf(4300000L);
+    public static final BigInteger GAS_LIMIT = BigInteger.valueOf(2000000L);
+
+    private static Web3j web3;
+
+    private static String blockchainNode = "http://114.55.250.231:8545";
+
+    private static String contractAddr = "0xdac17f958d2ee523a2206206994597c13d831ec7";
+
+
+    // 操作账号
+    private static String privateKey = "4576fafdd215f52051c60e04618ef8997fbc5cee8413d3b34d210e296e6e9a3d";
+    @Test
+    public void testAA() {
+        BigInteger blockNum = new BigInteger("11189995");
+        Credentials credentials = Credentials.create(privateKey);
+        EthUsdtContract contract = EthUsdtContract.load(contractAddr, getInstance(), credentials, getStaticGasProvider());
+        EthFilter filter = getFilter(blockNum);
+        Map<String,BigInteger> map = new HashMap<String,BigInteger>();
+        map.put("blockNum",blockNum);
+
+        contract.transferEventFlowable(filter).subscribe(e->{
+//            System.out.println(1);
+//            Thread.sleep(60);
+//            System.out.println(2);
+        });
+    }
+
+    public static void main(String[] args) {
+        BigInteger blockNum = new BigInteger("11190135");
+        Credentials credentials = Credentials.create(privateKey);
+        EthUsdtContract contract = EthUsdtContract.load(contractAddr, getInstance(), credentials, getStaticGasProvider());
+        EthFilter filter = getFilter(blockNum);
+        Map<String,BigInteger> map = new HashMap<String,BigInteger>();
+        map.put("blockNum",blockNum);
+
+        contract.transferEventFlowable(filter).subscribe(e->{
+            Thread.sleep(120);
+        });
+    }
+
+    private static Web3j getInstance() {
+        if (web3 == null) {
+            HttpService httpService = new HttpService(blockchainNode);
+            web3 = Web3j.build(httpService);
+        }
+        return web3;
+    }
+
+    private static EthFilter getFilter(BigInteger startBlock) {
+        if (startBlock != null) {
+            EthFilter filter = new EthFilter(new DefaultBlockParameterNumber(startBlock),
+                    DefaultBlockParameterName.LATEST, contractAddr);
+            return filter;
+        } else {
+            return new EthFilter(DefaultBlockParameterName.EARLIEST,
+                    DefaultBlockParameterName.LATEST, contractAddr);
+        }
+    }
+
+    private static StaticGasProvider getStaticGasProvider(){
+        return new StaticGasProvider(GAS_PRICE,GAS_LIMIT);
+    }
 }
diff --git a/src/test/java/com/xcong/excoin/GuijiTest.java b/src/test/java/com/xcong/excoin/GuijiTest.java
index 295adcf..4ef29a9 100644
--- a/src/test/java/com/xcong/excoin/GuijiTest.java
+++ b/src/test/java/com/xcong/excoin/GuijiTest.java
@@ -23,7 +23,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-@SpringBootTest
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 public class GuijiTest {
 	
 	private static final BigDecimal LIMIT = new BigDecimal("50");
@@ -41,6 +41,16 @@
     @Resource
     private MemberWalletCoinDao memberWalletCoinDao;
 
+    @Test
+    public void poolTest() {
+        String address = "0x19177bfd062852a4398cae3ab701a82a6b959bf2";
+        EthService ethService = new EthService();
+        BigDecimal balance = ethService.tokenGetBalance(address);
+        BigDecimal eth = EthService.getEthBlance(address);
+
+        log.info("--->{}, {}", balance, eth);
+    }
+
     public void pool() throws ExecutionException, InterruptedException {
         //List<MemberCoinChargeEntity> list = memberCoinChargeDao.selectAllBySymbolAndTag(CoinTypeEnum.USDT.name(), "ERC20", 1);
     	List<MemberCoinChargeEntity> list = new ArrayList<MemberCoinChargeEntity>();
diff --git a/src/test/java/com/xcong/excoin/SRCTest.java b/src/test/java/com/xcong/excoin/SRCTest.java
index 0513d06..5169f21 100644
--- a/src/test/java/com/xcong/excoin/SRCTest.java
+++ b/src/test/java/com/xcong/excoin/SRCTest.java
@@ -1,7 +1,95 @@
-package com.xcong.excoin;/**
-*
-* @author wzy
-* @date 2020-11-05
-**/
+package com.xcong.excoin;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
+import com.xcong.excoin.modules.coin.dao.TrcAddressDao;
+import com.xcong.excoin.modules.coin.entity.TrcAddressEntity;
+import com.xcong.excoin.utils.TRC20ApiUtils;
+import org.apache.catalina.security.SecurityUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2020-11-05
+ **/
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 public class SRCTest {
+
+    private static final String SRC_API = "http://27.50.59.35:5002/";
+
+    private static final String SIGN_STR = "w@a!llokmet";
+
+    public static void main(String[] args) {
+        Map<String, Object> param = new HashMap<>();
+        String orderNo = "123445";
+        String userid = "11";
+        String symbol = "USDT";
+        String amount = "1";
+        String toAddress = "Ox";
+        param.put("orderno", orderNo);
+        param.put("userid", userid);
+        param.put("symbol", symbol);
+        param.put("toAddress", toAddress);
+        param.put("amount", new BigDecimal(amount));
+        param.put("sign", SecureUtil.md5(orderNo + userid + symbol + amount + toAddress + SIGN_STR));
+        HttpRequest request = HttpRequest.post(SRC_API + "transout/created");
+        String body = request.body(JSONObject.toJSONString(param)).execute().body();
+        System.out.println(body);
+    }
+
+    private static void sign() {
+
+    }
+
+    @Autowired
+    private TrcAddressDao srcAddressDao;
+
+    @Test
+    public void addressInsertTest() throws IOException {
+        File file = new File("/Users/helius/Desktop/src20.xls");
+        FileInputStream input = new FileInputStream(file);
+
+        Workbook wb = null;
+        if (file.getName().endsWith(".xls")) {
+            wb = new HSSFWorkbook(input);
+        } else if (file.getName().endsWith(".xlsx")) {
+            wb = new XSSFWorkbook(input);
+        }
+
+        Sheet sheet = wb.getSheetAt(0);
+        int lastRowNum = sheet.getLastRowNum();
+        for (int i = 0; i < lastRowNum; i++) {
+            Row row = sheet.getRow(i);
+            Cell cell = row.getCell(0);
+            TrcAddressEntity addressEntity =  new TrcAddressEntity();
+            addressEntity.setAddress(cell.getStringCellValue().trim());
+            addressEntity.setIsUse(2);
+            srcAddressDao.insert(addressEntity);
+        }
+    }
+
+    @Test
+    public void createTest() {
+        System.out.println(System.currentTimeMillis());
+        TRC20ApiUtils.createWallet(1L, "111111", "USDT", "111111111");
+        System.out.println(System.currentTimeMillis());
+    }
 }

--
Gitblit v1.9.1