diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/vo/SchoolTreeNode.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/vo/SchoolTreeNode.java index 806afc2..1127c2e 100644 --- a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/vo/SchoolTreeNode.java +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/vo/SchoolTreeNode.java @@ -81,4 +81,14 @@ public class SchoolTreeNode { * 学校年级关联ID(班级节点需要) */ private Long schoolGradeId; + + /** + * 年级ID(仅年级节点有值) + */ + private Long gradeId; + + /** + * 班级ID(仅班级节点有值) + */ + private Long classId; } diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java index 9d1f50f..3c5c1df 100644 --- a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java @@ -126,7 +126,20 @@ public class PgSchoolServiceImpl implements IPgSchoolService { } @Override + @Transactional(rollbackFor = Exception.class) public int deleteByIds(Long[] schoolIds) { + for (Long schoolId : schoolIds) { + // 1. 检查是否有年级 + Long gradeCount = schoolGradeMapper.selectCount( + new LambdaQueryWrapper().eq(PgSchoolGrade::getSchoolId, schoolId) + ); + if (gradeCount > 0) { + PgSchool school = baseMapper.selectById(schoolId); + String schoolName = school != null ? school.getSchoolName() : schoolId.toString(); + throw new RuntimeException("学校\"" + schoolName + "\"下存在年级数据,请先删除年级"); + } + // TODO: 检查是否被学生信息引用(学生管理模块完成后添加) + } return baseMapper.deleteByIds(Arrays.asList(schoolIds)); } @@ -193,17 +206,22 @@ public class PgSchoolServiceImpl implements IPgSchoolService { @Override @Transactional(rollbackFor = Exception.class) public int removeSchoolGrade(Long schoolGradeId) { - // 先删除该年级下的所有班级 - schoolClassMapper.delete( - new LambdaQueryWrapper() - .eq(PgSchoolClass::getSchoolGradeId, schoolGradeId) + // 1. 检查是否有班级 + Long classCount = schoolClassMapper.selectCount( + new LambdaQueryWrapper().eq(PgSchoolClass::getSchoolGradeId, schoolGradeId) ); - // 再删除年级 + if (classCount > 0) { + throw new RuntimeException("该年级下存在班级数据,请先删除班级"); + } + // TODO: 检查是否被学生信息引用(学生管理模块完成后添加) + + // 2. 删除年级 return schoolGradeMapper.deleteById(schoolGradeId); } @Override public int removeGradeClass(Long schoolClassId) { + // TODO: 检查是否被学生信息引用(学生管理模块完成后添加) return schoolClassMapper.deleteById(schoolClassId); } @@ -294,6 +312,7 @@ public class PgSchoolServiceImpl implements IPgSchoolService { gradeNode.setSchoolId(sg.getSchoolId()); gradeNode.setParentId(s.getSchoolId()); gradeNode.setSchoolGradeId(sg.getId()); + gradeNode.setGradeId(sg.getGradeId()); // 查找该年级的班级 List classNodes = allSchoolClasses.stream() @@ -306,6 +325,7 @@ public class PgSchoolServiceImpl implements IPgSchoolService { classNode.setSchoolId(sc.getSchoolId()); classNode.setSchoolGradeId(sc.getSchoolGradeId()); classNode.setParentId(sg.getId()); + classNode.setClassId(sc.getClassId()); return classNode; }) .toList();