From 8986d6d479bf56432ebb8e18bfa0f344d028eee6 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 12 Jun 2024 18:06:11 +0800 Subject: [PATCH] 星级买入 --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 136 ++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 122 insertions(+), 14 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java index 4804921..8a19784 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java @@ -1,32 +1,22 @@ package cc.mrbird.febs.dapp.service.impl; -import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; -import cc.mrbird.febs.common.contants.AppContants; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.exception.FebsException; -import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.dapp.chain.ChainEnum; import cc.mrbird.febs.dapp.chain.ChainService; -import cc.mrbird.febs.dapp.chain.ContractChainService; import cc.mrbird.febs.dapp.dto.*; import cc.mrbird.febs.dapp.entity.*; import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappWalletService; -import cc.mrbird.febs.dapp.utils.BoxUtil; -import cc.mrbird.febs.dapp.vo.ActiveNftListVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import cc.mrbird.febs.rabbit.producer.ChainProducer; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateField; -import cn.hutool.core.date.DateUnit; -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.Wrapper; +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.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; @@ -36,7 +26,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.*; +import java.util.List; /** * @author @@ -59,6 +49,7 @@ private final ChainProducer chainProducer; private final DappSystemDao dappSystemDao; + private final DbMemberNodeMapper dbMemberNodeMapper; @Override public WalletInfoVo walletInfo() { @@ -72,13 +63,32 @@ 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()); walletInfo.setProfit(dappFundFlowDao.selectProfitAmountByMemberId(member.getId())); walletInfo.setTfcBalance(walletMine.getAvailableAmount()); walletInfo.setSafePool(mineData.getSafePool()); + + DataDictionaryCustom buyNodeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.BUY_NODE_AMOUNT.getType(), + DataDictionaryEnum.BUY_NODE_AMOUNT.getCode() + ); + 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; } @@ -336,4 +346,102 @@ public DappWalletCoinEntity findByMemberId(Long memberId) { return dappWalletCoinDao.selectByMemberId(memberId); } + + @Override + public Long buyNode(BuyNodeDto transferDto) { + DappMemberEntity member = LoginUserUtil.getAppUser(); + + String upgrade = redisUtils.getString("APP_UPGRADE"); + if ("upgrade".equals(upgrade)) { + throw new FebsException("功能升级中"); + } + + member = dappMemberDao.selectById(member.getId()); +// 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"); + } + + if (ObjectUtil.isEmpty(transferDto.getId())) { + DappFundFlowEntity fundFlow = new DappFundFlowEntity( + member.getId(), + transferDto.getAmount().negate(), + 13, + 1, + BigDecimal.ZERO, + transferDto.getTxHash()); + dappFundFlowDao.insert(fundFlow); + return fundFlow.getId(); + } else { + DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId()); + if(ObjectUtil.isEmpty(flow)){ + return null; + } + if ("success".equals(transferDto.getFlag())) { + flow.setFromHash(transferDto.getTxHash()); + dappFundFlowDao.updateById(flow); + + } else { + if (flow.getStatus() == 1) { + dappFundFlowDao.deleteById(transferDto.getId()); + } + } + } + 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; + } } -- Gitblit v1.9.1