From b60666a3fe9822277efd717380e619f08ac3ad9f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 13 Jun 2024 11:42:23 +0800
Subject: [PATCH] 星级矩阵
---
src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java | 3
src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java | 5 +
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 6 ++
src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java | 18 +++++-
src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java | 37 +++++++++--
src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java | 2
src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java | 2
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 5 +
src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java | 62 ++++++++------------
src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java | 19 ++++++
10 files changed, 109 insertions(+), 50 deletions(-)
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 c5f03ea..53a780d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -7,6 +7,7 @@
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.MemberNodeVo;
import cc.mrbird.febs.dapp.vo.WalletInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -49,5 +50,5 @@
FebsResponse nodeList();
- FebsResponse memberNode(MemberNodeDto memberNodeDto);
+ MemberNodeVo memberNode(MemberNodeDto memberNodeDto);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
index f3bd471..1e180dd 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/BscUsdtContractEvent.java
@@ -209,8 +209,9 @@
DappFundFlowEntity fundFlowPerk = new DappFundFlowEntity(parent.getId(), directProfit, 3, 2, null, null);
dappFundFlowDao.insert(fundFlowPerk);
}
- //生成业绩数
- chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId());
+ //复投
+// chainProducer.sendAchieveTreeMsg(fundFlow.getMemberId());
+ chainProducer.sendNodeMsg(fundFlow.getMemberId());
//发送推荐规则奖励
chainProducer.sendInvitePerkMsg(fundFlow.getId());
//发送节点投资
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 696d9db..c03d789 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
@@ -164,7 +164,7 @@
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 {
int type = 1;
// 1-认购 2-充值tfc
@@ -467,7 +467,7 @@
}
@Override
- public FebsResponse memberNode(MemberNodeDto memberNodeDto) {
+ public MemberNodeVo memberNode(MemberNodeDto memberNodeDto) {
DappMemberEntity member = LoginUserUtil.getAppUser();
Integer type = memberNodeDto.getType();
@@ -479,18 +479,39 @@
if(ObjectUtil.isEmpty(dbMemberNode)){
return null;
}
- if(ObjectUtil.isNotEmpty(dbMemberNode.getLeftNode())){
- }
+ return buildTeamMatrix(dbMemberNode);
+ }
+
+ public MemberNodeVo buildTeamMatrix(DbMemberNode dbMemberNode) {
+ Long id = dbMemberNode.getId();
+
MemberNodeVo memberNodeVo = new MemberNodeVo();
- memberNodeVo.setLeftNode(getInviteId(dbMemberNode.getLeftNode()));
- memberNodeVo.setRightNode(getInviteId(dbMemberNode.getRightNode()));
+ memberNodeVo.setInviteId(getInviteId(id));
+ memberNodeVo.setId(id);
+ memberNodeVo.setParentNode(ObjectUtil.isEmpty(dbMemberNode.getParentNode()) ? 0L : dbMemberNode.getParentNode());
+ memberNodeVo.setLeftNode(ObjectUtil.isEmpty(dbMemberNode.getLeftNode()) ? 0L : dbMemberNode.getLeftNode());
+ memberNodeVo.setRightNode(ObjectUtil.isEmpty(dbMemberNode.getRightNode()) ? 0L : dbMemberNode.getRightNode());
+ memberNodeVo.setLeftRight(ObjectUtil.isEmpty(dbMemberNode.getLeftRight()) ? 0 : dbMemberNode.getLeftRight());
- return null;
+ QueryWrapper<DbMemberNode> childQuery = new QueryWrapper<>();
+ childQuery.eq("parent_node",id);
+ childQuery.eq("type", dbMemberNode.getType());
+ childQuery.eq("work_state", DbMemberNode.STATE_ONE);
+ List<DbMemberNode> childrenNode = dbMemberNodeMapper.selectList(childQuery);
+ if(CollUtil.isEmpty(childrenNode)){
+ return memberNodeVo;
+ }
+
+ List<MemberNodeVo> list = new ArrayList<>();
+ for (DbMemberNode childNode : childrenNode) {
+ list.add(buildTeamMatrix(childNode));
+ }
+ memberNodeVo.setChildren(list);
+ return memberNodeVo;
}
public String getInviteId(Long memberNodeId){
- MemberNodeVo memberNodeVo = new MemberNodeVo();
DbMemberNode dbMemberNode = dbMemberNodeMapper.selectById(memberNodeId);
Long memberId = dbMemberNode.getMemberId();
DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java
index c581b90..de69638 100644
--- a/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/MemberNodeVo.java
@@ -11,12 +11,24 @@
@ApiModel(value = "MemberNodeVo", description = "星团")
public class MemberNodeVo {
+
+ @ApiModelProperty(value = "邀请码")
private String inviteId;
+ @ApiModelProperty(value = "ID")
+ private Long id;
- private String leftNode;
+ @ApiModelProperty(value = "父节点ID")
+ private Long parentNode;//父节点memberID
- private String rightNode;
+ @ApiModelProperty(value = "左节点ID")
+ private Long leftNode;
- @ApiModelProperty(value = "子节点")
+ @ApiModelProperty(value = "右节点ID")
+ private Long rightNode;
+
+ @ApiModelProperty(value = "左右节点 1-左 2-右")
+ private Integer leftRight;
+
+ @ApiModelProperty(value = "节点")
private List<MemberNodeVo> children = new ArrayList<>();
}
diff --git a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java b/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
index c4ee5f2..86b436c 100644
--- a/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
+++ b/src/main/java/cc/mrbird/febs/job/MatrixTreeInit.java
@@ -1,18 +1,8 @@
package cc.mrbird.febs.job;
-import cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity;
-import cc.mrbird.febs.dapp.entity.DappMemberEntity;
-import cc.mrbird.febs.dapp.mapper.DappAchieveTreeDao;
-import cc.mrbird.febs.dapp.mapper.DappMemberDao;
-import cc.mrbird.febs.tree.MatrixTree;
-import cc.mrbird.febs.tree.MemberNode;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import java.util.List;
/**
* @author wzy
@@ -23,30 +13,30 @@
@ConditionalOnProperty(prefix = "system", name = "chain-listener", havingValue = "true")
public class MatrixTreeInit {
- @Autowired
- private DappAchieveTreeDao dappAchieveTreeDao;
-
- @Autowired
- private DappMemberDao dappMemberDao;
-
- @PostConstruct
- public void init() {
-// List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeList();
- List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeListV2();
-
- MatrixTree instance = MatrixTree.getInstance();
- for (DappAchieveTreeEntity treeNode : tree) {
- Long memberId = treeNode.getMemberId();
- DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
-
-
- MemberNode node = new MemberNode();
- node.setAddress(dappMemberEntity.getAddress());
- node.setInviteId(dappMemberEntity.getInviteId());
- node.setRefererId(dappMemberEntity.getRefererId());
- node.setMemberId(treeNode.getMemberId());
- node.setFundId(treeNode.getFundId());
- instance.addNode(node);
- }
- }
+// @Autowired
+// private DappAchieveTreeDao dappAchieveTreeDao;
+//
+// @Autowired
+// private DappMemberDao dappMemberDao;
+//
+// @PostConstruct
+// public void init() {
+//// List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeList();
+// List<DappAchieveTreeEntity> tree = dappAchieveTreeDao.selectTreeListV2();
+//
+// MatrixTree instance = MatrixTree.getInstance();
+// for (DappAchieveTreeEntity treeNode : tree) {
+// Long memberId = treeNode.getMemberId();
+// DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+//
+//
+// MemberNode node = new MemberNode();
+// node.setAddress(dappMemberEntity.getAddress());
+// node.setInviteId(dappMemberEntity.getInviteId());
+// node.setRefererId(dappMemberEntity.getRefererId());
+// node.setMemberId(treeNode.getMemberId());
+// node.setFundId(treeNode.getFundId());
+// instance.addNode(node);
+// }
+// }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
index 99626f0..857046c 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueConstants.java
@@ -6,6 +6,8 @@
**/
public class QueueConstants {
//发送推荐规则奖励
+ public static final String TFC_NODE_AGAIN = "queue_tfc_node_again";
+ //发送推荐规则奖励
public static final String TFC_NODE_PERK_QUEEN = "queue_tfc_node_perk";
//发送推荐规则奖励
public static final String TFC_INVITE_PERK_QUEEN = "queue_tfc_invite_perk";
diff --git a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
index b0cb0a8..3cf556d 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/QueueEnum.java
@@ -6,6 +6,8 @@
public enum QueueEnum {
//发送推荐规则奖励
+ TFC_NODE_AGAIN("exchange_tfc_node_again", "route_key_tfc_node_again", QueueConstants.TFC_NODE_AGAIN),
+ //发送推荐规则奖励
TFC_NODE_PERK("exchange_tfc_node_perk", "route_key_tfc_node_perk", QueueConstants.TFC_NODE_PERK_QUEEN),
//发送推荐规则奖励
TFC_INVITE_PERK("exchange_tfc_invite_perk", "route_key_tfc_invite_perk", QueueConstants.TFC_INVITE_PERK_QUEEN),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
index 8b6fea9..898fadf 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/RabbitConfiguration.java
@@ -139,4 +139,23 @@
return BindingBuilder.bind(nodePerkQueue()).to(nodePerkExchange()).with(QueueEnum.TFC_NODE_PERK.getRoute());
}
// === 发送节点奖励 end ===
+
+
+
+ // === 发送复投 start ===
+ @Bean
+ public DirectExchange nodeAgainExchange() {
+ return new DirectExchange(QueueEnum.TFC_NODE_AGAIN.getExchange());
+ }
+
+ @Bean
+ public Queue nodeAgainQueue() {
+ return new Queue(QueueEnum.TFC_NODE_AGAIN.getQueue());
+ }
+
+ @Bean
+ public Binding nodeAgainBind() {
+ return BindingBuilder.bind(nodeAgainQueue()).to(nodeAgainExchange()).with(QueueEnum.TFC_NODE_AGAIN.getRoute());
+ }
+ // === 发送复投 end ===
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
index 5d81562..1602b8e 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -56,4 +56,10 @@
log.info("消费节点投资,流水ID:{}", id);
dappSystemService.nodePerkMsg(id);
}
+
+ @RabbitListener(queues = QueueConstants.TFC_NODE_AGAIN)
+ public void nodeMsg(Long id) {
+ log.info("复投:{}", id);
+ dappSystemService.achieveTreeV2(id);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
index 43167f1..17fe0fa 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -76,4 +76,9 @@
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_PERK.getExchange(), QueueEnum.TFC_NODE_PERK.getRoute(), id, correlationData);
}
+ public void sendNodeMsg(Long id) {
+ log.info("发送复投:{}", id);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(QueueEnum.TFC_NODE_AGAIN.getExchange(), QueueEnum.TFC_NODE_AGAIN.getRoute(), id, correlationData);
+ }
}
--
Gitblit v1.9.1