Commit b8957829d2c8c6c37d8aabdbabc95573efab64b7

Authored by zichun
1 parent c9162362

feat(mod): mapper#hasActiveChildren for delete check REQ-MOD-003

backend/src/main/java/com/xly/erp/module/mod/mapper/ModuleMapper.java
@@ -16,4 +16,11 @@ public interface ModuleMapper extends BaseMapper<Module> { @@ -16,4 +16,11 @@ public interface ModuleMapper extends BaseMapper<Module> {
16 16
17 @Select("SELECT iParentId FROM tModule WHERE iIncrement = #{id} AND bDeleted = 0") 17 @Select("SELECT iParentId FROM tModule WHERE iIncrement = #{id} AND bDeleted = 0")
18 Integer selectParentIdById(@Param("id") Integer iIncrement); 18 Integer selectParentIdById(@Param("id") Integer iIncrement);
  19 +
  20 + @Select("SELECT 1 FROM tModule WHERE iParentId = #{parentId} AND bDeleted = 0 LIMIT 1")
  21 + Integer findActiveChildFlag(@Param("parentId") Integer parentId);
  22 +
  23 + default boolean hasActiveChildren(Integer parentId) {
  24 + return findActiveChildFlag(parentId) != null;
  25 + }
19 } 26 }
backend/src/test/java/com/xly/erp/module/mod/mapper/ModuleMapperIT.java
@@ -78,6 +78,25 @@ class ModuleMapperIT { @@ -78,6 +78,25 @@ class ModuleMapperIT {
78 assertThat(moduleMapper.selectParentIdById(99999998)).isNull(); 78 assertThat(moduleMapper.selectParentIdById(99999998)).isNull();
79 } 79 }
80 80
  81 + @Test
  82 + void hasActiveChildren_trueIfChildAliveExists_falseOtherwise() {
  83 + Module root = newModule("sp_test_hac_root", "根", null);
  84 + moduleMapper.insert(root);
  85 +
  86 + Module child1 = newModule("sp_test_hac_alive", "存活子", root.getIIncrement());
  87 + moduleMapper.insert(child1);
  88 +
  89 + Module child2 = newModule("sp_test_hac_dead", "已删子", root.getIIncrement());
  90 + child2.setBDeleted(true);
  91 + moduleMapper.insert(child2);
  92 +
  93 + assertThat(moduleMapper.hasActiveChildren(root.getIIncrement())).isTrue();
  94 + assertThat(moduleMapper.hasActiveChildren(99999996)).isFalse();
  95 +
  96 + jdbcTemplate.update("UPDATE tModule SET bDeleted = 1 WHERE iIncrement = ?", child1.getIIncrement());
  97 + assertThat(moduleMapper.hasActiveChildren(root.getIIncrement())).isFalse();
  98 + }
  99 +
81 private Module newModule(String procedureName, String nameZh, Integer parentId) { 100 private Module newModule(String procedureName, String nameZh, Integer parentId) {
82 Module m = new Module(); 101 Module m = new Module();
83 m.setSBrandsId("XLY"); 102 m.setSBrandsId("XLY");