KKSU
2024-06-06 0eb60238a905b0b6b60b1b9067177a0b6ca0ec92
购买节点
7 files modified
1 files added
125 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java 72 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -1,7 +1,6 @@
package cc.mrbird.febs.dapp.controller;
import cc.mrbird.febs.common.annotation.EncryptEnable;
import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.utils.LoginUserUtil;
@@ -11,7 +10,6 @@
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
import cc.mrbird.febs.dapp.vo.TeamListVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import io.swagger.annotations.Api;
@@ -52,6 +50,12 @@
        return new FebsResponse().success().data(walletInfoVo);
    }
    @ApiOperation(value = "购买节点", notes = "购买节点")
    @PostMapping(value = "/buyNode")
    public FebsResponse buyNode(@RequestBody BuyNodeDto buyNodeDto) {
        return new FebsResponse().success().data(dappWalletService.buyNode(buyNodeDto));
    }
    @ApiOperation(value = "转账", notes = "转账")
    @PostMapping(value = "/transfer")
    public FebsResponse transfer(@RequestBody TransferDto transferDto) {
src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java
New file
@@ -0,0 +1,25 @@
package cc.mrbird.febs.dapp.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "BuyNodeDto", description = "连接参数接收类")
public class BuyNodeDto {
    @ApiModelProperty(value = "id", example = "1")
    private Long id;
    @ApiModelProperty(value = "金额", example = "1")
    private BigDecimal amount;
    @ApiModelProperty(value = "success/fail", example = "success")
    private String flag;
    @ApiModelProperty(value = "交易hash", example = "123")
    private String txHash;
}
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -6,7 +6,6 @@
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @author 
@@ -48,6 +47,8 @@
    /**
     * 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利
     *
     *  13-节点买入
     */
    private Integer type;
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
@@ -1,12 +1,9 @@
package cc.mrbird.febs.dapp.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import cc.mrbird.febs.dapp.chain.ChainService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.web3j.abi.datatypes.Int;
import java.math.BigDecimal;
@@ -68,6 +65,8 @@
     * 激活状态 1-已激活 2-未激活
     */
    private Integer activeStatus;
    //是否购买节点 0 - 否  1 - 是
    private Integer buyNode;
    /**
     * 滑点分享链
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -4,6 +4,8 @@
@Getter
public enum DataDictionaryEnum {
    // 购买节点需要的金额
    BUY_NODE_AMOUNT("BUY_NODE_AMOUNT","BUY_NODE_AMOUNT"),
    // 每日返利的产矿百分比
    REBATE_PERCENT("SYSTEM_SETTING","REBATE_PERCENT"),
    // 分给推荐三人的终身VIP会员手续费
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -6,14 +6,11 @@
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;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public interface DappWalletService {
@@ -45,4 +42,5 @@
    DappWalletCoinEntity findByMemberId(Long memberId);
    Long buyNode(BuyNodeDto buyNodeDto);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -1,32 +1,20 @@
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -36,7 +24,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.List;
/**
 * @author
@@ -79,6 +67,14 @@
        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);
        walletInfo.setBuyNode(ObjectUtil.isEmpty(memberInfo.getBuyNode()) ? 0 : memberInfo.getBuyNode());
        return walletInfo;
    }
@@ -336,4 +332,50 @@
    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;
        if (1 == buyNode) {
            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.setStatus(2);
                flow.setFromHash(transferDto.getTxHash());
                dappFundFlowDao.updateById(flow);
                member.setBuyNode(1);
                dappMemberDao.updateById(member);
            } else {
                if (flow.getStatus() == 1) {
                    dappFundFlowDao.deleteById(transferDto.getId());
                }
            }
        }
        return null;
    }
}
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
@@ -37,4 +37,10 @@
    @ApiModelProperty(value = "保险池")
    private BigDecimal safePool;
    @ApiModelProperty(value = "购买节点的金额")
    private BigDecimal buyNodeAmount;
    @ApiModelProperty(value = "是否是节点 1-是 0-否")
    private Integer buyNode;
}