From 7c5eb91ce4cc1a02077aeb84941368373278fe1b Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 11 Aug 2022 14:32:02 +0800 Subject: [PATCH] fix:add active nft function --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 80 insertions(+), 30 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 99b89c8..be99e2a 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 @@ -10,17 +10,20 @@ 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.PriceDto; -import cc.mrbird.febs.dapp.dto.RecordInPageDto; -import cc.mrbird.febs.dapp.dto.TransferDto; -import cc.mrbird.febs.dapp.dto.WalletOperateDto; +import cc.mrbird.febs.dapp.dto.*; import cc.mrbird.febs.dapp.entity.*; import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappSystemService; 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 cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +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; @@ -30,9 +33,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author @@ -51,6 +52,7 @@ private final RedisUtils redisUtils; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final DappSystemService dappSystemService; + private final DappNftActivationDao dappNftActivationDao; @Override public WalletInfoVo walletInfo() { @@ -367,40 +369,88 @@ HashMap<String, BigDecimal> map = new HashMap<>(); map.put("x", x); map.put("y", y); + map.put("nft", AppContants.NFT_ACTIVE_PRICE); return map; } @Override public int boxSurprise() { - DappMemberEntity member = LoginUserUtil.getAppUser(); - DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); - if (walletCoin.getBoxCnt() < 1) { - throw new FebsException("盲盒数量不足"); + // 功能升级 + throw new FebsException(MessageSourceUtils.getString("box_surprise_002")); + +// DappMemberEntity member = LoginUserUtil.getAppUser(); +// +// DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId()); +// if (walletCoin.getBoxCnt() < 1) { +// throw new FebsException(MessageSourceUtils.getString("box_surprise_001")); +// } +// +// walletCoin.setBoxCnt(walletCoin.getBoxCnt() - 1); +// dappWalletCoinDao.updateById(walletCoin); +// +// BoxUtil.Box box = BoxUtil.openBox(); +// +// DappFundFlowEntity boxFundFlow = new DappFundFlowEntity(member.getId(), new BigDecimal(box.getIndex()), 6, 2, BigDecimal.ZERO); +// dappFundFlowDao.insert(boxFundFlow); +// +// new Thread(() -> { +// try { +// int count = box.getIndex(); +// while (count > 0) { +// ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).safeMintNFT(member.getAddress()); +// Thread.sleep(5000); +// count--; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// log.error("发放卡牌错误", e); +// } +// }).start(); +// +// return box.getIndex(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void activeNft(ActiveDto activeDto) { + DappMemberEntity member = LoginUserUtil.getAppUser(); + DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), BigDecimal.ONE, 8, 1, BigDecimal.ZERO, activeDto.getTxHash()); + fundFlow.setNewestPrice(AppContants.NFT_ACTIVE_PRICE); + + dappFundFlowDao.insert(fundFlow); + + DappNftActivation nftActive = dappNftActivationDao.selectById(activeDto.getId()); + if (nftActive.getStatus() != 1) { + throw new FebsException(MessageSourceUtils.getString("nft_active_001")); } - walletCoin.setBoxCnt(walletCoin.getBoxCnt() - 1); - dappWalletCoinDao.updateById(walletCoin); + nftActive.setStatus(2); + dappNftActivationDao.updateById(nftActive); + } - BoxUtil.Box box = BoxUtil.openBox(); + @Override + public List<ActiveNftListVo> findUnActiveNftList() { + DappMemberEntity member = LoginUserUtil.getAppUser(); + List<ActiveNftListVo> list = new ArrayList<>(); - DappFundFlowEntity boxFundFlow = new DappFundFlowEntity(member.getId(), new BigDecimal(box.getIndex()), 6, 2, BigDecimal.ZERO); - dappFundFlowDao.insert(boxFundFlow); + UpdateWrapper<DappNftActivation> query = new UpdateWrapper<>(); + query.eq("status", 3); + query.eq("member_id", member.getId()); + List<DappNftActivation> nftActivations = dappNftActivationDao.selectList(query); - new Thread(() -> { - try { - int count = box.getIndex(); - while (count > 0) { - ChainService.getInstance(ChainEnum.BSC_NFT_SDC.name()).safeMintNFT(member.getAddress()); - Thread.sleep(5000); - count--; - } - } catch (Exception e) { - e.printStackTrace(); - log.error("发放卡牌错误", e); - } - }).start(); + if (CollUtil.isEmpty(nftActivations)) { + return list; + } - return box.getIndex(); + Date now = new Date(); + nftActivations.forEach(nft -> { + ActiveNftListVo nftVo = new ActiveNftListVo(); + nftVo.setId(nft.getId()); + nftVo.setRemain(DateUtil.between(nft.getOpenTime(), now, DateUnit.SECOND, false)); + list.add(nftVo); + }); + + return list; } } -- Gitblit v1.9.1