xiaoyong931011
2023-08-18 544c84ec7e9e285015cd79d48e6e4c7dcf6e6f7b
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -998,28 +998,42 @@
        List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectAllMemberForInCome();
        if(CollUtil.isNotEmpty(dappMemberEntities)){
            if(dappMemberEntities.size() <= 100){
                for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                    Long memberId = dappMemberEntity.getId();
                    BigDecimal balance = dappMemberEntity.getBalance();
                    BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
                    dappMemberEntity.setBalance(balance.subtract(cnt));
                    dappMemberDao.updateById(dappMemberEntity);
                    DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                            DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                            DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
                    );
                    BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                    //卖出资产乘以价格获取到预期获取的总额
                    BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
            //总划入
            BigDecimal totalAdd = BigDecimal.ZERO;
                    //资产包卖出划入底池比例
                    DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                            DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
                            DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
                    );
                    BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            //资产包积分价格
            DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                    DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
            );
            BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            //卖出积分直接销毁。
            DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
                    DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
            );
            BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.PACKAGE_POOR.getType(),
                    DataDictionaryEnum.PACKAGE_POOR.getCode()
            );
            BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
            if(dappMemberEntities.size() <= 100){
                for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                    Long memberId = dappMemberEntity.getId();
                    BigDecimal balance = dappMemberEntity.getBalance();
                    //前一百卖出一半
                    BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
                    dappMemberEntity.setBalance(balance.subtract(cnt));
                    dappMemberDao.updateById(dappMemberEntity);
                    //卖出资产乘以价格获取到预期获取的总额
                    BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                    //划入底池的金额
                    BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                    //实际获取的金额
@@ -1040,29 +1054,9 @@
                            DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                            BigDecimal.ZERO);
                    dappFundFlowDao.insert(feeFlow);
                    //卖出积分直接销毁。
                    DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                            DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
                            DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
                    );
                    BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                    //更新USDT底池
                    DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                            DataDictionaryEnum.PACKAGE_POOR.getType(),
                            DataDictionaryEnum.PACKAGE_POOR.getCode()
                    );
                    BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                    BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
                    packagePoorDic.setValue(avaPackagePoor.toString());
                    dataDictionaryCustomMapper.updateById(packagePoorDic);
                    //计算当前价格
                    BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
                    packageScorePriceDic.setValue(divide.toString());
                    dataDictionaryCustomMapper.updateById(packageScorePriceDic);
                    totalAdd = totalAdd.add(poorAmount);
                }
                return new FebsResponse().success();
            }
            }else{
            List<MallAchieveRecord> mallAchieveRecordList = new ArrayList<>();
            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
                //获取每个人的业绩
@@ -1114,19 +1108,8 @@
                        BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
                        dappMemberEntity.setBalance(balance.subtract(cnt));
                        dappMemberDao.updateById(dappMemberEntity);
                        DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
                        );
                        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //卖出资产乘以价格获取到预期获取的总额
                        BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                        //资产包卖出划入底池比例
                        DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
                                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
                        );
                        BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //划入底池的金额
                        BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                        //实际获取的金额
@@ -1147,26 +1130,7 @@
                                DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                BigDecimal.ZERO);
                        dappFundFlowDao.insert(feeFlow);
                        //卖出积分直接销毁。
                        DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
                                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
                        );
                        BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //更新USDT底池
                        DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_POOR.getType(),
                                DataDictionaryEnum.PACKAGE_POOR.getCode()
                        );
                        BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
                        packagePoorDic.setValue(avaPackagePoor.toString());
                        dataDictionaryCustomMapper.updateById(packagePoorDic);
                        //计算当前价格
                        BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
                        packageScorePriceDic.setValue(divide.toString());
                        dataDictionaryCustomMapper.updateById(packageScorePriceDic);
                            totalAdd = totalAdd.add(poorAmount);
                    }
                }
@@ -1184,19 +1148,9 @@
                        BigDecimal cnt = balance;
                        dappMemberEntity.setBalance(balance.subtract(cnt));
                        dappMemberDao.updateById(dappMemberEntity);
                        DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
                                DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
                        );
                        BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //卖出资产乘以价格获取到预期获取的总额
                        BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
                        //资产包卖出划入底池比例
                        DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
                                DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
                        );
                        BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //划入底池的金额
                        BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
                        //实际获取的金额
@@ -1217,30 +1171,23 @@
                                DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
                                BigDecimal.ZERO);
                        dappFundFlowDao.insert(feeFlow);
                        //卖出积分回收。
                        DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
                                DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
                        );
                        BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        //更新USDT底池
                        DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                                DataDictionaryEnum.PACKAGE_POOR.getType(),
                                DataDictionaryEnum.PACKAGE_POOR.getCode()
                        );
                        BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
                        BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
                            totalAdd = totalAdd.add(poorAmount);
                        }
                    }
                }
            }
            BigDecimal avaPackagePoor = packagePoor.add(totalAdd);
                        packagePoorDic.setValue(avaPackagePoor.toString());
                        dataDictionaryCustomMapper.updateById(packagePoorDic);
                        //计算当前价格
                        BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
                        packageScorePriceDic.setValue(divide.toString());
                        dataDictionaryCustomMapper.updateById(packageScorePriceDic);
                    }
                }
            }
            DappAKlineEntity dappAKlineEntity = new DappAKlineEntity();
            dappAKlineEntity.setOpenPrice(divide);
            dappAKlineEntity.setType(1);
            dappAKlineMapper.insert(dappAKlineEntity);
        }
        return new FebsResponse().success();
    }