fix: 完善学校管理删除逻辑 - 参照旧版本修复

根据旧版本代码修复删除逻辑:
- 删除学校前检查是否有年级,有则提示"请先删除年级"
- 删除年级前检查是否有班级,有则提示"请先删除班级"
- 树形数据添加 gradeId、classId 字段
- TODO: 学生管理模块完成后添加学生引用检查
This commit is contained in:
神码-方晓辉 2026-02-02 17:44:43 +08:00
parent b42aab4a8f
commit f0f94e552d
2 changed files with 35 additions and 5 deletions

View File

@ -81,4 +81,14 @@ public class SchoolTreeNode {
* 学校年级关联ID班级节点需要
*/
private Long schoolGradeId;
/**
* 年级ID仅年级节点有值
*/
private Long gradeId;
/**
* 班级ID仅班级节点有值
*/
private Long classId;
}

View File

@ -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<PgSchoolGrade>().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<PgSchoolClass>()
.eq(PgSchoolClass::getSchoolGradeId, schoolGradeId)
// 1. 检查是否有班级
Long classCount = schoolClassMapper.selectCount(
new LambdaQueryWrapper<PgSchoolClass>().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<SchoolTreeNode> 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();