From d37da1d041422676fb41f0980a81d8b04863a2f2 Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 21 Mar 2025 09:15:27 +0800 Subject: [PATCH 1/3] =?UTF-8?q?REQ-3540:=20=E6=B7=BB=E5=8A=A0=E5=8C=BF?= =?UTF-8?q?=E5=90=8D=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/nanopart/doc/file/index/IndexManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java index 33a22c21..546d47db 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java @@ -184,7 +184,8 @@ public class IndexManager { return async(() -> transaction.execute(unused -> { if (docProps.isLockSubtreeWhenMove()) indexSupport.lockSubtree(srcNode); - RootNode moveRoot = TreeBuilder.build(indexSupport.collectValidSubtreeAsValueRoot(srcNode)); + List subtreeNodes = indexSupport.collectValidSubtreeAsValueRoot(srcNode); + RootNode moveRoot = TreeBuilder.build(subtreeNodes, true); docLogDao.log("indexNode:asyncMove", srcCode, "srcCode", srcCode, "destParentCode", destParentCode); return connectNodes(moveRoot, destParentNode); })); @@ -202,8 +203,8 @@ public class IndexManager { @BizTransactional public IndexNode copySubTree(IndexNode src, @Nullable IndexNode destParent, CopyNodeVisitor copyNodeVisitor) { - RootNode srcRoot = TreeUtils.transform(indexSupport.collectValidSubtreeAsValueRoot(src), - IndexNode.class); + List subtreeNodes = indexSupport.collectValidSubtreeAsValueRoot(src); + RootNode srcRoot = TreeUtils.transform(subtreeNodes, IndexNode.class); srcRoot.walkDown(copyNodeVisitor); indexNodeDao.saveBatch(TreeUtils.collectValues(srcRoot)); return connectNodes(srcRoot, destParent); From f17e00844f6bf843e16a8f02fcbcce39d1ee21a7 Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 21 Mar 2025 09:30:02 +0800 Subject: [PATCH 2/3] REQ-3540: try to repair tree --- .../java/cn/axzo/nanopart/doc/file/DocPrivateController.java | 2 +- .../main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java | 2 +- .../java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java index 615d8683..36ba0a9a 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java @@ -41,7 +41,7 @@ public class DocPrivateController { SimplePropertyPreFilter filter = new SimplePropertyPreFilter(); filter.getExcludes().add("parent"); filter.getExcludes().add("treeRoot"); - Node node = TreeBuilder.build(indexNodes).getChildren().get(0); + Node node = TreeBuilder.build(indexNodes, true).getChildren().get(0); return JSON.parseObject(JSON.toJSONString(node, filter), Feature.DisableCircularReferenceDetect); } diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java index 546d47db..2a7d24ca 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java @@ -204,7 +204,7 @@ public class IndexManager { @BizTransactional public IndexNode copySubTree(IndexNode src, @Nullable IndexNode destParent, CopyNodeVisitor copyNodeVisitor) { List subtreeNodes = indexSupport.collectValidSubtreeAsValueRoot(src); - RootNode srcRoot = TreeUtils.transform(subtreeNodes, IndexNode.class); + RootNode srcRoot = TreeUtils.transform(subtreeNodes, IndexNode.class, true); srcRoot.walkDown(copyNodeVisitor); indexNodeDao.saveBatch(TreeUtils.collectValues(srcRoot)); return connectNodes(srcRoot, destParent); diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java index 57cd22e8..9badee10 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java @@ -30,7 +30,7 @@ public class IndexNodeTreeUtils { private final DocProps docProps; public RootNode transform(List subtreeNodes) { - RootNode root = TreeUtils.transform(subtreeNodes, IndexNodeInfo.class); + RootNode root = TreeUtils.transform(subtreeNodes, IndexNodeInfo.class, true); TreeUtils.connectValueChildren(root); for (ValueNode valueNode : root.getValueNodes()) { IndexNodeInfo indexNode = valueNode.getValue(); From 76dcf5f500240cc647cbb19bb80976779b75600b Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 21 Mar 2025 09:33:21 +0800 Subject: [PATCH 3/3] REQ-3540: try to repair tree --- .../cn/axzo/nanopart/doc/file/DocPrivateController.java | 6 +++--- .../java/cn/axzo/nanopart/doc/file/index/IndexManager.java | 4 ++-- .../java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java index 36ba0a9a..56c1d683 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/DocPrivateController.java @@ -3,7 +3,6 @@ package cn.axzo.nanopart.doc.file; import java.util.List; -import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -11,12 +10,13 @@ import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.Feature; +import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; import cn.axzo.maokai.api.vo.response.tree.Node; -import cn.axzo.maokai.api.vo.response.tree.TreeBuilder; import cn.axzo.nanopart.doc.entity.IndexNode; import cn.axzo.nanopart.doc.file.index.IndexQueryService; import cn.axzo.nanopart.doc.integration.OssClient; +import cn.axzo.nanopart.doc.utils.IndexNodeTreeUtils; import lombok.RequiredArgsConstructor; /** @@ -41,7 +41,7 @@ public class DocPrivateController { SimplePropertyPreFilter filter = new SimplePropertyPreFilter(); filter.getExcludes().add("parent"); filter.getExcludes().add("treeRoot"); - Node node = TreeBuilder.build(indexNodes, true).getChildren().get(0); + Node node = IndexNodeTreeUtils.build(indexNodes).getChildren().get(0); return JSON.parseObject(JSON.toJSONString(node, filter), Feature.DisableCircularReferenceDetect); } diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java index 2a7d24ca..c35f7301 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java @@ -14,7 +14,6 @@ import org.springframework.transaction.support.TransactionTemplate; import cn.axzo.maokai.api.util.Ref; import cn.axzo.maokai.api.vo.response.tree.RootNode; -import cn.axzo.maokai.api.vo.response.tree.TreeBuilder; import cn.axzo.maokai.api.vo.response.tree.TreeUtils; import cn.axzo.nanopart.doc.api.domain.NodeCreate; import cn.axzo.nanopart.doc.api.domain.OssFile; @@ -33,6 +32,7 @@ import cn.axzo.nanopart.doc.file.index.domain.NameUsedException; import cn.axzo.nanopart.doc.file.mq.FileBroadcaster; import cn.axzo.nanopart.doc.integration.OssClient; import cn.axzo.nanopart.doc.utils.BizTransactional; +import cn.axzo.nanopart.doc.utils.IndexNodeTreeUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -185,7 +185,7 @@ public class IndexManager { if (docProps.isLockSubtreeWhenMove()) indexSupport.lockSubtree(srcNode); List subtreeNodes = indexSupport.collectValidSubtreeAsValueRoot(srcNode); - RootNode moveRoot = TreeBuilder.build(subtreeNodes, true); + RootNode moveRoot = IndexNodeTreeUtils.build(subtreeNodes); docLogDao.log("indexNode:asyncMove", srcCode, "srcCode", srcCode, "destParentCode", destParentCode); return connectNodes(moveRoot, destParentNode); })); diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java index 9badee10..8539eecd 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/utils/IndexNodeTreeUtils.java @@ -10,7 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import cn.axzo.maokai.api.vo.response.tree.RootNode; +import cn.axzo.maokai.api.vo.response.tree.TreeBuilder; import cn.axzo.maokai.api.vo.response.tree.TreeUtils; +import cn.axzo.maokai.api.vo.response.tree.Value; import cn.axzo.maokai.api.vo.response.tree.ValueNode; import cn.axzo.maokai.api.vo.response.tree.ValueNodeRecursiveVisitor; import cn.axzo.maokai.api.vo.response.tree.WalkingDecision; @@ -29,6 +31,10 @@ public class IndexNodeTreeUtils { private final DocProps docProps; + public static RootNode build(List values) { + return TreeBuilder.build(values, true); + } + public RootNode transform(List subtreeNodes) { RootNode root = TreeUtils.transform(subtreeNodes, IndexNodeInfo.class, true); TreeUtils.connectValueChildren(root);