From 1d0d712b4f2b489e020cbf23eaf20e386eee1561 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Thu, 15 Jun 2023 01:46:42 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java | 30 +++++++++++++++++++++++++++---
1 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
index 3356f8f..ebcf9ff 100644
--- a/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
+++ b/src/main/java/cc/mrbird/febs/common/tree/MatrixTree.java
@@ -40,7 +40,20 @@
return null;
}
- MemberNode parentNode = findNotWholeNode();
+ MemberNode childTreeRoot = getNode(node.getRefererId());
+
+ MemberNode parentNode = findNotWholeNode(childTreeRoot == null ? root : childTreeRoot);
+ parentNode.addNode(node);
+ return parentNode;
+ }
+
+ public MemberNode addNode(MemberNode node, Long parentNodeId) {
+ if (parentNodeId == null) {
+ root = node;
+ return null;
+ }
+
+ MemberNode parentNode = getNode(parentNodeId);
parentNode.addNode(node);
return parentNode;
}
@@ -49,7 +62,7 @@
* 层级遍历,查到子节点未满3个的节点
* @return
*/
- public MemberNode findNotWholeNode() {
+ public MemberNode findNotWholeNode(MemberNode root) {
ArrayDeque<MemberNode> deque = new ArrayDeque<>();
deque.add(root);
@@ -77,6 +90,10 @@
return result;
}
+ public MemberNode findNotWholeNode() {
+ return findNotWholeNode(root);
+ }
+
/**
* 查找整个树下对应节点
* @param param memberId/address/inviteId
@@ -85,6 +102,10 @@
public MemberNode getNode(Object param) {
if (root == null) {
return null;
+ }
+
+ if (root.getMemberId().equals(param) || root.getPhone().equals(param) || root.getInviteId().equals(param)) {
+ return root;
}
return getNode(root.CHILD, param);
@@ -107,7 +128,10 @@
return node;
}
- return getNode(node.CHILD, param);
+ MemberNode childNode = getNode(node.CHILD, param);
+ if (childNode != null) {
+ return childNode;
+ }
}
return null;
--
Gitblit v1.9.1