xiaoyong931011
2023-06-05 ad3e1aee8d80d7534ad777a16255fed922fc5dde
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -363,6 +363,15 @@
         * A币卖币规则,卖出100%销毁,30%回流底池溢价
         */
        DappMemberEntity member = LoginUserUtil.getAppUser();
        DataDictionaryCustom systemStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                PoolEnum.SYSTEM.getType(),
                PoolEnum.SYSTEM.getCode()
        );
        String value = systemStateDic.getValue();
        if("STOP".equals(value)){
            throw new FebsException("Not yet open");
        }
        //提币数量
        BigDecimal amount = withdrawDto.getAmount();
        if(BigDecimal.ZERO.compareTo(amount) >= 0){
@@ -402,9 +411,16 @@
        BigDecimal feePercent = new BigDecimal(toUsdtPercentFeeDic.getValue());
        //手续费扣除USDT
        BigDecimal feeUsdtAmount = coinUsdtAmount.multiply(feePercent).setScale(4,BigDecimal.ROUND_DOWN);
        //实际提现USDT数量
        BigDecimal realUsdtAmount = coinUsdtAmount.subtract(feeUsdtAmount).setScale(4,BigDecimal.ROUND_DOWN);
        //实际提现USDT数量,先扣除1%的手续费后,只到账70%
        DataDictionaryCustom outPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                PoolEnum.WALLET_COIN_OUT_PERCENT.getType(),
                PoolEnum.WALLET_COIN_OUT_PERCENT.getCode()
        );
        BigDecimal outPercent = new BigDecimal(outPercentDic.getValue());
        BigDecimal realUsdtAmount = coinUsdtAmount.subtract(feeUsdtAmount).setScale(4,BigDecimal.ROUND_DOWN);
        BigDecimal realUsdtAmountFee = realUsdtAmount.multiply(outPercent).setScale(4,BigDecimal.ROUND_DOWN);
        realUsdtAmount = realUsdtAmount.subtract(realUsdtAmountFee);
        //减少闪对钱包的币的数量
        this.updateWalletCoinWithLock(amount, member.getId(), 2);
        //增加流水
@@ -429,11 +445,6 @@
        /**
         * A币卖币规则,卖出100%销毁,30%回流底池溢价
         */
        DataDictionaryCustom outPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                PoolEnum.WALLET_COIN_OUT_PERCENT.getType(),
                PoolEnum.WALLET_COIN_OUT_PERCENT.getCode()
        );
        BigDecimal outPercent = new BigDecimal(outPercentDic.getValue());
        coinUsdtAmount = coinUsdtAmount.multiply(outPercent).setScale(4,BigDecimal.ROUND_DOWN);
        //金本位底池数量
        DataDictionaryCustom coinAUsdtPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -454,7 +465,7 @@
        coinACntDic.setValue(coinACnt.toString());
        dataDictionaryCustomMapper.updateById(coinACntDic);
        coinAPrice = coinAUsdtCnt.divide(coinACnt,8,BigDecimal.ROUND_DOWN);
        coinAPrice = coinAUsdtCnt.divide(coinACnt,12,BigDecimal.ROUND_DOWN);
        aCoinPriceDic.setValue(coinAPrice.toString());
        dataDictionaryCustomMapper.updateById(aCoinPriceDic);
@@ -622,6 +633,14 @@
        DappMemberEntity member = LoginUserUtil.getAppUser();
        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
        DataDictionaryCustom systemStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                PoolEnum.SYSTEM.getType(),
                PoolEnum.SYSTEM.getCode()
        );
        String value = systemStateDic.getValue();
        if("STOP".equals(value)){
            throw new FebsException("Not yet open");
        }
        String upgrade = redisUtils.getString("APP_UPGRADE");
        if ("upgrade".equals(upgrade)) {
            throw new FebsException("功能升级中");
@@ -675,6 +694,36 @@
                    if (fundFlowOld.getStatus() == 1 && StrUtil.isEmpty(fundFlowOld.getFromHash())) {
                        dappFundFlowDao.deleteById(fundFlowOld.getId());
                        throw new FebsException("Refresh and try again");
                    }
                }
                /**
                 * 入金限制
                 *  每人总共入金100U
                 */
                BigDecimal amountIn = transferADto.getAmount();
                if(amountIn.compareTo(new BigDecimal(100)) != 0){
                    throw new FebsException("Limit per address 100 USDT");
                }
//                BigDecimal amountInLast = dappChargeUsdtMapper.selectByMaxAmountMemberId(member.getId());
                /**
                 * 限制用户买入总额,
                 *  目前每人限一单,总金额限制100U
                 */
                BigDecimal amountInLast = dappChargeUsdtMapper.selectBySumAmountMemberId(member.getId());
                DataDictionaryCustom systemAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                        PoolEnum.SYSTEM_ADDRESS.getType(),
                        PoolEnum.SYSTEM_ADDRESS.getCode()
                );
                if(StrUtil.isNotEmpty(systemAddressDic.getValue())){
                    if(!systemAddressDic.getValue().contains(dappMemberEntity.getAddress())){
                        if(BigDecimal.ZERO.compareTo(amountInLast) < 0){
                            throw new FebsException("Limit per address 100 USDT");
                        }
                    }
                }else{
                    if(BigDecimal.ZERO.compareTo(amountInLast) < 0){
                        throw new FebsException("Limit per address 100 USDT");
                    }
                }
                /**
@@ -839,13 +888,13 @@
        dappFundFlowDao.insert(memberFeeflow);
        //插入资产闪对手续费的流水
        DappFundFlowEntity dappFundFlowEntityFee = new DappFundFlowEntity(
                1L,
                295L,
                feeCnt,
                FundFlowEnum.WALLET_MINE_TO_COIN_FEE.getCode(),
                2,
                BigDecimal.ZERO);
        dappFundFlowDao.insert(dappFundFlowEntityFee);
        this.updateWalletMineWithLock(feeCnt,1L,1);
        this.updateWalletMineWithLock(feeCnt,295L,1);
    }
    @Override
@@ -1050,7 +1099,7 @@
                PoolEnum.COIN_A_PRICE.getCode()
        );
        BigDecimal coinAPrice = new BigDecimal(aCoinPriceDic.getValue());
        coinAPrice = coinAUsdtCnt.divide(coinACnt,8,BigDecimal.ROUND_DOWN);
        coinAPrice = coinAUsdtCnt.divide(coinACnt,12,BigDecimal.ROUND_DOWN);
        aCoinPriceDic.setValue(coinAPrice.toString());
        dataDictionaryCustomMapper.updateById(aCoinPriceDic);
@@ -1092,7 +1141,12 @@
        dappFundFlowDao.insert(aCoinCntFlow);
        DappUsdtPerkEntity parentEntity = dappUsdtPerkEntityMapper.selectByMemberId(memberParent.getId());
        BigDecimal availableAmountParent = parentEntity.getAusdAmount();
        if(ObjectUtil.isEmpty(parentEntity)){
            parentEntity = new DappUsdtPerkEntity();
            parentEntity.setMemberId(memberParent.getId());
            dappUsdtPerkEntityMapper.insert(parentEntity);
        }
        BigDecimal availableAmountParent = ObjectUtil.isEmpty(parentEntity.getAusdAmount()) ? BigDecimal.ZERO : parentEntity.getAusdAmount();
        parentEntity.setAusdAmount(availableAmountParent.add(coinCnt));
        dappUsdtPerkEntityMapper.updateById(parentEntity);
        //插入资产闪对的流水