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/DappWalletService.java | 11 +- src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java | 29 +++++++ src/main/resources/i18n/message_zh_CN.properties | 24 +++-- src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | 17 ++++ src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 60 +++++++++++++- src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 2 src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java | 24 ++++++ src/main/java/cc/mrbird/febs/common/contants/AppContants.java | 2 src/main/resources/i18n/message_en_US.properties | 4 src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java | 9 ++ src/main/resources/mapper/dapp/DappNftActivationDao.xml | 5 + src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java | 20 +++++ src/main/resources/spy.properties | 14 +- 13 files changed, 189 insertions(+), 32 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java index 3da48dc..4ba5b59 100644 --- a/src/main/java/cc/mrbird/febs/common/contants/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/contants/AppContants.java @@ -178,4 +178,6 @@ public static final String IDO_BOX_PRIZE = "IDO_BOX_PRIZE"; public static final String REDIS_KEY_SYMBOL_DAILY_PRICE = "SYMBOL_DAILY_PRICE"; + + public static final BigDecimal NFT_ACTIVE_PRICE = new BigDecimal("30"); } diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java index 1501361..23f34c7 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java +++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java @@ -20,8 +20,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; + /** - * @author + * @author * @date 2022-03-17 **/ @Slf4j @@ -97,4 +99,17 @@ redisUtils.hdel(AppContants.REDIS_KEY_SIGN, member.getAddress()); return new FebsResponse().success(); } + + @ApiOperation(value = "激活卡牌", notes = "激活卡牌") + @PostMapping(value = "/activeNft") + public FebsResponse activeNft(@RequestBody @Valid ActiveDto activeDto) { + dappWalletService.activeNft(activeDto); + return new FebsResponse().success(); + } + + @ApiOperation(value = "卡牌列表", notes = "卡牌列表") + @PostMapping(value = "/findNftList") + public FebsResponse findNftList() { + return null; + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java new file mode 100644 index 0000000..7b878af --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.dapp.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author wzy + * @date 2022-08-11 + **/ +@Data +@ApiModel(value = "ActiveDto", description = "激活卡牌参数接收类") +public class ActiveDto { + + @NotNull(message = "参数错误") + @ApiModelProperty(value = "id") + private Long id; + + @NotNull(message = "参数错误") + @ApiModelProperty(value = "交易哈希") + private String txHash; +} diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java index 627b4b9..05b44a6 100644 --- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java +++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java @@ -47,7 +47,7 @@ private BigDecimal amount; /** - * 类型 1-买入 2-卖出 3-采矿 4-返利 5-获取盲盒 6-开盲盒获取卡牌 7-推荐奖励 + * 类型 1-买入 2-卖出 3-采矿 4-返利 5-获取盲盒 6-开盲盒获取卡牌 7-推荐奖励 8-激活盲盒 */ private Integer type; diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java new file mode 100644 index 0000000..50a988b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.dapp.entity; + +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author wzy + * @date 2022-08-11 + **/ +@Data +@TableName("dapp_nft_activation") +public class DappNftActivation extends BaseEntity { + + private Long memberId; + + private Integer tokenId; + + private String hash; + + private Date openTime; + + private Integer status; + + private Long flowId; +} diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java new file mode 100644 index 0000000..c9e970c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java @@ -0,0 +1,9 @@ +package cc.mrbird.febs.dapp.mapper; + +import cc.mrbird.febs.dapp.entity.DappNftActivation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +public interface DappNftActivationDao extends BaseMapper<DappNftActivation> { +} diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java index e17101f..720e581 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java @@ -1,14 +1,12 @@ package cc.mrbird.febs.dapp.service; import cc.mrbird.febs.common.entity.QueryRequest; -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.DappAccountMoneyChangeEntity; import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; +import cc.mrbird.febs.dapp.vo.ActiveNftListVo; import cc.mrbird.febs.dapp.vo.WalletInfoVo; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -41,4 +39,9 @@ Map<String, BigDecimal> calPrice(PriceDto priceDto); int boxSurprise(); + + void activeNft(ActiveDto activeDto); + + List<ActiveNftListVo> findUnActiveNftList(); + } 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 0a44401..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,6 +369,7 @@ HashMap<String, BigDecimal> map = new HashMap<>(); map.put("x", x); map.put("y", y); + map.put("nft", AppContants.NFT_ACTIVE_PRICE); return map; } @@ -407,4 +410,47 @@ // // 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")); + } + + nftActive.setStatus(2); + dappNftActivationDao.updateById(nftActive); + } + + @Override + public List<ActiveNftListVo> findUnActiveNftList() { + DappMemberEntity member = LoginUserUtil.getAppUser(); + List<ActiveNftListVo> list = new ArrayList<>(); + + UpdateWrapper<DappNftActivation> query = new UpdateWrapper<>(); + query.eq("status", 3); + query.eq("member_id", member.getId()); + List<DappNftActivation> nftActivations = dappNftActivationDao.selectList(query); + + if (CollUtil.isEmpty(nftActivations)) { + return list; + } + + 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; + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java new file mode 100644 index 0000000..4657eb3 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.dapp.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wzy + * @date 2022-08-11 + **/ +@Data +@ApiModel(value = "ActiveNftListVo", description = "卡牌列表") +public class ActiveNftListVo { + + @ApiModelProperty(value = "待激活卡牌ID") + private Long id; + + @ApiModelProperty(value = "倒计时(剩余多少秒)") + private Long remain; +} diff --git a/src/main/resources/i18n/message_en_US.properties b/src/main/resources/i18n/message_en_US.properties index cd03dce..0167e28 100644 --- a/src/main/resources/i18n/message_en_US.properties +++ b/src/main/resources/i18n/message_en_US.properties @@ -12,4 +12,6 @@ box_surprise_002=Feature upgrade -system_regist_error=Please contact the recommender to recommend registration. \ No newline at end of file +system_regist_error=Please contact the recommender to recommend registration. + +nft_active_001=Do Not Repeat Activation \ No newline at end of file diff --git a/src/main/resources/i18n/message_zh_CN.properties b/src/main/resources/i18n/message_zh_CN.properties index 7cd5d1b..c30d30e 100644 --- a/src/main/resources/i18n/message_zh_CN.properties +++ b/src/main/resources/i18n/message_zh_CN.properties @@ -1,14 +1,16 @@ -system_error=\u7cfb\u7edf\u5f02\u5e38 +system_error=\u7CFB\u7EDF\u5F02\u5E38 -transfer_msg_001=\u7cfb\u7edf\u672a\u542f\u52a8 -transfer_msg_002=\u5269\u4f59\u0055\u0053\u0044\u0054\u4e0d\u8db3 -transfer_msg_003=\u8d85\u51fa\u0032\u0034\u5c0f\u65f6\u53ef\u7528\u6570\u91cf -transfer_msg_004=\u0054\u0046\u0043\u5e01\u4e0d\u8db3 -transfer_msg_005=\u4f4e\u4e8e\u6700\u5c0f\u8d2d\u4e70\u91cf -transfer_msg_006=\u0054\u0046\u0043\u5e01\u4e0d\u8db3 -transfer_msg_007=\u6bcf\u5929\u6700\u591a\u8d2d\u4e70\u0031\u0030\u0030\u0030\u0055\u0053\u0044\u0054 +transfer_msg_001=\u7CFB\u7EDF\u672A\u542F\u52A8 +transfer_msg_002=\u5269\u4F59USDT\u4E0D\u8DB3 +transfer_msg_003=\u8D85\u51FA24\u5C0F\u65F6\u53EF\u7528\u6570\u91CF +transfer_msg_004=TFC\u5E01\u4E0D\u8DB3 +transfer_msg_005=\u4F4E\u4E8E\u6700\u5C0F\u8D2D\u4E70\u91CF +transfer_msg_006=TFC\u5E01\u4E0D\u8DB3 +transfer_msg_007=\u6BCF\u5929\u6700\u591A\u8D2D\u4E701000USDT -box_surprise_001=\u76f2\u76d2\u6570\u91cf\u4e0d\u8db3 -box_surprise_002=\u529f\u80fd\u5347\u7ea7\u4e2d +box_surprise_001=\u76F2\u76D2\u6570\u91CF\u4E0D\u8DB3 +box_surprise_002=\u529F\u80FD\u5347\u7EA7\u4E2D -system_regist_error=\u8bf7\u8054\u7cfb\u63a8\u8350\u4eba\u63a8\u8350\u6ce8\u518c \ No newline at end of file +system_regist_error=\u8BF7\u8054\u7CFB\u63A8\u8350\u4EBA\u63A8\u8350\u6CE8\u518C + +nft_active_001=\u8BF7\u52FF\u91CD\u590D\u6FC0\u6D3B \ No newline at end of file diff --git a/src/main/resources/mapper/dapp/DappNftActivationDao.xml b/src/main/resources/mapper/dapp/DappNftActivationDao.xml new file mode 100644 index 0000000..d35d775 --- /dev/null +++ b/src/main/resources/mapper/dapp/DappNftActivationDao.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.dapp.mapper.DappNftActivationDao"> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/spy.properties b/src/main/resources/spy.properties index 68fbf3f..fecc552 100644 --- a/src/main/resources/spy.properties +++ b/src/main/resources/spy.properties @@ -1,13 +1,13 @@ -# p6spy���ã��ĵ� https://p6spy.readthedocs.io/en/latest/configandusage.html -# ʹ����־ϵͳ��¼ sql +# p6spy\u914D\u7F6E\uFF0C\u6587\u6863 https://p6spy.readthedocs.io/en/latest/configandusage.html +# \u4F7F\u7528\u65E5\u5FD7\u7CFB\u7EDF\u8BB0\u5F55 sql appender=com.p6spy.engine.spy.appender.Slf4JLogger -# �Զ�����־��ӡ +# \u81EA\u5B9A\u4E49\u65E5\u5FD7\u6253\u5370 logMessageFormat=cc.mrbird.febs.common.configure.P6spySqlFormatConfigure -# �Ƿ����� SQL��¼ +# \u662F\u5426\u5F00\u542F\u6162 SQL\u8BB0\u5F55 outagedetection=true -# �� SQL��¼�� 2 �� +# \u6162 SQL\u8BB0\u5F55\u6807\u51C6 2 \u79D2 outagedetectioninterval=2 -# �������� +# \u5F00\u542F\u8FC7\u6EE4 filter=true -# ���� QRTZ�IJ���ӡ +# \u5305\u542B QRTZ\u7684\u4E0D\u6253\u5370 exclude=QRTZ,select 1 \ No newline at end of file -- Gitblit v1.9.1