xiaoyong931011
2023-08-03 a723f687ea40161699b85a91e610ac79da1c2392
数据修改
11 files modified
172 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractInit.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/contract/andao/AndaoContractMain.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java 12 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 107 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java 20 ●●●● patch | view | raw | blame | history
src/main/resources/application-job.yml 4 ●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 4 ●●●● patch | view | raw | blame | history
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)