xiaoyong931011
2023-06-07 5a84af23dd391b6d7a5f08eec3fc2b0acfd45057
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){
@@ -695,9 +704,27 @@
                if(amountIn.compareTo(new BigDecimal(100)) != 0){
                    throw new FebsException("Limit per address 100 USDT");
                }
                BigDecimal amountInLast = dappChargeUsdtMapper.selectByMaxAmountMemberId(member.getId());
                if(BigDecimal.ZERO.compareTo(amountInLast) < 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");
                    }
                }
                /**
                 * 验证账户是否有入金金额的10%的AUSD
@@ -1029,7 +1056,10 @@
                coinCnt.negate(),
                FundFlowEnum.ANDAO_MEMBER_TO_MENBER.getCode(),
                2,
                BigDecimal.ZERO);
                BigDecimal.ZERO,
                dappMemberEntity.getAddress(),
                memberParent.getAddress(),
                memberParent.getId());
        dappFundFlowDao.insert(aCoinCntFlow);
        //闪对钱包20% 手续费(扣币)
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -1048,7 +1078,10 @@
                aCoinCntReal,
                FundFlowEnum.ANDAO_MEMBER_TO_MENBER.getCode(),
                2,
                BigDecimal.ZERO);
                BigDecimal.ZERO,
                dappMemberEntity.getAddress(),
                memberParent.getAddress(),
                dappMemberEntity.getId());
        dappFundFlowDao.insert(dappFundFlowEntity);
        //金本位底池数量
@@ -1110,11 +1143,19 @@
                coinCnt.negate(),
                FundFlowEnum.AUSDT_MEMBER_TO_MENBER.getCode(),
                2,
                BigDecimal.ZERO);
                BigDecimal.ZERO,
                dappMemberEntity.getAddress(),
                memberParent.getAddress(),
                memberParent.getId());
        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);
        //插入资产闪对的流水
@@ -1123,7 +1164,10 @@
                coinCnt,
                FundFlowEnum.AUSDT_MEMBER_TO_MENBER.getCode(),
                2,
                BigDecimal.ZERO);
                BigDecimal.ZERO,
                dappMemberEntity.getAddress(),
                memberParent.getAddress(),
                dappMemberEntity.getId());
        dappFundFlowDao.insert(aCoinCntFlowParent);
    }
}