src/main/java/cc/mrbird/febs/common/contants/AppContants.java
@@ -195,13 +195,13 @@ /** * A入金,90%进入A底池--A底池钱包 */ public static final String ADDRESS_A_POOL_PEOJECT = "0xC0bc98555C3d03A374c27cd247b12667a3eDf766"; public static final String ADDRESS_A_POOL_PEOJECT = "0x3614b30913f284e8868d7f6814bbcb62e3f84127"; /** * A入金,10%进入B底池--B底池钱包 */ public static final String ADDRESS_B_POOL_PEOJECT = "0x9Bfb58c6649B85AB417b9FF482c38158353c7c97"; public static final String ADDRESS_B_POOL_PEOJECT = "0x968c7789e955a244b7d8e7529669da1b170af51f"; public static final BigDecimal NODE_PERK_PERCENT = new BigDecimal(0.2); src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -29,8 +29,8 @@ // "https://bsc-dataseed1.ninicoin.io", // "0x55d398326f99059fF775485246999027B3197955", // ""), BSC_USDT_W_POOL("BSC", "0x74fC0e035f315F7BD8b7686e22581AB1afC45e97", "0xc9fd78a879b17007f353595354e3128df702fe5e3518762c0c517cd7e00d13a0", BSC_USDT_W_POOL("BSC", "0xCe74955CF5289E803EE518902076eF42BB09b7a8", AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() , "https://bsc-dataseed1.ninicoin.io", "0x55d398326f99059fF775485246999027B3197955", ""), @@ -38,8 +38,8 @@ /** * A币入金的后进入A池,进入B池 */ BSC_USDT_A_POOL("BSC", "0x891884eed30219DE39CCAE8b796F5fAE231A2Ea0", "446b506156020a5f1160903fd298ad4621dadcb357b31aa166ce420e4ec82f88", BSC_USDT_A_POOL("BSC", "0xCe74955CF5289E803EE518902076eF42BB09b7a8", AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() , "https://bsc-dataseed1.ninicoin.io", "0x55d398326f99059fF775485246999027B3197955", ""), src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java
@@ -20,6 +20,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import org.web3j.crypto.Credentials; import org.web3j.protocol.Web3j; @@ -37,6 +38,7 @@ @Component @ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true") public class ContractMain { @Autowired src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java
@@ -11,7 +11,7 @@ @Component @ConditionalOnProperty(prefix = "system", name = "quartz-job", havingValue = "true") @ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true") public class AndaoContractInit { @Autowired src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java
@@ -29,7 +29,7 @@ @Component @ConditionalOnProperty(prefix = "system", name = "quartz-job", havingValue = "true") @ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true") public class AndaoContractMain { @Autowired src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java
@@ -56,12 +56,12 @@ return new FebsResponse().success(); } @ApiOperation(value = "根据flowID,重新消费", notes = "根据flowID,重新消费") @GetMapping(value = "/sendFlow/{flowId}") public FebsResponse sendFlow(@PathVariable("flowId") String flowId) { chainProducer.sendContractAnDao(Long.parseLong(flowId)); return new FebsResponse().success(); } // @ApiOperation(value = "根据flowID,重新消费", notes = "根据flowID,重新消费") // @GetMapping(value = "/sendFlow/{flowId}") // public FebsResponse sendFlow(@PathVariable("flowId") String flowId) { // chainProducer.sendContractAnDao(Long.parseLong(flowId)); // return new FebsResponse().success(); // } // @ApiOperation(value = "头部数据", notes = "头部数据") // @GetMapping(value = "/totalIncome") src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -25,6 +25,7 @@ import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.Week; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -1679,8 +1680,9 @@ * 发起USDT转账 */ log.info("amount:{},address:{}",amount,address); String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount); ThreadUtil.sleep(5000); // String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount); String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transferUSDT(address, amount); if(StrUtil.isEmpty(hash)){ // hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL.name()).transfer(address, amount); return; @@ -1697,17 +1699,17 @@ /** * 紧急提现方法 */ public static void main(String[] args) { BigDecimal amount = new BigDecimal("0.01"); String address = "0xB3cF9669F398f444DfCAebbAd2A49bF32ba41fE3"; String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount); System.out.println(hash); // int i = ChainService.getInstance(ChainEnum.BSC_TFC.name()).allowanceCnt("0x80098f854950f9327C4F4E747d285Fd2d41fbf3e"); } // public static void main(String[] args) { // BigDecimal amount = new BigDecimal("0.01"); // String address = "0xB3cF9669F398f444DfCAebbAd2A49bF32ba41fE3"; // // String hash = ChainService.getInstance(ChainEnum.BSC_USDT_W_POOL_CONTRACT.name()).transferUSDT(address, amount); // // System.out.println(hash); // // //// int i = ChainService.getInstance(ChainEnum.BSC_TFC.name()).allowanceCnt("0x80098f854950f9327C4F4E747d285Fd2d41fbf3e"); // } @Override public void aCoinFire() { @@ -1752,7 +1754,7 @@ PoolEnum.COIN_A_CNT.getType(), PoolEnum.COIN_A_CNT.getCode()); BigDecimal coinACnt = new BigDecimal(coinACntDic.getValue()); coinACnt = coinACnt.subtract(totalCnt.multiply(new BigDecimal(0.8))); coinACnt = coinACnt.subtract(totalCnt.multiply(new BigDecimal(0.65))); coinACntDic.setValue(coinACnt.toString()); dataDictionaryCustomMapper.updateById(coinACntDic); @@ -2145,6 +2147,9 @@ if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == flow.getStatus()){ return; } if(FundFlowEnum.BUY_A_COIN.getCode() != flow.getType()){ return; } DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); if(ObjectUtil.isEmpty(dappMemberEntity)){ return; @@ -2180,6 +2185,58 @@ flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE); dappFundFlowDao.updateById(flow); BigDecimal amount = flow.getAmount(); /** * 90%进入A币底池 10%进入B币LP薄饼底池 */ DataDictionaryCustom usdtAPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( PoolEnum.USDT_A_PERCENT.getType(), PoolEnum.USDT_A_PERCENT.getCode() ); BigDecimal usdtAPercent = new BigDecimal(StrUtil.isEmpty(usdtAPercentDic.getValue()) ? "0.7" : usdtAPercentDic.getValue()); BigDecimal usdtAAmount = amount.multiply(usdtAPercent).setScale(4, BigDecimal.ROUND_DOWN); //生成一条进行中的70%进入A币底池的资金流水记录 DappFundFlowEntity fundFlowToA = new DappFundFlowEntity( 1L, usdtAAmount, FundFlowEnum.USDT_IN_A_POOL.getCode(), 1, BigDecimal.ZERO, null, dappChargeUsdtEntity.getId()); dappFundFlowDao.insert(fundFlowToA); BigDecimal usdtWAmount = amount.multiply(new BigDecimal(0.2)).setScale(4, BigDecimal.ROUND_DOWN); // //生成一条进行中的20%进入A币底池的资金流水记录 // DappFundFlowEntity fundFlowToW = new DappFundFlowEntity( // 1L, // usdtWAmount, // FundFlowEnum.USDT_IN_W_POOL.getCode(), // 1, // BigDecimal.ZERO, // null, // dappChargeUsdtEntity.getId()); // dappFundFlowDao.insert(fundFlowToW); DataDictionaryCustom usdtBPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( PoolEnum.USDT_B_PERCENT.getType(), PoolEnum.USDT_B_PERCENT.getCode() ); BigDecimal usdtBPercent = new BigDecimal(StrUtil.isEmpty(usdtBPercentDic.getValue()) ? "0.1" : usdtBPercentDic.getValue()); BigDecimal usdtBAmount = amount.multiply(usdtBPercent).setScale(4, BigDecimal.ROUND_DOWN); //生成一条进行中的10%进入B币底池的资金流水记录 DappFundFlowEntity fundFlowToB = new DappFundFlowEntity( 1L, usdtBAmount, FundFlowEnum.USDT_IN_B_POOL.getCode(), 1, BigDecimal.ZERO, null, dappChargeUsdtEntity.getId()); dappFundFlowDao.insert(fundFlowToB); /** * 发送消息处理返利逻辑 */ @@ -2188,6 +2245,24 @@ * 发送消息处理代理升级 */ chainProducer.sendAntMemberLevelMsg(memberId); //90%进入A币底池 chainProducer.sendAntACoinInAPoolMsg(fundFlowToA.getId()); ThreadUtil.sleep(5000); //10%进入B币LP薄饼底池 chainProducer.sendAntACoinInBPoolMsg(fundFlowToB.getId()); } public static void main(String[] args) { System.out.print(1); System.out.print(2); // ThreadUtil.execute(() -> { // //90%进入A币底池 // System.out.print(1); // ThreadUtil.sleep(5000); // //10%进入B币LP薄饼底池 // System.out.print(2); // }); } @Override @@ -2202,6 +2277,10 @@ if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE != dappFundFlowEntity.getStatus()){ return; } if(FundFlowEnum.BUY_A_COIN.getCode() != dappFundFlowEntity.getType()){ return; } Long memberId = dappFundFlowEntity.getMemberId(); DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); if(ObjectUtil.isEmpty(dappMemberEntity)){ src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -364,6 +364,11 @@ * A币卖币规则,卖出100%销毁,30%回流底池溢价 */ DappMemberEntity member = LoginUserUtil.getAppUser(); DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId()); Integer activeStatus = dappMemberEntity.getActiveStatus(); if(1 != activeStatus){ throw new FebsException("Not yet open"); } DataDictionaryCustom systemStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( PoolEnum.SYSTEM.getType(), @@ -826,6 +831,8 @@ */ flow.setFromHash(transferADto.getTxHash()); dappFundFlowDao.updateById(flow); chainProducer.sendContractAnDao(flow.getId()); // /** // * 生成会员入金买A币的记录 // */ src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
@@ -35,16 +35,16 @@ @Autowired private DappSystemService dappSystemService; @Scheduled(cron = "0/30 * * * * ? ") public void BnbTransferAgain() { DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectByStateAndVersionAndFromHashLimitOne(2,2); if(ObjectUtil.isNotEmpty(dappFundFlowEntity)){ Integer isReturn = dappFundFlowEntity.getIsReturn(); if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == isReturn){ chainProducer.sendBnbTransferTestMsg(dappFundFlowEntity.getId()); } } } // @Scheduled(cron = "0/30 * * * * ? ") // public void BnbTransferAgain() { // DappFundFlowEntity dappFundFlowEntity = dappFundFlowDao.selectByStateAndVersionAndFromHashLimitOne(2,2); // if(ObjectUtil.isNotEmpty(dappFundFlowEntity)){ // Integer isReturn = dappFundFlowEntity.getIsReturn(); // if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == isReturn){ // chainProducer.sendBnbTransferTestMsg(dappFundFlowEntity.getId()); // } // } // } @Scheduled(cron = "0/30 * * * * ? ") public void ABTransferAgain() { src/main/resources/application-job.yml
@@ -15,10 +15,10 @@ datasource: # 数据源-1,名称为 base base: username: db_twocoin_test username: db_twocoin_prd password: 1!qaz2@WSX driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/db_twocoin_test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 url: jdbc:mysql://127.0.0.1:3306/db_twocoin_prd?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 redis: # Redis数据库索引(默认为 0) src/main/resources/application-test.yml
@@ -15,10 +15,10 @@ datasource: # 数据源-1,名称为 base base: username: db_twocoin_test username: db_twocoin_prd password: 1!qaz2@WSX driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/db_twocoin_test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 url: jdbc:mysql://127.0.0.1:3306/db_twocoin_prd?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 redis: # Redis数据库索引(默认为 0)