KKSU
2024-05-31 46b4b019f4c0e2f209d8747298d3dc6974e7c658
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -87,10 +87,9 @@
        BigDecimal ccToday = BigDecimal.ZERO;
        if(CollUtil.isNotEmpty(ccTodays)){
            for(DappMemberFund dappMemberFund : ccTodays){
                BigDecimal sameCoin = dappMemberFund.getSameCoin();
                BigDecimal finxMineCoin = dappMemberFund.getFinxMineCoin();
                BigDecimal price = dappMemberFund.getPrice();
                BigDecimal add = sameCoin.divide(price, 8, BigDecimal.ROUND_DOWN).add(finxMineCoin);
                BigDecimal usdtCoin = dappMemberFund.getUsdtCoin();
                BigDecimal coinTarget = dappMemberFund.getCoinTarget();
                BigDecimal add = coinTarget.add(usdtCoin);
                ccToday = ccToday.add(add);
            }
        }
@@ -98,23 +97,23 @@
        List<DappMemberFund> dappMemberFunds = dappMemberFundMapper.selectList(null);
        walletInfo.setCcTotal(CollUtil.isEmpty(dappMemberFunds) ? BigDecimal.ZERO :
                dappMemberFunds.stream().map(item-> item.getAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN));
                dappMemberFunds.stream().map(DappMemberFund::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN));
        List<DappAchieve> dappAchieves = dappAchieveMapper.selectListByMemberId(memberId);
        BigDecimal goldAmountDone = dappAchieveMapper.selectGoldAmountByMemberId(memberId);
        BigDecimal coinAmountDone = dappAchieveMapper.selectCoinAmountByMemberId(memberId);
        if(CollUtil.isNotEmpty(dappAchieves)){
            BigDecimal goldAmount = dappAchieves.stream().map(item-> item.getGoldAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
            BigDecimal coinAmount = dappAchieves.stream().map(item-> item.getCoinAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
            BigDecimal goldAmount = dappAchieves.stream().map(DappAchieve::getGoldAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
            BigDecimal coinAmount = dappAchieves.stream().map(DappAchieve::getCoinAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(8,BigDecimal.ROUND_DOWN);
            BigDecimal goldAmountAva = goldAmount.subtract(goldAmountDone);//金本位剩余
            BigDecimal coinAmountAva = coinAmount.subtract(coinAmountDone);//币本位剩余
            if(goldAmountAva.compareTo(BigDecimal.ZERO) > 0){
            if(goldAmountAva.compareTo(new BigDecimal(0.001)) > 0){
                walletInfo.setGoldAmount(goldAmountAva);
            }else{
                walletInfo.setGoldAmount(BigDecimal.ZERO);
            }
            if(coinAmountAva.compareTo(BigDecimal.ZERO) > 0){
            if(coinAmountAva.compareTo(new BigDecimal(0.001)) > 0){
                walletInfo.setCoinAmount(coinAmountAva);
            }else{
                walletInfo.setCoinAmount(BigDecimal.ZERO);
@@ -126,6 +125,9 @@
        BigDecimal gfaDays = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_DAYS.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
        walletInfo.setGfaDays(gfaDays);
        List<DappAchieve> dappAchieves1 = dappAchieveMapper.selectList(null);
        walletInfo.setAddressCount(CollUtil.isEmpty(dappAchieves1) ? 0 : dappAchieves1.size());
        return walletInfo;
    }
@@ -374,10 +376,21 @@
            dappAchieve.setAmountMax(achieveOut.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
            dappAchieve.setState(DappAchieve.STATUS_ING);
            dappAchieve.setAmountDone(BigDecimal.ZERO);
            /**
             * 计算金本位和币本位
             *  金本位:数量*价格*70*产矿百分比
             *  币本位:数量*30*产矿百分比
             */
            BigDecimal price = dappAchieve.getPrice();
            BigDecimal goldAmount = amount.multiply(price).multiply(new BigDecimal("0.7")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
            BigDecimal coinAmount = amount.multiply(new BigDecimal("0.3")).multiply(achieveOut).setScale(8, BigDecimal.ROUND_DOWN);
            dappAchieve.setGoldAmount(goldAmount);
            dappAchieve.setCoinAmount(coinAmount);
            dappAchieveMapper.insert(dappAchieve);
            asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
            asyncCjService.calculateAchieve(dappAchieve);
//            asyncCjService.calculateAchieve(dappAchieve);
            //发送一个延时队列消息。24小时之后产生第一次的质押产出
//            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
@@ -474,4 +487,15 @@
        IPage<DappMemberFund> records = dappFundFlowDao.memberFundList(page, dappMemberFund);
        return records.getRecords();
    }
    @Override
    public FebsResponse addressSize(AddressSizeDto addressSizeDto) {
        DataDictionaryCustom addressSizeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDicEnum.ADDRESS_SIZE.getValue(),
                DataDicEnum.ADDRESS_SIZE.getValue()
        );
        addressSizeDic.setValue(addressSizeDto.getAddressSize());
        dataDictionaryCustomMapper.updateById(addressSizeDic);
        return new FebsResponse().success();
    }
}