fix: 完善学校管理删除逻辑 - 参照旧版本修复
根据旧版本代码修复删除逻辑: - 删除学校前检查是否有年级,有则提示"请先删除年级" - 删除年级前检查是否有班级,有则提示"请先删除班级" - 树形数据添加 gradeId、classId 字段 - TODO: 学生管理模块完成后添加学生引用检查
This commit is contained in:
parent
b42aab4a8f
commit
f0f94e552d
|
|
@ -81,4 +81,14 @@ public class SchoolTreeNode {
|
|||
* 学校年级关联ID(班级节点需要)
|
||||
*/
|
||||
private Long schoolGradeId;
|
||||
|
||||
/**
|
||||
* 年级ID(仅年级节点有值)
|
||||
*/
|
||||
private Long gradeId;
|
||||
|
||||
/**
|
||||
* 班级ID(仅班级节点有值)
|
||||
*/
|
||||
private Long classId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue