Helius
2022-08-11 7c5eb91ce4cc1a02077aeb84941368373278fe1b
fix:add active nft function
8 files modified
5 files added
221 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/contants/AppContants.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 60 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java 20 ●●●●● patch | view | raw | blame | history
src/main/resources/i18n/message_en_US.properties 4 ●●● patch | view | raw | blame | history
src/main/resources/i18n/message_zh_CN.properties 24 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappNftActivationDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/spy.properties 14 ●●●● patch | view | raw | blame | history
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");
}
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;
    }
}
src/main/java/cc/mrbird/febs/dapp/dto/ActiveDto.java
New file
@@ -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;
}
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;
src/main/java/cc/mrbird/febs/dapp/entity/DappNftActivation.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappNftActivationDao.java
New file
@@ -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> {
}
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();
}
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;
    }
}
src/main/java/cc/mrbird/febs/dapp/vo/ActiveNftListVo.java
New file
@@ -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;
}
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.
system_regist_error=Please contact the recommender to recommend registration.
nft_active_001=Do Not Repeat Activation
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
system_regist_error=\u8BF7\u8054\u7CFB\u63A8\u8350\u4EBA\u63A8\u8350\u6CE8\u518C
nft_active_001=\u8BF7\u52FF\u91CD\u590D\u6FC0\u6D3B
src/main/resources/mapper/dapp/DappNftActivationDao.xml
New file
@@ -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>
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µÄ²»´òÓ¡
# \u5305\u542B QRTZ\u7684\u4E0D\u6253\u5370
exclude=QRTZ,select 1