From 7aebff5f6ab64ecd77f2dd064aa2144f02f012bb Mon Sep 17 00:00:00 2001 From: lbw <1192299468@qq.com> Date: Mon, 15 Dec 2025 15:25:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(class):=20=E6=B7=BB=E5=8A=A0=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在班级列表表格中新增“操作”列,添加删除按钮 - 实现删除班级的接口调用逻辑 - 删除成功后刷新班级列表 - 删除当前选中班级时清空选中状态 - 添加成功和失败的用户提示信息 --- .../service/controller/ClassController.java | 14 +++ .../service/domain/mapper/ClassDOMapper.java | 4 + .../domain/mapper/GradeClassDOMapper.java | 6 ++ .../model/vo/classs/AddClassReqVO.java | 16 ++++ .../model/vo/classs/DeleteClassReqVO.java | 15 ++++ .../enlish/service/service/ClassService.java | 4 + .../service/classs/ClassServiceImpl.java | 14 +++ .../service/grade/GradeServiceImpl.java | 11 ++- .../main/resources/mapper/ClassDOMapper.xml | 9 ++ .../resources/mapper/GradeClassDOMapper.xml | 17 +++- enlish-vue/src/api/class.js | 13 +++ .../src/layouts/components/AddClassDialog.vue | 86 +++++++++++++++++++ enlish-vue/src/pages/class.vue | 57 ++++++++---- 13 files changed, 245 insertions(+), 21 deletions(-) create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/AddClassReqVO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/DeleteClassReqVO.java create mode 100644 enlish-vue/src/layouts/components/AddClassDialog.vue diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ClassController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ClassController.java index 80b5f31..983ca5d 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ClassController.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/ClassController.java @@ -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()); + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ClassDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ClassDOMapper.java index f921018..7a2259a 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ClassDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/ClassDOMapper.java @@ -14,4 +14,8 @@ public interface ClassDOMapper { Integer selectClassDOCount(); List selectClassDOListByIds(@Param("classIds") List classIds); + + void insert(ClassDO classDO); + + void delete(@Param("id") Integer id); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeClassDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeClassDOMapper.java index 3ff3f68..93817e5 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeClassDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeClassDOMapper.java @@ -7,4 +7,10 @@ import java.util.List; public interface GradeClassDOMapper { List selectByClassIds(@Param("classIds") List classIds); + + void insert(@Param("classId") Integer classId, @Param("gradeId") Integer gradeId); + + void deleteByClassId(@Param("classId") Integer classId); + + Integer selectByGradeId(@Param("gradeId") Integer gradeId); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/AddClassReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/AddClassReqVO.java new file mode 100644 index 0000000..7abe156 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/AddClassReqVO.java @@ -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; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/DeleteClassReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/DeleteClassReqVO.java new file mode 100644 index 0000000..20ed2a2 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/classs/DeleteClassReqVO.java @@ -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; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java index 0cc0e2d..02620a4 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java @@ -15,4 +15,8 @@ public interface ClassService { int getClassCount(); Map findClassIds2GradeMap(List classIds); + + void addClass(String className, Integer gradeId); + + void deleteClass(Integer classId); } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java index 7220f38..c7eed27 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java @@ -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); + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java index 4b35ff3..75e230e 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java @@ -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("请先删除与该年级关联的班级"); + } } } diff --git a/enlish-service/src/main/resources/mapper/ClassDOMapper.xml b/enlish-service/src/main/resources/mapper/ClassDOMapper.xml index d8ae0e5..e144b0a 100644 --- a/enlish-service/src/main/resources/mapper/ClassDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/ClassDOMapper.xml @@ -32,5 +32,14 @@ + + insert into `class` + (title) + values (#{title}) + + + delete from `class` + where id = #{id} + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/GradeClassDOMapper.xml b/enlish-service/src/main/resources/mapper/GradeClassDOMapper.xml index 26027b5..67b1060 100644 --- a/enlish-service/src/main/resources/mapper/GradeClassDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/GradeClassDOMapper.xml @@ -6,12 +6,27 @@ - + + + + insert into grade_class + (class_id, grade_id) + values + (#{classId}, #{gradeId}) + + + + delete from grade_class where class_id = #{classId} + \ No newline at end of file diff --git a/enlish-vue/src/api/class.js b/enlish-vue/src/api/class.js index 67051a4..1bdf969 100644 --- a/enlish-vue/src/api/class.js +++ b/enlish-vue/src/api/class.js @@ -5,4 +5,17 @@ export function getClassList(page, size) { page: page, pageSize: size }) +} + +export function addClass(name, gradeId) { + return axios.post('/class/add', { + title: name, + gradeId: gradeId + }) +} + +export function deleteClass(id) { + return axios.post('/class/delete', { + id: id + }) } \ No newline at end of file diff --git a/enlish-vue/src/layouts/components/AddClassDialog.vue b/enlish-vue/src/layouts/components/AddClassDialog.vue new file mode 100644 index 0000000..f6653a2 --- /dev/null +++ b/enlish-vue/src/layouts/components/AddClassDialog.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/enlish-vue/src/pages/class.vue b/enlish-vue/src/pages/class.vue index 75ea8a5..6b5b36d 100644 --- a/enlish-vue/src/pages/class.vue +++ b/enlish-vue/src/pages/class.vue @@ -16,12 +16,22 @@ + + +
+
+ 新增班级 +
+ @@ -35,18 +45,13 @@ selectedGradeId }}) 查询 重置 - + 生成试题 - + @@ -58,22 +63,20 @@ :total="studentTotalCount" :page-size="studentPageSize" :current-page="studentPageNo" @current-change="handleStudentPageChange" @size-change="handleStudentSizeChange" /> - +
年级列表
- + @@ -98,10 +101,11 @@