KKSU
2024-04-07 49fe390d3e59b22a20cd520da3c520c2ee670ebb
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -17,6 +17,7 @@
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -69,8 +70,9 @@
        walletInfo.setTzCoin(tzCoin);
        BigDecimal hdCoinGeren = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_GEREN.getValue(),null);
        BigDecimal hdCoinTuandui = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI.getValue(),null);
        walletInfo.setHdCoin(hdCoinGeren.add(hdCoinTuandui));
        BigDecimal hdCoinTuandui = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_DAIBI.getValue(),null);
        BigDecimal hdCoinTuanduiUSDT = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.HUA_DIAN_TUANDUI_USDT.getValue(),null);
        walletInfo.setHdCoin(hdCoinGeren.add(hdCoinTuandui).add(hdCoinTuanduiUSDT));
        BigDecimal zyTotal = dappFundFlowDao.selectAmountTotalByTypeAndMemberIdAndDate(member.getId(), FlowTypeEnum.ZHI_YA.getValue(),null).negate();
        walletInfo.setZyTotal(zyTotal);
@@ -234,6 +236,23 @@
    @Transactional(rollbackFor = Exception.class)
    public Long transfer(TransferDto transferDto) {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        QueryWrapper<DappFundFlowEntity> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("type" ,FlowTypeEnum.ZHI_YA.getValue());
        objectQueryWrapper.eq("status" ,DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
        List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectList(objectQueryWrapper);
        BigDecimal zhiyaAmount = new BigDecimal(redisUtils.getString(DataDicEnum.MEMBER_ZHIYA_AMOUNT.getValue()));
        Integer zhiyaTime = Integer.parseInt(redisUtils.getString(DataDicEnum.MEMBER_ZHIYA_TIME.getValue()));
        if(CollUtil.isNotEmpty(dappFundFlowEntities)){
            if(dappFundFlowEntities.size() >= zhiyaTime){
                throw new FebsException("今日暂停质押");
            }
            BigDecimal teamAchieveMemberSum = dappFundFlowEntities.stream().map(DappFundFlowEntity::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate();
            if(zhiyaAmount.compareTo(teamAchieveMemberSum.add(transferDto.getAmount())) < 0){
                throw new FebsException("今日最多质押"+zhiyaAmount.subtract(teamAchieveMemberSum).setScale(4,BigDecimal.ROUND_DOWN));
            }
        }
        String hasStart = redisUtils.getString(DataDicEnum.SYSTEM_START_FLAG.getValue());
        BigDecimal minAmount = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_BUY_MIN_AMOUNT.getValue()));
@@ -252,12 +271,12 @@
                    if (transferDto.getAmount().compareTo(minAmount) < 0) {
                        throw new FebsException("超过购买限制");
                    }
                    if (BigDecimal.ZERO.compareTo(gfaDays) >= 0) {
                        throw new FebsException("今日暂停质押");
                    }
                    if (transferDto.getAmount().compareTo(gfaDays) > 0) {
                        throw new FebsException("今日最多质押"+gfaDays);
                    }
//                    if (BigDecimal.ZERO.compareTo(gfaDays) >= 0) {
//                        throw new FebsException("今日暂停质押");
//                    }
//                    if (transferDto.getAmount().compareTo(gfaDays) > 0) {
//                        throw new FebsException("今日最多质押"+gfaDays);
//                    }
                } else {
                    throw new FebsException("暂停质押");
                }
@@ -311,7 +330,7 @@
            asyncCjService.insertTeamPerk(flow.getId(), dappAchieve.getId());
            //发送一个延时队列消息。24小时之后产生第一次的质押产出
            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
//            chainProducer.sendZhiYaDelayMsg(dappAchieve.getId(), 24 * 60 * 60 * 1000L);
        } else {
            dappFundFlowDao.deleteById(transferDto.getId());
        }