src/main/java/cc/mrbird/febs/mall/chain/constants/ChainConstants.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/chain/job/BlockCoinUpdateJob.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/chain/job/Trc20PoolAddressInitJob.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/chain/job/UsdtErc20InitJob.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/chain/service/BscUsdtContractEvent.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/mall/chain/constants/ChainConstants.java
@@ -2,6 +2,8 @@ public interface ChainConstants { public static final String REDIS_KEY_POOL_ADDRESS = "TRC20_POOL"; String REDIS_KEY_POOL_ADDRESS = "TRC20_POOL"; String REDIS_KEY_ADDRESS_LIST = "TRC20_ADDRESS_LIST"; String REDIS_KEY_SYSTEM_ADDRESS = "SYSTEM_ADDRESS_LIST"; } src/main/java/cc/mrbird/febs/mall/chain/job/BlockCoinUpdateJob.java
@@ -20,8 +20,8 @@ * @date 2020-07-02 **/ @Slf4j @Component @ConditionalOnProperty(prefix = "system", name = "block-job", havingValue = "true") //@Component //@ConditionalOnProperty(prefix = "system", name = "block-job", havingValue = "true") public class BlockCoinUpdateJob { @Resource src/main/java/cc/mrbird/febs/mall/chain/job/NotionalPoolingJob.java
New file @@ -0,0 +1,83 @@ package cc.mrbird.febs.mall.chain.job; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.chain.constants.ChainConstants; import cc.mrbird.febs.mall.chain.service.TrxUsdtUpdateService; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Set; /** * 归集定时任务 * * @author wzy * @date 2020-07-02 **/ @Slf4j @Component @ConditionalOnProperty(prefix = "system", name = "block-job", havingValue = "true") public class NotionalPoolingJob { @Resource private RedisUtils redisUtils; @Resource private TrxUsdtUpdateService trxUsdtUpdateService; // /** // * usdt 归集 // */ // @Scheduled(cron = "0 5/30 * * * ? ") // public void poolUsdtEth() { // try { // log.info("USDT归集开始"); // usdtEthService.pool(); // log.info("USDT归集结束"); // } catch (ExecutionException | InterruptedException e) { // log.error("#usdt归集错误#", e); // } // } // // /** // * 使用扫块 不需要这个 // */ // //@Scheduled(cron = "0 2/8 * * * ? ") // @Deprecated // public void usdtEthPoolCheck() { // log.info("USDTETH归集结果扫描开始"); // usdtEthService.usdtEthPoolCheck(); // } // // @Scheduled(cron = "0 2/30 * * * ? ") // public void poolEth() { // try { // usdtEthService.ethPool(); // } catch (ExecutionException | InterruptedException e) { // log.info("#ETH归集错误#", e); // } // } /** * 归集TRC20 */ @Scheduled(cron = "0 0/30 * * * ? ") public void poolUsdtTrc20() { // TODO 执行BSC归集逻辑 log.info("归集TRC20执行"); // Set<Object> poolAddress = redisUtils.sGet(ChainConstants.REDIS_KEY_POOL_ADDRESS); // if (poolAddress == null || poolAddress.isEmpty()) { // return; // } // // for (Object address : poolAddress) { // String next = (String) address; // log.info("归集地址:{}", next); // trxUsdtUpdateService.poolByAddress(next); // } } } src/main/java/cc/mrbird/febs/mall/chain/job/Trc20PoolAddressInitJob.java
@@ -39,7 +39,11 @@ } addressList.forEach(item -> { // 待归集的地址 redisUtils.sSet(ChainConstants.REDIS_KEY_POOL_ADDRESS, item.getAddress()); // 系统所有用户地址 redisUtils.sSet(ChainConstants.REDIS_KEY_SYSTEM_ADDRESS, item.getAddress()); }); } } src/main/java/cc/mrbird/febs/mall/chain/job/UsdtErc20InitJob.java
@@ -23,7 +23,7 @@ @Resource private UsdtErc20UpdateService usdtErc20UpdateService; @PostConstruct // @PostConstruct public void initCoinTrade() { System.out.println("开启USDT同步"); usdtErc20UpdateService.updateUsdt(); src/main/java/cc/mrbird/febs/mall/chain/service/BscUsdtContractEvent.java
@@ -4,6 +4,7 @@ import cc.mrbird.febs.common.enumerates.MallMoneyFlowTypeEnum; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.chain.constants.ChainConstants; import cc.mrbird.febs.mall.chain.enums.ChainEnum; import cc.mrbird.febs.mall.chain.enums.CoinTypeEnum; import cc.mrbird.febs.mall.entity.MallMemberWallet; @@ -14,6 +15,7 @@ import cc.mrbird.febs.mall.mapper.MemberCoinAddressDao; import cc.mrbird.febs.mall.mapper.MemberCoinChargeDao; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -26,6 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @Slf4j @Service @@ -52,13 +55,10 @@ String address = e.to; String hash = e.log.getTransactionHash(); MemberCoinAddressEntity coinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbol(address, CoinTypeEnum.USDT.toString()); if (coinAddressEntity == null) { return; } Set<Object> addressList = redisUtils.sGet(ChainConstants.REDIS_KEY_SYSTEM_ADDRESS); // 判断对方打款地址是否为源池地址 if(ObjectUtil.isNotEmpty(coinAddressEntity)){ // if (ChainEnum.BSC_USDT.getAddress().toLowerCase().equals(e.to)) { if(CollUtil.isNotEmpty(addressList) && addressList.contains(address)){ log.info("触发USDT合约监听事件"); redisUtils.set(AppContants.REDIS_KEY_BLOCK_ETH_INCREMENT_NUM, e.log.getBlockNumber()); // hash没有用过 @@ -70,10 +70,10 @@ return; } // MemberCoinAddressEntity coinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbol(address, CoinTypeEnum.USDT.toString()); // if (coinAddressEntity == null) { // return; // } MemberCoinAddressEntity coinAddressEntity = memberCoinAddressDao.selectCoinAddressByAddressAndSymbol(address, CoinTypeEnum.USDT.toString()); if (coinAddressEntity == null) { return; } Long memberId = coinAddressEntity.getMemberId(); ContractChainService sourceUsdtInstance = ChainService.getInstance(ChainEnum.BSC_USDT.name()); int decimals = sourceUsdtInstance.decimals(); @@ -105,14 +105,11 @@ FlowTypeEnum.BALANCE.getValue(), MallMoneyFlowTypeEnum.CHARGE.getName() ); // 同步 // BigDecimal bigDecimal = ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(e.to); } } } public String insertCoinCharge(String address, Long memberId, BigDecimal newBalance, String symbol, String tag, BigDecimal lastAmount, String hash) { MemberCoinChargeEntity memberCoinChargeEntity = new MemberCoinChargeEntity(); memberCoinChargeEntity.setAddress(address);