From f0f94e552df9ff7b40d4b50409ae7bdf86e89b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E7=A0=81-=E6=96=B9=E6=99=93=E8=BE=89?= Date: Mon, 2 Feb 2026 17:44:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E5=AD=A6=E6=A0=A1?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=88=A0=E9=99=A4=E9=80=BB=E8=BE=91=20-=20?= =?UTF-8?q?=E5=8F=82=E7=85=A7=E6=97=A7=E7=89=88=E6=9C=AC=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据旧版本代码修复删除逻辑: - 删除学校前检查是否有年级,有则提示"请先删除年级" - 删除年级前检查是否有班级,有则提示"请先删除班级" - 树形数据添加 gradeId、classId 字段 - TODO: 学生管理模块完成后添加学生引用检查 --- .../school/domain/vo/SchoolTreeNode.java | 10 +++++++ .../service/impl/PgSchoolServiceImpl.java | 30 +++++++++++++++---- 2 files changed, 35 insertions(+), 5 deletions(-) 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();