From eeb68fc3ca75b5d05fe8aba2d76fb8964348bb6b Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 14 Jun 2024 09:49:11 +0800
Subject: [PATCH] 星级矩阵

---
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 8 deletions(-)

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..abacbdd 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
@@ -411,8 +411,15 @@
 
         /**
          * 买入先验证当前星团是否已经买入
+         *      如果不是购买一星,则验证前一新团是否购买
          */
+        if(ObjectUtil.isEmpty(buyStarDto.getNodeType())){
+            throw new FebsException("选择购买的星团");
+        }
         Integer nodeType = buyStarDto.getNodeType();
+        if(NodeType.NODE_13.getNodeType() < nodeType || nodeType < NodeType.NODE_1.getNodeType()){
+            throw new FebsException("选择购买的星团");
+        }
         QueryWrapper<DbMemberNode> nodeQueryWrapper = new QueryWrapper<>();
         nodeQueryWrapper.eq("member_id",member.getId());
         nodeQueryWrapper.eq("type", nodeType);
@@ -420,6 +427,17 @@
         List<DbMemberNode> dbMemberNodes = dbMemberNodeMapper.selectList(nodeQueryWrapper);
         if(CollUtil.isNotEmpty(dbMemberNodes)){
             throw new FebsException("已购买");
+        }
+        if(NodeType.NODE_1.getNodeType() != buyStarDto.getNodeType()){
+            Integer nextNodeType = nodeType - 1;
+            QueryWrapper<DbMemberNode> nextWrapper = new QueryWrapper<>();
+            nextWrapper.eq("member_id",member.getId());
+            nextWrapper.eq("type", nextNodeType);
+            nextWrapper.eq("work_state", DbMemberNode.STATE_ONE);
+            List<DbMemberNode> nextNode = dbMemberNodeMapper.selectList(nextWrapper);
+            if(CollUtil.isEmpty(nextNode)){
+                throw new FebsException("请先购买上一星团");
+            }
         }
 
         if (ObjectUtil.isEmpty(buyStarDto.getId())) {//第一次
@@ -467,7 +485,7 @@
     }
 
     @Override
-    public FebsResponse memberNode(MemberNodeDto memberNodeDto) {
+    public MemberNodeVo memberNode(MemberNodeDto memberNodeDto) {
         DappMemberEntity member = LoginUserUtil.getAppUser();
         Integer type = memberNodeDto.getType();
 
@@ -479,18 +497,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);

--
Gitblit v1.9.1