From ce3b47fdf62926f80510a94f7a520dbf05267d6d Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Tue, 01 Dec 2020 14:59:38 +0800 Subject: [PATCH] 优化归集 --- src/main/java/com/xcong/excoin/modules/blackchain/service/UsdtEthService.java | 38 ++++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 18 deletions(-) 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 2d202a3..84eccc3 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 @@ -31,16 +31,16 @@ private static final String ETH_GAS_PRICE="ETH_GAS_PRICE"; private static BigDecimal ETH_GAS_LIMIT = new BigDecimal(60000); - private static final BigDecimal LIMIT = new BigDecimal("50"); + private static final BigDecimal LIMIT = new BigDecimal("10"); private static final BigDecimal LIMIT_ETH = new BigDecimal("0.2"); private static BigDecimal FEE = new BigDecimal("0.0042"); private static final BigDecimal ETH_TR_FEE = new BigDecimal("0.0032"); public static String ETH_FEE = "0.0042"; - public static final String TOTAL_ADDRESS = "0x3d83A28B6C2d599d2B6D272c5DBcDC9c976d344F"; - public static final String TOTAL_PRIVATE = "4a1ce332133d8917360c5f3b194f703a0cf5b86c4eea319b1cd01197e68dad27"; - + public static final String TOTAL_ADDRESS = "0x0e9f7eEfa4Dd804dDAE2972A7195Ea1fE04d2253"; + public static final String TOTAL_PRIVATE = "2b9cb76dd75dddc8ab4c4614f4c66b53604da49672586a026b253fae873bd017"; + public static final String POOL_ADDRESS = "0x1A37e4B839E5b691a835ff5fCf7c7A760003155D"; @Resource private MemberCoinChargeDao memberCoinChargeDao; @Resource @@ -55,6 +55,8 @@ public void pool() throws ExecutionException, InterruptedException { String gasPrice = getGasString(); + // 查询不归集的账号 + String not_pool_address = redisUtils.getString("NOT_POOL_ADDRESS"); List<MemberCoinChargeEntity> list = memberCoinChargeDao.selectAllBySymbolAndTag(CoinTypeEnum.USDT.name(), "ERC20", 1); if (CollUtil.isNotEmpty(list)) { EthService ethService = new EthService(); @@ -63,15 +65,19 @@ // 首先根据每个地址查询其是否有ETH 如果没有就充值ETH并设置1 表示初始状态 status=2(待充值)3:表示已提过 String address = coinCharge.getAddress(); Long memberId = coinCharge.getMemberId(); - BigDecimal lastAmount = coinCharge.getLastAmount(); - if (lastAmount == null || lastAmount.compareTo(LIMIT) < 0) { + BigDecimal usdt = coinCharge.getAmount(); + if(StringUtils.isNotBlank(not_pool_address) && not_pool_address.contains(address)){ + // 不归集的 + continue; + } + if (usdt == null || usdt.compareTo(LIMIT) < 0) { continue; } - BigDecimal usdt = ethService.tokenGetBalance(address); + // BigDecimal usdt = ethService.tokenGetBalance(address); //log.info("地址:{}, 金额:{}", address, usdt); - if (usdt != null && usdt.compareTo(LIMIT) > 0) { - usdt = usdt.subtract(new BigDecimal("0.01")); + if (usdt != null && usdt.compareTo(LIMIT) >= 0) { + //usdt = usdt.subtract(new BigDecimal("0.01")); // 查询eth是否足够 BigDecimal eth = EthService.getEthBlance(address); @@ -90,13 +96,8 @@ usdtStr = usdtStr.substring(0, usdtStr.lastIndexOf(".")); } - String hash = ethService.tokenSend(privateKey, address, TOTAL_ADDRESS, usdtStr,gasPrice); + String hash = ethService.tokenSend(privateKey, address, POOL_ADDRESS, usdtStr,gasPrice); log.info("归集:{}", hash); -// if (StrUtil.isNotBlank(hash)) { -// // 归集成功更新状态 先保存本次的hash值,待交易成功后再更新 -// coinCharge.setHash(hash); -// memberCoinChargeDao.updateById(coinCharge); -// } } else { String eth_transfer_fee = redisUtils.getString("ETH_TRANSFER_FEE_JYS"); if(StringUtils.isNotBlank(eth_transfer_fee) && "yes".equals(eth_transfer_fee)){ @@ -150,10 +151,11 @@ - public void pollByAddress(String address) throws ExecutionException, InterruptedException { + public void pollByAddress(String address,BigDecimal balance) throws ExecutionException, InterruptedException { String gasPrice = getGasString(); EthService ethService = new EthService(); - BigDecimal usdt = ethService.tokenGetBalance(address); + //BigDecimal usdt = ethService.tokenGetBalance(address); + BigDecimal usdt = balance; if(usdt==null || usdt.compareTo(LIMIT)<0){ return; } @@ -174,7 +176,7 @@ usdtStr = usdtStr.substring(0, usdtStr.lastIndexOf(".")); } - String hash = ethService.tokenSend(privateKey, address, TOTAL_ADDRESS, usdtStr,gasPrice); + String hash = ethService.tokenSend(privateKey, address, POOL_ADDRESS, usdtStr,gasPrice); log.info("冲币归集:{}", hash); // if (StrUtil.isNotBlank(hash)) { // // 归集成功更新状态 先保存本次的hash值,待交易成功后再更新 -- Gitblit v1.9.1