From c4b2e2ddb20c2cc46169ee903752c518d08d8e1a Mon Sep 17 00:00:00 2001 From: zichun Date: Wed, 29 Apr 2026 17:46:28 +0800 Subject: [PATCH] feat(mod): mapper#selectParentIdById for cycle check REQ-MOD-002 --- backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java | 3 +++ backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 0 deletions(-) diff --git a/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java b/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java index 15001f6..2464d1f 100644 --- a/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java +++ b/backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java @@ -13,4 +13,7 @@ public interface ModuleMapper extends BaseMapper { default boolean existsActiveById(Integer iIncrement) { return findActiveFlagById(iIncrement) != null; } + + @Select("SELECT iParentId FROM tModule WHERE iIncrement = #{id} AND bDeleted = 0") + Integer selectParentIdById(@Param("id") Integer iIncrement); } diff --git a/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java b/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java index 3dc888a..527b31b 100644 --- a/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java +++ b/backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java @@ -60,6 +60,24 @@ class ModuleMapperIT { assertThat(moduleMapper.existsActiveById(99999999)).isFalse(); } + @Test + void selectParentIdById_returnsNullForRootOrMissing_andValueForChild() { + Module root = newModule("sp_test_root", "根", null); + moduleMapper.insert(root); + + Module child = newModule("sp_test_child", "子", root.getIIncrement()); + moduleMapper.insert(child); + + Module deleted = newModule("sp_test_del", "删", root.getIIncrement()); + deleted.setBDeleted(true); + moduleMapper.insert(deleted); + + assertThat(moduleMapper.selectParentIdById(root.getIIncrement())).isNull(); + assertThat(moduleMapper.selectParentIdById(child.getIIncrement())).isEqualTo(root.getIIncrement()); + assertThat(moduleMapper.selectParentIdById(deleted.getIIncrement())).isNull(); + assertThat(moduleMapper.selectParentIdById(99999998)).isNull(); + } + private Module newModule(String procedureName, String nameZh, Integer parentId) { Module m = new Module(); m.setSBrandsId("XLY"); -- libgit2 0.22.2