From b8957829d2c8c6c37d8aabdbabc95573efab64b7 Mon Sep 17 00:00:00 2001 From: zichun Date: Wed, 29 Apr 2026 17:59:22 +0800 Subject: [PATCH] feat(mod): mapper#hasActiveChildren for delete check REQ-MOD-003 --- backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java | 7 +++++++ backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java | 19 +++++++++++++++++++ 2 files changed, 26 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 2464d1f..bb81f20 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 @@ -16,4 +16,11 @@ public interface ModuleMapper extends BaseMapper { @Select("SELECT iParentId FROM tModule WHERE iIncrement = #{id} AND bDeleted = 0") Integer selectParentIdById(@Param("id") Integer iIncrement); + + @Select("SELECT 1 FROM tModule WHERE iParentId = #{parentId} AND bDeleted = 0 LIMIT 1") + Integer findActiveChildFlag(@Param("parentId") Integer parentId); + + default boolean hasActiveChildren(Integer parentId) { + return findActiveChildFlag(parentId) != null; + } } 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 527b31b..726f79f 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 @@ -78,6 +78,25 @@ class ModuleMapperIT { assertThat(moduleMapper.selectParentIdById(99999998)).isNull(); } + @Test + void hasActiveChildren_trueIfChildAliveExists_falseOtherwise() { + Module root = newModule("sp_test_hac_root", "根", null); + moduleMapper.insert(root); + + Module child1 = newModule("sp_test_hac_alive", "存活子", root.getIIncrement()); + moduleMapper.insert(child1); + + Module child2 = newModule("sp_test_hac_dead", "已删子", root.getIIncrement()); + child2.setBDeleted(true); + moduleMapper.insert(child2); + + assertThat(moduleMapper.hasActiveChildren(root.getIIncrement())).isTrue(); + assertThat(moduleMapper.hasActiveChildren(99999996)).isFalse(); + + jdbcTemplate.update("UPDATE tModule SET bDeleted = 1 WHERE iIncrement = ?", child1.getIIncrement()); + assertThat(moduleMapper.hasActiveChildren(root.getIIncrement())).isFalse(); + } + private Module newModule(String procedureName, String nameZh, Integer parentId) { Module m = new Module(); m.setSBrandsId("XLY"); -- libgit2 0.22.2