From 0eb60238a905b0b6b60b1b9067177a0b6ca0ec92 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 06 Jun 2024 10:12:12 +0800
Subject: [PATCH] 购买节点

---
 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java          |    4 -
 src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java       |    2 
 src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java |    8 ++
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   72 +++++++++++++++++++-----
 src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java                    |    6 ++
 src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java                     |   25 ++++++++
 src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java          |    3 
 src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java            |    5 -
 8 files changed, 101 insertions(+), 24 deletions(-)

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 12bfe0b..dd80763 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/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) {
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java
new file mode 100644
index 0000000..8007025
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/BuyNodeDto.java
@@ -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;
+
+}
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 48b26b4..39645b4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
+++ b/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;
 
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
index bfb0b1b..a50d043 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
+++ b/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;
 
     /**
      * 滑点分享链
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
index fcd2b5f..a6e2544 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
+++ b/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会员手续费
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 beb9060..663ea28 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/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);
 }
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..471db20 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,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;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
index dabd8f6..4873a7a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
+++ b/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;
 }

--
Gitblit v1.9.1