feat(class): 添加班级删除功能

- 在班级列表表格中新增“操作”列,添加删除按钮
- 实现删除班级的接口调用逻辑
- 删除成功后刷新班级列表
- 删除当前选中班级时清空选中状态
- 添加成功和失败的用户提示信息
This commit is contained in:
lbw
2025-12-15 15:25:35 +08:00
parent 84239d0199
commit 7aebff5f6a
13 changed files with 245 additions and 21 deletions

View File

@@ -2,6 +2,8 @@ package com.yinlihupo.enlish.service.controller;
import com.yinlihupo.enlish.service.domain.dataobject.ClassDO;
import com.yinlihupo.enlish.service.domain.dataobject.GradeDO;
import com.yinlihupo.enlish.service.model.vo.classs.AddClassReqVO;
import com.yinlihupo.enlish.service.model.vo.classs.DeleteClassReqVO;
import com.yinlihupo.enlish.service.model.vo.classs.FindClassReqVO;
import com.yinlihupo.enlish.service.model.vo.classs.FindClassRspVO;
import com.yinlihupo.enlish.service.service.ClassService;
@@ -41,4 +43,16 @@ public class ClassController {
return PageResponse.success(findClassRspVOS, page, total, pageSize);
}
@PostMapping("add")
@ApiOperationLog(description = "添加班级")
public void addClass(@RequestBody AddClassReqVO addClassReqVO) {
classService.addClass(addClassReqVO.getTitle(), addClassReqVO.getGradeId());
}
@PostMapping("delete")
@ApiOperationLog(description = "删除班级")
public void deleteClass(@RequestBody DeleteClassReqVO deleteClassReqVO) {
classService.deleteClass(deleteClassReqVO.getId());
}
}

View File

@@ -14,4 +14,8 @@ public interface ClassDOMapper {
Integer selectClassDOCount();
List<ClassDO> selectClassDOListByIds(@Param("classIds") List<Integer> classIds);
void insert(ClassDO classDO);
void delete(@Param("id") Integer id);
}

View File

@@ -7,4 +7,10 @@ import java.util.List;
public interface GradeClassDOMapper {
List<GradeClassDO> selectByClassIds(@Param("classIds") List<Integer> classIds);
void insert(@Param("classId") Integer classId, @Param("gradeId") Integer gradeId);
void deleteByClassId(@Param("classId") Integer classId);
Integer selectByGradeId(@Param("gradeId") Integer gradeId);
}

View File

@@ -0,0 +1,16 @@
package com.yinlihupo.enlish.service.model.vo.classs;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class AddClassReqVO {
private String title;
private Integer gradeId;
}

View File

@@ -0,0 +1,15 @@
package com.yinlihupo.enlish.service.model.vo.classs;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class DeleteClassReqVO {
private Integer id;
}

View File

@@ -15,4 +15,8 @@ public interface ClassService {
int getClassCount();
Map<Integer, GradeDO> findClassIds2GradeMap(List<Integer> classIds);
void addClass(String className, Integer gradeId);
void deleteClass(Integer classId);
}

View File

@@ -70,4 +70,18 @@ public class ClassServiceImpl implements ClassService {
HashMap::new // 指定返回 HashMap
));
}
@Override
public void addClass(String className, Integer gradeId) {
ClassDO classDO = ClassDO.builder().title(className).build();
classDOMapper.insert(classDO);
Integer id = classDO.getId();
gradeClassDOMapper.insert(id, gradeId);
}
@Override
public void deleteClass(Integer classId) {
classDOMapper.delete(classId);
}
}

View File

@@ -1,6 +1,7 @@
package com.yinlihupo.enlish.service.service.grade;
import com.yinlihupo.enlish.service.domain.dataobject.GradeDO;
import com.yinlihupo.enlish.service.domain.mapper.GradeClassDOMapper;
import com.yinlihupo.enlish.service.domain.mapper.GradeDOMapper;
import com.yinlihupo.enlish.service.service.GradeService;
import jakarta.annotation.Resource;
@@ -13,6 +14,8 @@ public class GradeServiceImpl implements GradeService {
@Resource
private GradeDOMapper gradeDOMapper;
@Resource
private GradeClassDOMapper gradeClassDOMapper;
@Override
public GradeDO findByClassId(Integer classId) {
@@ -36,6 +39,12 @@ public class GradeServiceImpl implements GradeService {
@Override
public void delete(Integer id) {
gradeDOMapper.deleteById(id);
Integer classIds = gradeClassDOMapper.selectByGradeId(id);
if (classIds == null || classIds == 0) {
gradeDOMapper.deleteById(id);
} else {
throw new RuntimeException("请先删除与该年级关联的班级");
}
}
}

View File

@@ -32,5 +32,14 @@
</foreach>
</select>
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into `class`
(title)
values (#{title})
</insert>
<delete id="delete">
delete from `class`
where id = #{id}
</delete>
</mapper>

View File

@@ -6,12 +6,27 @@
<result column="class_id" jdbcType="INTEGER" property="classId" />
<result column="grade_id" jdbcType="INTEGER" property="gradeId" />
</resultMap>
<select id="selectByClassIds" resultMap="BaseResultMap">
select * from grade_class where class_id in
<foreach collection="classIds" item="classId" separator="," open="(" close=")">
#{classId}
</foreach>
</select>
<select id="selectByGradeId" resultType="java.lang.Integer">
select count(1)
from grade_class
where grade_id = #{gradeId}
</select>
<insert id="insert">
insert into grade_class
(class_id, grade_id)
values
(#{classId}, #{gradeId})
</insert>
<delete id="deleteByClassId">
delete from grade_class where class_id = #{classId}
</delete>
</mapper>