From e901ce392b07f4de3724ccfa8d7cf7fb33ed0567 Mon Sep 17 00:00:00 2001 From: yanglin Date: Mon, 24 Mar 2025 15:27:35 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3540:=20=E6=A0=A1=E9=AA=8C=E6=B7=B1?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/nanopart/doc/file/index/IndexManager.java | 2 ++ .../axzo/nanopart/doc/file/index/IndexSupport.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 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 f6345554..8c99cce3 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 @@ -193,6 +193,8 @@ public class IndexManager { public Future asyncMove(String srcCode, @Nullable String destParentCode) { IndexNode srcNode = getOrThrow(srcCode); IndexNode destParentNode = determineDestParentNode(srcNode, destParentCode, "移动"); + if (destParentNode != null) + indexSupport.validateDepthWhenAddChild(destParentNode); return async(() -> transaction.execute(unused -> { docLogDao.log("indexNode:asyncMove", srcCode, "srcCode", srcCode, "destParentCode", destParentCode); if (docProps.isLockSubtreeWhenMove()) diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexSupport.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexSupport.java index c5f0cc93..9d124eba 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexSupport.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexSupport.java @@ -93,12 +93,16 @@ public class IndexSupport { "创建子节点时父子scope不匹配: {}", child.nodeScope().scope()); BizAssertions.assertEquals(parent.getScopeCode(), child.nodeScope().scopeCode(), // "创建子节点时父子scopeCode不匹配: {}", child.parentCode()); - BizAssertions.assertTrue( - indexNodeDao.validChildrenCount(parent.getCode()) < docProps.getIndexNodeMaxChildrenSize(), - "创建失败, 子节点数量不能超过 {}", docProps.getIndexNodeMaxChildrenSize()); + validateDepthWhenAddChild(parent); if (!parent.isRoot() && limitChildrenCount(child)) - BizAssertions.assertTrue(parent.path().depth() < docProps.getIndexNodeMaxDepth(), // - "节点深度超过限制{}, 无法再创建新节点", docProps.getIndexNodeMaxDepth()); + BizAssertions.assertTrue( + indexNodeDao.validChildrenCount(parent.getCode()) < docProps.getIndexNodeMaxChildrenSize(), + "创建失败, 子节点数量不能超过 {}", docProps.getIndexNodeMaxChildrenSize()); + } + + public void validateDepthWhenAddChild(IndexNode parent) { + BizAssertions.assertTrue(parent.path().depth() < docProps.getIndexNodeMaxDepth(), // + "节点深度超过限制{}, 无法再创建新节点", docProps.getIndexNodeMaxDepth()); } List collectValidSubtreeAsValueRoot(IndexNode srcNode) {