From 2cac4da22c22cea0525981ccb553822c7124f410 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 18 May 2023 12:51:05 +0800
Subject: [PATCH] twoCoin项目修改
---
src/main/resources/mapper/dapp/DappNodeOrderMapper.xml | 22 ++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 76 +++++-
src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java | 15 +
src/main/java/cc/mrbird/febs/FebsShiroApplication.java | 2
src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java | 28 +-
src/main/java/cc/mrbird/febs/dapp/vo/DappMemberNodeVo.java | 28 ++
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 9
src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java | 19 +
src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java | 17
src/main/java/cc/mrbird/febs/dapp/vo/DappNodeOrderVo.java | 38 +++
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java | 7
src/test/java/cc/mrbird/febs/MemberTest.java | 11
src/main/java/cc/mrbird/febs/dapp/mapper/DappNodeOrderMapper.java | 15 +
src/main/resources/application-dev.yml | 14
src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java | 3
src/main/java/cc/mrbird/febs/dapp/contract/ContractInit.java | 7
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberNodeMapper.java | 21 +
src/main/resources/mapper/dapp/DappFundFlowDao.xml | 4
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 178 +++++++++-------
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberNodeEntity.java | 39 +++
src/main/resources/mapper/dapp/DappMemberNodeMapper.xml | 30 ++
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 7
src/main/java/cc/mrbird/febs/dapp/entity/DappNodeOrderEntity.java | 35 +++
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | 2
src/main/java/cc/mrbird/febs/dapp/enumerate/NodeCodeEnum.java | 25 ++
src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java | 5
27 files changed, 507 insertions(+), 151 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/FebsShiroApplication.java b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
index 2363a2d..f331bd3 100644
--- a/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
+++ b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java
@@ -50,7 +50,7 @@
Field field = systemConstants.getClass().getDeclaredField(key);
field.set(systemConstants, value);
AppContants.FEE_ADDRESS_KEY.put("feeAddressKey",systemConstants.getFeeAddressKey());
- dataDictionaryCustom.setValue("isReady");
+// dataDictionaryCustom.setValue("isReady");
dataDictionaryCustomMapper.updateById(dataDictionaryCustom);
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index 09ff51f..753ce4c 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -27,6 +27,7 @@
registration.addPathPatterns("/dapi/**");
registration.excludePathPatterns("/dapi/common/**");
registration.excludePathPatterns("/dapi/member/runListInfo");
+ registration.excludePathPatterns("/dapi/member/nodeInfo");
}
/**
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
index 8a43cf4..8105bdc 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainEnum.java
@@ -14,16 +14,17 @@
* 0x55d398326f99059fF775485246999027B3197955
* 测试链 0x337610d27c682E347C9cD60BD4b3b107C9d34dDd
*/
-// BSC_USDT("BSC", "0xa9B85Fc19f3E330Cd703050fACA2110c7A33fd06",
-// "0xb97d6046268b76a21c11c4b33357dc8e203542d7c2a7fc40fccf364099b06477",
-// "https://bsc-dataseed1.ninicoin.io",
-// "0x55d398326f99059fF775485246999027B3197955",
-// ""),
- BSC_USDT("BSC", "0xBa6206B3Be305278Ea65bA54C4E6188B252AEc4a",
- "0x1bc264d17bd2b1f3c0480764272284b8e6c8b0a39a590c26940f84f7b090cc74",
+ BSC_USDT("BSC", "0xA60AaC0da34C76F3f60207ee09e9F75043319ab4",
+ "221be67f85375a5af6dd0f4b77fbe877ad2e57e05db201de1b1383fb76494d18",
"https://bsc-dataseed1.ninicoin.io",
- "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
+// "0x55d398326f99059fF775485246999027B3197955",
+ "0x532B0F9554D92b8BF1bdE85DD4E8b86E4228DE27",
""),
+// BSC_USDT("BSC", "0xBa6206B3Be305278Ea65bA54C4E6188B252AEc4a",
+// "0x1bc264d17bd2b1f3c0480764272284b8e6c8b0a39a590c26940f84f7b090cc74",
+// "https://bsc-dataseed1.ninicoin.io",
+// "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
+// ""),
BNB("BSC", "0xBa6206B3Be305278Ea65bA54C4E6188B252AEc4a",
"0x1bc264d17bd2b1f3c0480764272284b8e6c8b0a39a590c26940f84f7b090cc74",
"https://bsc-dataseed1.ninicoin.io",
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
index de08042..16cf5f0 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -215,7 +215,8 @@
}
public String tokenTransferFrom(String privateKey, String fromAddress, String toAddress, String amount) throws ExecutionException, InterruptedException {
- String gas = getGas();
+// String gas = getGas();
+ String gas = "5";
BigDecimal amountPow = new BigDecimal(amount).multiply(BigDecimal.TEN.pow(decimals()));
amount = amountPow.toPlainString();
@@ -256,8 +257,8 @@
}
public String tokenTransfer(String privateKey, String fromAddress, String toAddress, String amount) throws ExecutionException, InterruptedException {
- String gas = getGas();
-// String gas = "5";
+// String gas = getGas();
+ String gas = "5";
BigDecimal amountPow = new BigDecimal(amount).multiply(BigDecimal.TEN.pow(decimals()));
amount = amountPow.toPlainString();
diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/ContractInit.java b/src/main/java/cc/mrbird/febs/dapp/contract/ContractInit.java
index 5c71ae5..ab27e50 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/ContractInit.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/ContractInit.java
@@ -28,18 +28,13 @@
@PostConstruct
public void init(){
// 设置起始区块编号 TODO
- BigInteger start = new BigInteger("23886625");
+ BigInteger start = new BigInteger("28282373");
// 需要打开 获取最新区块编号
Object bnb_block_number = redisService.get("BNB_BLOCK_NUMBER");
if(bnb_block_number !=null){
start = BigInteger.valueOf(Long.valueOf(bnb_block_number.toString()));
}
-// DataDictionaryCustom feeAddressKey = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.FEE_ADDRESS_KEY.getType(), DataDictionaryEnum.FEE_ADDRESS_KEY.getCode());
-// AppContants.FEE_ADDRESS_KEY.put("feeAddressKey",feeAddressKey.getValue());
-// feeAddressKey.setValue("已初始化");
-// dataDictionaryCustomMapper.updateById(feeAddressKey);
System.out.println("启动区块事件监听,监听起始:"+start);
-// System.out.println("启动区块事件监听,监听起始:"+AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() );
contractMain.listenBetting(start);
}
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java b/src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java
index 8cbaae8..13b97a4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java
+++ b/src/main/java/cc/mrbird/febs/dapp/contract/ContractMain.java
@@ -58,11 +58,8 @@
return web3;
}
// gas费用单价
-// public static final BigInteger GAS_PRICE = BigInteger.valueOf(32000000000L);
public static final BigInteger GAS_PRICE = Convert.toWei(getGas(), Convert.Unit.GWEI).toBigInteger();
-// public static final BigInteger GAS_PRICE = Convert.toWei("5", Convert.Unit.GWEI).toBigInteger();
// gas费用最大值
-// public static final BigInteger GAS_LIMIT = BigInteger.valueOf(4300000L);
public static final BigInteger GAS_LIMIT = Convert.toWei("100000", Convert.Unit.WEI).toBigInteger();
private static StaticGasProvider getStaticGasProvider(){
return new StaticGasProvider(GAS_PRICE,GAS_LIMIT);
@@ -70,13 +67,13 @@
private static String getGas() {
String gas = "5";
- try{
- String resp = HttpUtil.get("https://gbsc.blockscan.com/gasapi.ashx?apikey=key&method=gasoracle");
- JSONObject data = JSONObject.parseObject(resp);
- gas = data.getString("FastGasPrice");
- }catch (Exception exception) {
- exception.printStackTrace();
- }
+// try{
+// String resp = HttpUtil.get("https://gbsc.blockscan.com/gasapi.ashx?apikey=key&method=gasoracle");
+// JSONObject data = JSONObject.parseObject(resp);
+// gas = data.getString("FastGasPrice");
+// }catch (Exception exception) {
+// exception.printStackTrace();
+// }
return StrUtil.isBlank(gas) ? "5" : gas;
}
@@ -92,12 +89,12 @@
// 合约地址 TODO
// private static String contractAddr = "0xb5a1aC0fA05BFb8ad16B231e84b0bAC1d46eAfD0";//测试
- private static String contractAddr = "0xB4fAAfD3884316AaEE342fda57E84996c70F1A75";
+ private static String contractAddr = "0x532B0F9554D92b8BF1bdE85DD4E8b86E4228DE27";
// 操作账号 手续费钱包地址的私钥(合约里会把手续费转到你这个私钥地址上) 用于操作合约内方法 TODO
-// private static String privateKey = "0x5672e3b09eae475fc2ad725757874b453b9c7ed76bb3df76340a96c819de0845";//测试
+ private static String privateKey = "221be67f85375a5af6dd0f4b77fbe877ad2e57e05db201de1b1383fb76494d18";//测试
- private static String privateKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() ;
+// private static String privateKey = AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString() ;
private EthFilter getFilter(BigInteger startBlock) {
if (startBlock != null) {
@@ -178,8 +175,9 @@
public static void main(String[] args) {
ContractMain contractMain = new ContractMain();
- String address = "0xd9076245473060dda1a65f5f3d89a4d0598995e6";
- BigInteger bigInteger = new BigInteger(Convert.toWei("0.00105", Convert.Unit.ETHER).setScale(0).toString());
+ String address = "0xA60AaC0da34C76F3f60207ee09e9F75043319ab4";
+// String address = "0x785D5Aa2951Ac4C6f28Dc593AF0b0536Dd3E82Fe";
+ BigInteger bigInteger = new BigInteger(Convert.toWei("0.001", Convert.Unit.ETHER).setScale(0).toString());
String hash = contractMain.trans(bigInteger,address);
System.out.println(hash);
}
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 5c21c91..c56bdbe 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiDappMemberController.java
@@ -8,13 +8,11 @@
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.entity.DappNodeOrderEntity;
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.ApiRunListInfoVo;
-import cc.mrbird.febs.dapp.vo.TeamListVo;
-import cc.mrbird.febs.dapp.vo.WalletInfoVo;
+import cc.mrbird.febs.dapp.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -53,6 +51,15 @@
return new FebsResponse().success().data(walletInfoVo);
}
+ @ApiOperation(value = "获取节点信息", notes = "获取节点信息")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = DappNodeOrderVo.class)
+ })
+ @PostMapping(value = "/nodeInfo")
+ public FebsResponse nodeInfo() {
+ return dappMemberService.getNodeInfo();
+ }
+
@ApiOperation(value = "转账", notes = "转账")
@PostMapping(value = "/transfer")
public FebsResponse transfer(@RequestBody TransferDto transferDto) {
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
index f1c18b1..c14c60b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/TransferDto.java
@@ -40,6 +40,9 @@
@ApiModelProperty(value = "1-余额 2-钱包")
private Integer buyType;
+ @ApiModelProperty(value = "节点编码")
+ private String nodeCode;
+
@ApiModelProperty(hidden = true)
private Long memberId;
}
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 65a298d..63304b7 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappFundFlowEntity.java
@@ -51,6 +51,16 @@
this.fromHash = fromHash;
}
+ public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee, String fromHash,String toHash) {
+ this.memberId = memberId;
+ this.amount = amount;
+ this.type = type;
+ this.status = status;
+ this.fee = fee;
+ this.fromHash = fromHash;
+ this.toHash = toHash;
+ }
+
public DappFundFlowEntity(Long memberId, BigDecimal amount, Integer type, Integer status, BigDecimal fee, String fromHash,Long systemProfitId) {
this.memberId = memberId;
this.amount = amount;
@@ -68,6 +78,7 @@
/**
* 类型 1-买入 2-矩阵收益 3-直推收益 4-保险池 5-提现 6-手续费充值 7-手续费扣除 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利
* 类型 1-加入动能 2-技术方收益 3-直推收益 4-层级收益 5-剩余层级收益给系统 6-复投动能 7-动能收益 8-结算 9-冻结 10-冻结释放 11-产矿 12-手续费返利
+ * 类型 1-认购节点 2-直推收益 3-技术方收款
*/
private Integer type;
@@ -85,7 +96,9 @@
private String address;
private BigDecimal fee;
-
+ /**
+ * 用来存放用户购买节点的节点编码
+ */
private String toHash;
private String fromHash;
@@ -93,6 +106,8 @@
private BigDecimal newestPrice;
private BigDecimal targetAmount;
-
+ /**
+ * 会员节点表ID-对应认购记录
+ */
private Long systemProfitId;
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberNodeEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberNodeEntity.java
new file mode 100644
index 0000000..e68f414
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberNodeEntity.java
@@ -0,0 +1,39 @@
+package cc.mrbird.febs.dapp.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 会员节点表
+ */
+@Data
+@TableName("dapp_member_node")
+public class DappMemberNodeEntity extends BaseEntity {
+ /**
+ * 会员id
+ */
+ private Long memberId;
+ /**
+ * 节点ID
+ */
+ private Long nodeId;
+ /**
+ * 节点编码
+ */
+ private String nodeCode;
+ /**
+ * 节点价格
+ */
+ private BigDecimal nodePrice;
+
+
+ public DappMemberNodeEntity(Long memberId, Long nodeId, String nodeCode, BigDecimal nodePrice) {
+ this.memberId = memberId;
+ this.nodeId = nodeId;
+ this.nodeCode = nodeCode;
+ this.nodePrice = nodePrice;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappNodeOrderEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappNodeOrderEntity.java
index 561e2a8..451ee8d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappNodeOrderEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappNodeOrderEntity.java
@@ -1,4 +1,37 @@
package cc.mrbird.febs.dapp.entity;
-public class DappNodeOrderEntity {
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 节点表
+ */
+@Data
+@TableName("dapp_node_order")
+public class DappNodeOrderEntity extends BaseEntity {
+ /**
+ * 节点编码
+ */
+ private String nodeCode;
+ /**
+ * 节点名称
+ */
+ private String nodeName;
+ /**
+ * 总数
+ */
+ private Integer totalCnt;
+ /**
+ * 剩余数量
+ */
+ private Integer surplusCnt;
+ /**
+ * 价格
+ */
+ private BigDecimal price;
+
+
}
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 a9822d4..c6f3a9f 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 {
+ // 前期节点归集地址
+ TOTAL_ADDRESS("SYSTEM_SETTING","TOTAL_ADDRESS"),
// 分发地址的私钥
FEE_ADDRESS_KEY("SYSTEM_SETTING","FEE_ADDRESS_KEY"),
// 复投盈利收益
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/NodeCodeEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/NodeCodeEnum.java
new file mode 100644
index 0000000..551be89
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/NodeCodeEnum.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.dapp.enumerate;
+
+import lombok.Getter;
+
+/**
+ * 节点编码枚举
+ */
+@Getter
+public enum NodeCodeEnum {
+ NODE_1("NODE_CODE", "node_1"),
+ NODE_2("NODE_CODE", "node_2"),
+ NODE_3("NODE_CODE", "node_3"),
+ NODE_4("NODE_CODE", "node_4"),
+ NODE_5("NODE_CODE", "node_5"),
+ SUPER_NODE("NODE_CODE", "super_node");
+
+ private String type;
+
+ private String code;
+
+ NodeCodeEnum(String type, String code) {
+ this.type = type;
+ this.code = code;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberNodeMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberNodeMapper.java
new file mode 100644
index 0000000..dd881c8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberNodeMapper.java
@@ -0,0 +1,21 @@
+package cc.mrbird.febs.dapp.mapper;
+
+import cc.mrbird.febs.dapp.entity.DappMemberNodeEntity;
+import cc.mrbird.febs.dapp.vo.DappMemberNodeVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DappMemberNodeMapper extends BaseMapper<DappMemberNodeEntity> {
+ /**
+ * 根据会员ID获取会员的节点买卖记录
+ * @param id
+ * @return
+ */
+ List<DappMemberNodeVo> selectListByMemberId(@Param("memberId")Long id);
+
+ DappMemberNodeEntity selectNodeByMemberId(@Param("memberId")Long id);
+
+ DappMemberNodeEntity selectNodeByMemberIdAndNodeCode(@Param("memberId")Long id, @Param("nodeCode")String code);
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappNodeOrderMapper.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappNodeOrderMapper.java
new file mode 100644
index 0000000..205732a
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappNodeOrderMapper.java
@@ -0,0 +1,15 @@
+package cc.mrbird.febs.dapp.mapper;
+
+import cc.mrbird.febs.dapp.entity.DappNodeOrderEntity;
+import cc.mrbird.febs.dapp.vo.DappNodeOrderVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface DappNodeOrderMapper extends BaseMapper<DappNodeOrderEntity> {
+
+ List<DappNodeOrderVo> selectNodeOrderList();
+
+ DappNodeOrderEntity selectNodeOrderByNodeCode(@Param("nodeCode")String nodeCode);
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index 4df012c..7a9e10f 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.dapp.service;
+import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.dapp.dto.ApproveDto;
import cc.mrbird.febs.dapp.dto.ConnectDto;
@@ -54,4 +55,10 @@
IPage<AdminSystemProfitFlowListVo> getSystemProfitFlowList(DappSystemProfit dappSystemProfit, QueryRequest request);
IPage<AdminTeamInfoVo> getTeamInfo(DappMemberEntity dappMemberEntity, QueryRequest request);
+
+ /**
+ * 获取节点信息
+ * @return
+ */
+ FebsResponse getNodeInfo();
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 6d3256e..f05d634 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -2,6 +2,7 @@
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.entity.QueryRequest;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.FebsUtil;
@@ -59,6 +60,8 @@
private final DappSystemProfitDao dappSystemProfitDao;
private final ChainProducer chainProducer;
private final DappFundFlowDao dappFundFlowDao;
+
+ private final DappNodeOrderMapper dappNodeOrderMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -474,6 +477,12 @@
return adminTeamInfoVoIPage;
}
+ @Override
+ public FebsResponse getNodeInfo() {
+ List<DappNodeOrderVo> dappNodeOrderVos = dappNodeOrderMapper.selectNodeOrderList();
+ return new FebsResponse().success().data(dappNodeOrderVos);
+ }
+
public TeamListVo buildTeamMatrix(Long memberId) {
DappMemberEntity member = dappMemberDao.selectById(memberId);
TeamListVo teamListVo = new TeamListVo();
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
index c472309..297436d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -58,6 +58,8 @@
private final ChainProducer chainProducer;
private final ContractMain contractMain;
+ private final DappMemberNodeMapper dappMemberNodeMapper;
+
@Override
public SystemDto system() {
@@ -469,21 +471,57 @@
return;
}
Integer count = dappFundFlowDao.updateStatusById(DappFundFlowEntity.WITHDRAW_STATUS_AGREE,dappFundFlowEntity.getId());
-// if(count > 0){
-// DappFundFlowEntity dappFundFlow = dappFundFlowDao.selectById(id);
-// //金额
-// BigDecimal amount = dappFundFlow.getAmount();
-// //目标地址
-// String address = dappFundFlow.getAddress();
-// // String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, amount);
-// String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
-// if(StrUtil.isEmpty(hash)){
-// return;
-// }
-// log.info("{},{}",id,hash);
-// dappFundFlow.setFromHash(hash);
-// dappFundFlowDao.updateById(dappFundFlow);
-// }
+ if(count > 0){
+ /**
+ * 转账直推收益
+ */
+ DappFundFlowEntity dappFundFlow = dappFundFlowDao.selectById(id);
+ //金额
+ BigDecimal amount = dappFundFlow.getAmount();
+ //目标地址
+ String address = dappMemberEntity.getAddress();
+ /**
+ * 发起USDT转账
+ */
+ BigInteger bigInteger = new BigInteger(Convert.toWei(amount.toString(), Convert.Unit.ETHER).setScale(0).toString());
+ log.info("{}",bigInteger);
+ String hash = contractMain.trans(bigInteger,address);
+
+// String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(address, amount);
+//// String hash = ChainService.getInstance(ChainEnum.BNB.name()).transferBaseToken(address, amount);
+ if(StrUtil.isEmpty(hash)){
+ return;
+ }
+ log.info("{},{}",id,hash);
+ dappFundFlow.setFromHash(hash);
+ dappFundFlowDao.updateById(dappFundFlow);
+ /**
+ * 把剩余的归集到一个地址中
+ */
+ Long systemProfitId = dappFundFlow.getSystemProfitId();
+ DappMemberNodeEntity dappMemberNodeEntity = dappMemberNodeMapper.selectById(systemProfitId);
+ BigDecimal nodePrice = dappMemberNodeEntity.getNodePrice();
+ nodePrice = nodePrice.subtract(amount);
+
+ DataDictionaryCustom totalAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.TOTAL_ADDRESS.getType(),
+ DataDictionaryEnum.TOTAL_ADDRESS.getCode()
+ );
+
+ BigInteger nodePriceBigInteger = new BigInteger(Convert.toWei(nodePrice.toString(), Convert.Unit.ETHER).setScale(0).toString());
+ log.info("{}",nodePriceBigInteger);
+ String hashBigInteger = contractMain.trans(nodePriceBigInteger,totalAddressDic.getValue());
+// ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer(totalAddressDic.getValue(), nodePrice);
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(
+ 1L,
+ new BigDecimal(totalAddressDic.getValue()),
+ 3,
+ 2,
+ BigDecimal.ZERO,
+ hashBigInteger,
+ dappMemberNodeEntity.getNodeCode());
+ dappFundFlowDao.insert(fundFlow);
+ }
}
@Override
@@ -556,9 +594,11 @@
if(DappFundFlowEntity.WITHDRAW_STATUS_ING != dappFundFlow.getIsReturn()){
return;
}
- //用户已经加入动能队列
- DappSystemProfit dappSystemProfit = dappSystemProfitDao.selectById(dappFundFlow.getSystemProfitId()==null ? 0L : dappFundFlow.getSystemProfitId());
- if(ObjectUtil.isEmpty(dappSystemProfit)){
+ /**
+ * 用户是否已经生成节点购买记录
+ */
+ DappMemberNodeEntity dappMemberNodeEntity = dappMemberNodeMapper.selectById(dappFundFlow.getSystemProfitId() == null ? 0L : dappFundFlow.getSystemProfitId());
+ if(ObjectUtil.isEmpty(dappMemberNodeEntity)){
return;
}
//金额
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 33d8914..d1c6e22 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
@@ -13,10 +13,12 @@
import cc.mrbird.febs.dapp.dto.*;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
+import cc.mrbird.febs.dapp.enumerate.NodeCodeEnum;
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.DappMemberNodeVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cn.hutool.core.collection.CollUtil;
@@ -63,6 +65,9 @@
private final DappSystemDao dappSystemDao;
private final DappSystemProfitDao dappSystemProfitDao;
+ private final DappNodeOrderMapper dappNodeOrderMapper;
+ private final DappMemberNodeMapper dappMemberNodeMapper;
+
@Override
public WalletInfoVo walletInfo() {
DappMemberEntity member = LoginUserUtil.getAppUser();
@@ -92,49 +97,15 @@
walletInfo.setLevelProfit(levelProfit);
BigDecimal luckyProfit = dappFundFlowDao.selectSumAmountByMemberIdAndTypeAndStatus(memberInfo.getId(),7,2);
walletInfo.setLuckyProfit(luckyProfit);
-// //获取当前是第几轮队列
-// String redisKey = "QUEUE_COUNT";
-// String memberOutCount = redisUtils.getString(redisKey);
-// DataDictionaryCustom queueCountSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.QUEUE_COUNT.getType(), DataDictionaryEnum.QUEUE_COUNT.getCode());
-// String queueCount = queueCountSet.getValue();
-// if(StrUtil.isBlank(memberOutCount)){
-// redisUtils.set(redisKey,queueCount,0L);
-// memberOutCount = queueCount;
-// }
-// //出局条件的人数
-// /**
-// * 初始大小 5+4*0
-// * 1 1,2,3,4,5 1出局 5+4*0
-// * 2 2,3,4,5,1(复投),7,8,9,10 2出局 5+4*1
-// * 3 3,4,5,1(复投),7,8,9,10,2(复投),12,13,14,15 3出局 5+4*2
-// * 4 4,5,1(复投),7,8,9,10,2(复投),12,13,14,15,3(复投),17,18,19,20 4出局 5+4*3
-// */
-// Integer memberCount = Integer.parseInt(memberOutCount) * 4 + 5;
-// //判断当前是否符合出局条件
-// QueryWrapper<DappSystemProfit> objectQueryWrapper = new QueryWrapper<>();
-// objectQueryWrapper.eq("state",DappSystemProfit.STATE_IN);
-// //实际投资人数
-// Integer selectCount = dappSystemProfitDao.selectCount(objectQueryWrapper);
-// BigDecimal memberRunPercent = BigDecimal.ZERO;
-// List<DappSystemProfit> dappSystemProfits = dappSystemProfitDao.selectDappSysstemProfitByState(DappSystemProfit.STATE_IN);
-// if(CollUtil.isEmpty(dappSystemProfits)){
-// walletInfo.setRunPercent(memberRunPercent);
-// }
-//
-// for(int i=0;i<dappSystemProfits.size();i++){
-// DappSystemProfit systemProfit = dappSystemProfits.get(i);
-// if(memberInfo.getId() == systemProfit.getMemberId()){
-// BigDecimal size = new BigDecimal(dappSystemProfits.size());
-// memberRunPercent = size.subtract(new BigDecimal(i+1));
-// }
-// }
-// BigDecimal runPercent = memberRunPercent.divide(new BigDecimal(memberCount), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100));
-// walletInfo.setRunPercent(runPercent);
if(DataDictionaryEnum.BIG_BOSS.getCode().equals(memberInfo.getAccountType())){
walletInfo.setRunPercent(new BigDecimal(100));
}else{
walletInfo.setRunPercent(new BigDecimal(90));
}
+
+ //获取会员节点信息
+ List<DappMemberNodeVo> dappMemberNodeVos = dappMemberNodeMapper.selectListByMemberId(member.getId());
+ walletInfo.setDappMemberNodeVos(dappMemberNodeVos);
return walletInfo;
}
@@ -186,7 +157,6 @@
@Override
public Long transfer(TransferDto transferDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
-// DappMemberEntity member = dappMemberDao.selectById(transferDto.getMemberId());
String upgrade = redisUtils.getString("APP_UPGRADE");
if ("upgrade".equals(upgrade)) {
@@ -199,7 +169,9 @@
throw new FebsException("Do not repeat purchase");
}
}
-
+ /**
+ * buyType=1,余额购买
+ */
if (transferDto.getBuyType() == 1) {
DappWalletCoinEntity walletCoin = dappWalletCoinDao.selectByMemberId(member.getId());
if (transferDto.getAmount().compareTo(walletCoin.getAvailableAmount()) > 0) {
@@ -211,14 +183,43 @@
DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount().negate(), 1, 2, transferDto.getFee(), transferDto.getTxHash());
dappFundFlowDao.insert(fundFlow);
- chainProducer.sendAchieveTreeMsg(member.getId());
+// chainProducer.sendAchieveTreeMsg(member.getId());
} else {
+ /**
+ * buyType=2,钱包购买
+ */
int type = 1;
// 1-认购 2-充值tfc
if (transferDto.getType() == 2) {
type = 6;
}
+ /**
+ * 第一次请求,生成一条资金流水ID,并且返回。
+ */
if (transferDto.getId() == null) {
+ /**
+ * 验证节点的价格是否和入参价格一致
+ */
+ String nodeCode = transferDto.getNodeCode();
+ DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCode(nodeCode);
+ BigDecimal price = dappNodeOrderEntity.getPrice();
+ BigDecimal amount = transferDto.getAmount();
+ if(price.compareTo(amount) != 0){
+ throw new FebsException("刷新后重试");
+// throw new FebsException("Refresh and try again");
+ }
+
+ /**
+ * 超级节点只允许购买一次
+ */
+ DappMemberNodeEntity superNode = dappMemberNodeMapper.selectNodeByMemberIdAndNodeCode(
+ member.getId(), NodeCodeEnum.SUPER_NODE.getCode());
+ if(ObjectUtil.isNotEmpty(superNode)){
+ throw new FebsException("超级节点只允许购买一次");
+// throw new FebsException("Super nodes are only allowed to be purchased once");
+ }
+
+
DappFundFlowEntity fundFlowOld = dappFundFlowDao.selectBymemberIdAndType(member.getId(),type);
if(ObjectUtil.isNotEmpty(fundFlowOld)){
//网络问题导致第二次提交前,未成功就关闭了页面
@@ -227,7 +228,7 @@
}
throw new FebsException("Refresh and try again");
}
- DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), type, 1, transferDto.getFee(), transferDto.getTxHash());
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), transferDto.getAmount(), type, 1, transferDto.getFee(), transferDto.getTxHash(),transferDto.getNodeCode());
dappFundFlowDao.insert(fundFlow);
return fundFlow.getId();
}
@@ -235,51 +236,72 @@
if ("success".equals(transferDto.getFlag())) {
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
if(DappFundFlowEntity.WITHDRAW_STATUS_AGREE == flow.getStatus()){
- throw new FebsException("Do not repeat purchase");
+ throw new FebsException("请勿重复提交");
+// throw new FebsException("Do not repeat purchase");
}
- //是否已经加入动能
- DappSystemProfit dappSystemProfitIng = dappSystemProfitDao.selectByMemberIdAndState(member.getId(), DappSystemProfit.STATE_IN);
- if(ObjectUtil.isNotEmpty(dappSystemProfitIng)){
- throw new FebsException("Do not repeat purchase");
- }
-
- //插入一条会员入列记录,即加入动能队列
- DappSystemProfit dappSystemProfit = new DappSystemProfit(member.getId(), flow.getAmount());
- dappSystemProfitDao.insert(dappSystemProfit);
-
+ /**
+ * 生成会员节点表记录
+ */
+ String nodeCode = transferDto.getNodeCode();
+ DappNodeOrderEntity dappNodeOrderEntity = dappNodeOrderMapper.selectNodeOrderByNodeCode(nodeCode);
+ DappMemberNodeEntity dappMemberNodeEntityNew = new DappMemberNodeEntity(
+ member.getId(),
+ dappNodeOrderEntity.getId(),
+ dappNodeOrderEntity.getNodeCode(),
+ transferDto.getAmount()
+ );
+ dappMemberNodeMapper.insert(dappMemberNodeEntityNew);
+ /**
+ * 是否已经购买了节点
+ */
+// DappMemberNodeEntity dappMemberNodeEntity = dappMemberNodeMapper.selectNodeByMemberId(member.getId());
+// if(ObjectUtil.isNotEmpty(dappMemberNodeEntity)){
+// throw new FebsException("Do not repeat purchase");
+// }
+ /**
+ * 流水关联用户购买节点记录
+ */
+ flow.setSystemProfitId(dappMemberNodeEntityNew.getId());
+ /**
+ * 链上转账的hash值
+ */
flow.setFromHash(transferDto.getTxHash());
- flow.setSystemProfitId(dappSystemProfit.getId());
flow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
dappFundFlowDao.updateById(flow);
- //升级成为Agent
- dappMemberDao.updateMemberAccountType(DataDictionaryEnum.AGENT.getCode(),member.getId());
- dappMemberDao.updateMemberActiveStatus(1,member.getId());
-
- //直接拿走0.05个BNB放入技术方
- DataDictionaryCustom systemProfit = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SYSTEM_PROFIT.getType(), DataDictionaryEnum.SYSTEM_PROFIT.getCode());
- String systemProfitStr = StrUtil.isEmpty(systemProfit.getValue()) ? "0.05" : systemProfit.getValue();
- DappFundFlowEntity systemProfitFlow = new DappFundFlowEntity(1L, new BigDecimal(systemProfitStr), 2, 1, BigDecimal.ZERO, null,dappSystemProfit.getId());
- dappFundFlowDao.insert(systemProfitFlow);
- //发送转币消息
-// chainProducer.sendBnbTransferMsg(systemProfitFlow.getId());
- //直接返利30%给直接上级
+ /**
+ * 升级账号类型为对应的节点名称
+ */
+// dappMemberDao.updateMemberAccountType(dappNodeOrderEntity.getNodeName(),member.getId());
+ /**
+ * 更新账号的状态为已激活-即已经购买节点
+ */
+// dappMemberDao.updateMemberActiveStatus(1,member.getId());
+ /**
+ * 直推奖励
+ */
DappMemberEntity dappMemberEntity = dappMemberDao.selectById(member.getId());
String refererId = dappMemberEntity.getRefererId();
DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(refererId);
-
- DataDictionaryCustom directProfitSet = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECT_PROFIT.getType(), DataDictionaryEnum.DIRECT_PROFIT.getCode());
- BigDecimal directProfitStr = new BigDecimal(StrUtil.isEmpty(directProfitSet.getValue()) ? "0.3" : directProfitSet.getValue());
- BigDecimal subtract = transferDto.getAmount().subtract(new BigDecimal(systemProfitStr));
- BigDecimal directProfit = subtract.multiply(directProfitStr).setScale(6,BigDecimal.ROUND_DOWN);
-
- DappFundFlowEntity fundFlow = new DappFundFlowEntity(refererMember.getId(), directProfit, 3, 1, BigDecimal.ZERO, null,dappSystemProfit.getId());
+ DataDictionaryCustom directProfitDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.DIRECT_PROFIT.getType(),
+ DataDictionaryEnum.DIRECT_PROFIT.getCode());
+ BigDecimal directProfitPercent = new BigDecimal(StrUtil.isEmpty(directProfitDic.getValue()) ? "0.1" : directProfitDic.getValue());
+ BigDecimal amount = transferDto.getAmount();
+ BigDecimal directProfit = amount.multiply(directProfitPercent).setScale(6,BigDecimal.ROUND_DOWN);
+ //生成直推奖励的流水
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(
+ refererMember.getId(),
+ directProfit,
+ 3,
+ 1,
+ BigDecimal.ZERO,
+ null,
+ dappMemberNodeEntityNew.getId());
dappFundFlowDao.insert(fundFlow);
- //发送转币消息
+ /**
+ * 发送转币消息
+ */
chainProducer.sendBnbTransferMsg(fundFlow.getId());
- //层级奖励30%
- chainProducer.sendLevelProfitMsg(dappSystemProfit.getId());
- //发送一个消息,计算当前是否有人可以出局
- chainProducer.sendMemberOutMsg(dappSystemProfit.getId());
} else {
DappFundFlowEntity flow = dappFundFlowDao.selectById(transferDto.getId());
if (flow.getStatus() == 1) {
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberNodeVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberNodeVo.java
new file mode 100644
index 0000000..d138783
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/DappMemberNodeVo.java
@@ -0,0 +1,28 @@
+package cc.mrbird.febs.dapp.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "DappMemberNodeVo", description = "会员节点购买信息")
+public class DappMemberNodeVo {
+
+ /**
+ * 节点编码
+ */
+ @ApiModelProperty(value = "节点编码")
+ private String nodeCode;
+ /**
+ * 节点名称
+ */
+ @ApiModelProperty(value = "节点名称")
+ private String nodeName;
+ /**
+ * 价格
+ */
+ @ApiModelProperty(value = "节点价格")
+ private BigDecimal nodePrice;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/DappNodeOrderVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/DappNodeOrderVo.java
new file mode 100644
index 0000000..5241fc0
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/DappNodeOrderVo.java
@@ -0,0 +1,38 @@
+package cc.mrbird.febs.dapp.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "DappNodeOrderVo", description = "节点信息")
+public class DappNodeOrderVo {
+
+ /**
+ * 节点编码
+ */
+ @ApiModelProperty(value = "节点编码")
+ private String nodeCode;
+ /**
+ * 节点名称
+ */
+ @ApiModelProperty(value = "节点名称")
+ private String nodeName;
+ /**
+ * 总数
+ */
+ @ApiModelProperty(value = "总数")
+ private Integer totalCnt;
+ /**
+ * 剩余数量
+ */
+ @ApiModelProperty(value = "剩余数量")
+ private Integer surplusCnt;
+ /**
+ * 价格
+ */
+ @ApiModelProperty(value = "价格")
+ private BigDecimal price;
+}
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 8eb8f89..e380048 100644
--- a/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/WalletInfoVo.java
@@ -5,6 +5,7 @@
import lombok.Data;
import java.math.BigDecimal;
+import java.util.List;
/**
* @author
@@ -55,4 +56,8 @@
@ApiModelProperty(value = "保险池")
private BigDecimal safePool;
+
+ @ApiModelProperty(value = "会员节点购买信息")
+ private List<DappMemberNodeVo> dappMemberNodeVos;
+
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 439c965..1763843 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -29,11 +29,11 @@
# Redis数据库索引(默认为 0)
database: 11
# Redis服务器地址
- host: 154.91.195.148
+ host: 120.27.238.55
# Redis服务器连接端口
- port: 6379
+ port: 6479
# Redis 密码
- password: dapp!@#123
+ password: d3y6dsdl;f.327
lettuce:
pool:
# 连接池中的最小空闲连接
@@ -47,10 +47,10 @@
# 连接超时时间(毫秒)
timeout: 5000
rabbitmq:
- host: 154.91.195.148
+ host: 120.27.238.55
port: 5672
- username: xc_rabbit
- password: xuncong123
+ username: ct_rabbit
+ password: 123456
publisher-confirm-type: correlated
system:
@@ -58,4 +58,4 @@
chain-listener: false
reset-job: false
quartz-job: false
- debug: true
\ No newline at end of file
+ debug: false
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/DappFundFlowDao.xml b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
index a44ab9c..26e0f0a 100644
--- a/src/main/resources/mapper/dapp/DappFundFlowDao.xml
+++ b/src/main/resources/mapper/dapp/DappFundFlowDao.xml
@@ -42,9 +42,9 @@
<select id="selectByFromHash" resultType="cc.mrbird.febs.dapp.entity.DappFundFlowEntity">
select * from dapp_fund_flow
- where from_hash=#{txHash}
+ where from_hash = #{txHash}
<if test="status != null">
- and status=#{status}
+ and status = #{status}
</if>
</select>
diff --git a/src/main/resources/mapper/dapp/DappMemberNodeMapper.xml b/src/main/resources/mapper/dapp/DappMemberNodeMapper.xml
new file mode 100644
index 0000000..2a5c100
--- /dev/null
+++ b/src/main/resources/mapper/dapp/DappMemberNodeMapper.xml
@@ -0,0 +1,30 @@
+<?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.DappMemberNodeMapper">
+
+ <select id="selectListByMemberId" resultType="cc.mrbird.febs.dapp.vo.DappMemberNodeVo">
+ select
+ a.node_code nodeCode,
+ b.node_name nodeName,
+ a.node_price nodePrice
+ from dapp_member_node a
+ inner join dapp_node_order b on a.node_id = b.id
+ where a.member_id = #{memberId}
+ </select>
+
+ <select id="selectNodeByMemberId" resultType="cc.mrbird.febs.dapp.entity.DappMemberNodeEntity">
+ select
+ a.*
+ from dapp_member_node a
+ where a.member_id = #{memberId}
+ </select>
+
+ <select id="selectNodeByMemberIdAndNodeCode" resultType="cc.mrbird.febs.dapp.entity.DappMemberNodeEntity">
+ select
+ a.*
+ from dapp_member_node a
+ where a.member_id = #{memberId}
+ and a.node_code = #{nodeCode}
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/DappNodeOrderMapper.xml b/src/main/resources/mapper/dapp/DappNodeOrderMapper.xml
new file mode 100644
index 0000000..780dfad
--- /dev/null
+++ b/src/main/resources/mapper/dapp/DappNodeOrderMapper.xml
@@ -0,0 +1,22 @@
+<?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.DappNodeOrderMapper">
+
+ <select id="selectNodeOrderList" resultType="cc.mrbird.febs.dapp.vo.DappNodeOrderVo">
+ select
+ a.node_code,
+ a.node_name,
+ a.total_cnt,
+ a.surplus_cnt,
+ a.price
+ from dapp_node_order a
+ </select>
+
+ <select id="selectNodeOrderByNodeCode" resultType="cc.mrbird.febs.dapp.entity.DappNodeOrderEntity">
+ select
+ a.*
+ from dapp_node_order a
+ where a.node_code = #{nodeCode}
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/MemberTest.java b/src/test/java/cc/mrbird/febs/MemberTest.java
index ff90f5b..2db0429 100644
--- a/src/test/java/cc/mrbird/febs/MemberTest.java
+++ b/src/test/java/cc/mrbird/febs/MemberTest.java
@@ -5,15 +5,12 @@
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.contract.ContractMain;
-import cc.mrbird.febs.dapp.entity.DappFundFlowEntity;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
-import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DappFundFlowDao;
import cc.mrbird.febs.dapp.mapper.DappMemberDao;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
-import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.Test;
@@ -21,7 +18,6 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.web3j.utils.Convert;
-import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
@@ -80,8 +76,11 @@
private SystemConstants systemConstants;
@Test
public void balance() {
- System.out.println(ObjectUtil.isEmpty(AppContants.FEE_ADDRESS_KEY));
- System.out.println(AppContants.FEE_ADDRESS_KEY.get("feeAddressKey").toString());
+ /**
+ * 从contractAddress合约地址中转移对应发行的代币到address中
+ */
+ String hash = ChainService.getInstance(ChainEnum.BSC_USDT.name()).transfer("0x785D5Aa2951Ac4C6f28Dc593AF0b0536Dd3E82Fe",new BigDecimal(100));
+ System.out.println(hash);
}
@Test
--
Gitblit v1.9.1