xiaoyong931011
2023-03-24 3087bfd3b7cbdd77aa22284b569dd3f8103fa1f8
后台修改
4 files modified
65 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java 17 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/chain/service/BscUsdtContractEvent.java 9 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 3 ●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/chain/job/ChainListenerJob.java
@@ -35,7 +35,7 @@
    public void chainBlockUpdate() {
        BigInteger blockNumber = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
        redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_NEWEST_NUM, blockNumber);
        redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_NEWEST_NUM, BigInteger.valueOf(26745054));
    }
    @Scheduled(cron = "0/2 * * * * ? ")
@@ -62,7 +62,7 @@
            toIncrement = incrementBlock.add(BigInteger.ONE);
        }
        redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, toIncrement);
        redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, BigInteger.valueOf(26745054));
    }
    @Override
@@ -83,6 +83,19 @@
//        ChainService.wssBaseCoinEventListener(block, bscUsdtContractEvent);
//        ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
        ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
//        BigInteger section = BigInteger.valueOf(5000);
//        while (newest.subtract(block).compareTo(section) > -1) {
//            BigInteger end = block.add(section);
//            log.info("监听:[{} - {}]", block, end);
//            ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
//
//            block = block.add(section);
//            if (block.compareTo(newest) > 0) {
//                block = newest;
//            }
//        }
//        ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
        long end = System.currentTimeMillis();
        log.info("区块链监听启动完成, 消耗时间{}", end - start);
    }
src/main/java/cc/mrbird/febs/mall/chain/service/BscUsdtContractEvent.java
@@ -55,12 +55,13 @@
        String address = e.to;
        String hash =  e.log.getTransactionHash();
        List<String> tdCoinWallets = memberCoinAddressDao.selectAllSymbolAddress(CoinTypeEnum.USDT.toString(),"ERC20");
//        Set<Object> addressList = redisUtils.sGet(ChainConstants.REDIS_KEY_SYSTEM_ADDRESS);
//        List<String> tdCoinWallets = memberCoinAddressDao.selectAllSymbolAddress(CoinTypeEnum.USDT.toString(),"ERC20");
        Set<Object> addressList = redisUtils.sGet(ChainConstants.REDIS_KEY_SYSTEM_ADDRESS);
        // 判断对方打款地址是否为源池地址
        if(CollUtil.isNotEmpty(tdCoinWallets) && tdCoinWallets.contains(address)){
        if(CollUtil.isNotEmpty(addressList) && addressList.contains(address)){
//            if(CollUtil.isNotEmpty(tdCoinWallets) && tdCoinWallets.contains(address)){
            log.info("触发USDT合约监听事件");
//            redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber());
            redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber());
            // hash没有用过
            Map<String, Object> param = new HashMap<>();
            param.put("hash", hash);
src/main/resources/application-dev.yml
@@ -68,4 +68,5 @@
    domain: https://openapi.alipaydev.com/gateway.do
system:
  chain-listener: false
  chain-listener: false
#  chain-listener: true
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -500,6 +500,19 @@
//                    memberCoinAddressEntity.getAddress(),
//                    AppContants.ERC20_POOL_ADDRESS,
//                    balanceOf.toString());
//        long start = System.currentTimeMillis();
//        Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
//        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
//        BigInteger block;
//        if (incrementObj == null) {
//            block = newest;
//        } else {
//            block = newest;
//        }
////        ChainService.wssBaseCoinEventListener(BigInteger.valueOf(26737044), baseCoinService);
//        ChainService.wssContractEventListener2(BigInteger.valueOf(26739725), bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
        long start = System.currentTimeMillis();
        Object incrementObj = redisUtils.get(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM);
        BigInteger newest = ChainService.getInstance(ChainEnum.BSC_USDT.name()).blockNumber();
@@ -507,10 +520,27 @@
        if (incrementObj == null) {
            block = newest;
        } else {
            block = newest;
            block = (BigInteger) incrementObj;
        }
//        ChainService.wssBaseCoinEventListener(BigInteger.valueOf(26737044), baseCoinService);
        ChainService.wssContractEventListener2(BigInteger.valueOf(26739725), bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
//        ChainService.wssBaseCoinEventListener(block, baseCoinService);
//        ChainService.wssBaseCoinEventListener(block, bscUsdtContractEvent);
//        ChainService.wssContractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
//        ChainService.wssContractEventListener2(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
        BigInteger section = BigInteger.valueOf(5000);
        while (newest.subtract(block).compareTo(section) > -1) {
            BigInteger end = block.add(section);
            ChainService.contractEventListener(block, end, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
            block = block.add(section);
            if (block.compareTo(newest) > 0) {
                block = newest;
            }
        }
        ChainService.contractEventListener(block, bscUsdtContractEvent, ChainEnum.BSC_USDT.name());
        long end = System.currentTimeMillis();
    }
//
//    @Test