KKSU
2024-06-12 8986d6d479bf56432ebb8e18bfa0f344d028eee6
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -13,8 +13,10 @@
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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;
@@ -47,6 +49,7 @@
    private final ChainProducer chainProducer;
    private final DappSystemDao dappSystemDao;
    private final DbMemberNodeMapper dbMemberNodeMapper;
    @Override
    public WalletInfoVo walletInfo() {
@@ -60,7 +63,8 @@
        DappMineDataEntity mineData = dappSystemDao.selectMineDataForOne();
        walletInfo.setDirectCnt(direct.size());
        walletInfo.setInviteId(member.getActiveStatus() == 1 ? member.getInviteId() : "-");
//        walletInfo.setInviteId(member.getActiveStatus() == 1 ? member.getInviteId() : "-");
        walletInfo.setInviteId(member.getInviteId());
        walletInfo.setBalance(walletCoin.getAvailableAmount());
        walletInfo.setHasBuy(memberInfo.getActiveStatus());
        walletInfo.setOutCnt(memberInfo.getOutCnt());
@@ -74,7 +78,17 @@
        );
        BigDecimal buyNodeAmount = new BigDecimal(StrUtil.isEmpty(buyNodeAmountDic.getValue()) ? "100" : buyNodeAmountDic.getValue());
        walletInfo.setBuyNodeAmount(buyNodeAmount);
        DataDictionaryCustom buyNodeCodeCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.BUY_NODE_CNT.getType(),
                DataDictionaryEnum.BUY_NODE_CNT.getCode()
        );
        BigDecimal buyNodeCodeCnt = new BigDecimal(StrUtil.isEmpty(buyNodeCodeCntDic.getValue()) ? "3" : buyNodeCodeCntDic.getValue());
        walletInfo.setBuyNodeCnt(buyNodeCodeCnt);
        walletInfo.setBuyNode(ObjectUtil.isEmpty(memberInfo.getBuyNode()) ? 0 : memberInfo.getBuyNode());
        BigDecimal bigDecimal = dappFundFlowDao.selectSumAmountByMemberIdAndType(member.getId(), 14);
        walletInfo.setBuyNodePerk(bigDecimal);
        return walletInfo;
    }
@@ -343,8 +357,13 @@
        }
        member = dappMemberDao.selectById(member.getId());
        int buyNode = ObjectUtil.isEmpty(member.getBuyNode()) ? 0 : 1;
        if (1 == buyNode) {
//        int buyNode = ObjectUtil.isEmpty(member.getBuyNode()) ? 0 : 1;
        int buyNode = member.getBuyNode();
        DataDictionaryCustom buyNodeCodeCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.BUY_NODE_CNT.getType(),
                DataDictionaryEnum.BUY_NODE_CNT.getCode()
        );
        if (buyNode >= Integer.parseInt(buyNodeCodeCntDic.getValue())) {
            throw new FebsException("Do not repeat purchase");
        }
@@ -364,11 +383,8 @@
                return null;
            }
            if ("success".equals(transferDto.getFlag())) {
                flow.setStatus(2);
                flow.setFromHash(transferDto.getTxHash());
                dappFundFlowDao.updateById(flow);
                member.setBuyNode(1);
                dappMemberDao.updateById(member);
            } else {
                if (flow.getStatus() == 1) {
@@ -378,4 +394,54 @@
        }
        return null;
    }
    @Override
    public Long buyStar(BuyStarDto buyStarDto) {
        DappMemberEntity member = LoginUserUtil.getAppUser();
        String upgrade = redisUtils.getString("APP_UPGRADE");
        if ("upgrade".equals(upgrade)) {
            throw new FebsException("功能升级中");
        }
        /**
         * 买入先验证当前星团是否已经买入
         */
        Integer nodeType = buyStarDto.getNodeType();
        QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>();
        nodeQueryWrapper.eq("member_id",member.getId());
        nodeQueryWrapper.eq("type", nodeType);
        nodeQueryWrapper.eq("work_state", DbMemberNode.STATE_ONE);
        List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(nodeQueryWrapper);
        if(CollUtil.isNotEmpty(dbMemberNodes)){
            throw new FebsException("已购买");
        }
        if (ObjectUtil.isEmpty(buyStarDto.getId())) {//第一次
            DappFundFlowEntity fundFlow = new DappFundFlowEntity(
                    member.getId(),
                    buyStarDto.getAmount().negate(),
                    18,
                    1,
                    BigDecimal.ZERO,
                    buyStarDto.getTxHash());
            dappFundFlowDao.insert(fundFlow);
            return fundFlow.getId();
        } else {//第二次
            DappFundFlowEntity flow = dappFundFlowDao.selectById(buyStarDto.getId());
            if(ObjectUtil.isEmpty(flow)){
                return null;
            }
            if ("success".equals(buyStarDto.getFlag())) {
                flow.setFromHash(buyStarDto.getTxHash());
                flow.setToHash(buyStarDto.getNodeType().toString());
                dappFundFlowDao.updateById(flow);
            } else {
                if (flow.getStatus() == 1) {
                    dappFundFlowDao.deleteById(buyStarDto.getId());
                }
            }
        }
        return null;
    }
}