From 0ad8edbac1d1970ccfc0470ecce0fe045fe92526 Mon Sep 17 00:00:00 2001 From: lbw <1192299468@qq.com> Date: Sun, 14 Dec 2025 16:51:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(student):=20=E6=96=B0=E5=A2=9E=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=9C=8D=E5=8A=A1=E5=B1=82=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化ClassDOMapper,重命名查询方法为selectClassDOById,并移除多余CRUD方法 - 新增ClassService接口及ClassServiceImpl实现,用于通过ID查询班级信息 - 新增GradeDO及GradeDOMapper,实现根据班级ID查询年级信息 - 新增GradeService接口及GradeServiceImpl实现根据班级ID查询年级数据 - StudentDO增加isDeleted和startTime字段,补充学生实体 - StudentDOMapper新增selectStudentById方法实现单个学生信息查询 - StudentService及其实现类新增getStudentById方法提供学生单条数据查询 - StudentController新增/detail接口,实现学生详情查询,返回学生姓名、班级、年级等信息 - 创建FindStudentDetailReqVO和FindStudentDetailRspVO用于请求和响应数据传输 - enlish-vue端新增getStudentDetail接口调用 后台学生详情接口 - 修改ExamWordsDetailCard组件,展示学生姓名及其班级、年级信息,新增fetchStudent异步方法拉取学生详情数据并显示 --- .../service/controller/StudentController.java | 31 +++++++++- .../service/domain/dataobject/GradeDO.java | 22 +++++++ .../service/domain/dataobject/StudentDO.java | 6 ++ .../service/domain/mapper/ClassDOMapper.java | 12 +--- .../service/domain/mapper/GradeDOMapper.java | 8 +++ .../domain/mapper/StudentDOMapper.java | 2 + .../vo/student/FindStudentDetailReqVO.java | 15 +++++ .../vo/student/FindStudentDetailRspVO.java | 18 ++++++ .../enlish/service/service/ClassService.java | 8 +++ .../enlish/service/service/GradeService.java | 8 +++ .../service/service/StudentService.java | 2 + .../service/classs/ClassServiceImpl.java | 19 +++++++ .../service/grade/GradeServiceImpl.java | 19 +++++++ .../service/student/StudentServiceImpl.java | 5 ++ .../src/main/resources/generatorConfig.xml | 2 +- .../main/resources/mapper/ClassDOMapper.xml | 57 ++----------------- .../main/resources/mapper/GradeDOMapper.xml | 16 ++++++ .../main/resources/mapper/StudentDOMapper.xml | 12 ++-- enlish-vue/src/api/student.js | 7 +++ .../components/ExamWordsDetailCard.vue | 20 ++++++- 20 files changed, 217 insertions(+), 72 deletions(-) create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/GradeDO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailReqVO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailRspVO.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java create mode 100644 enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java create mode 100644 enlish-service/src/main/resources/mapper/GradeDOMapper.xml create mode 100644 enlish-vue/src/api/student.js diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentController.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentController.java index 67268bc..64935e0 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentController.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/controller/StudentController.java @@ -1,12 +1,19 @@ 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.domain.dataobject.StudentDO; +import com.yinlihupo.enlish.service.model.vo.student.FindStudentDetailReqVO; +import com.yinlihupo.enlish.service.model.vo.student.FindStudentDetailRspVO; import com.yinlihupo.enlish.service.model.vo.student.FindStudentsReqVO; import com.yinlihupo.enlish.service.model.vo.student.StudentItemRspVO; +import com.yinlihupo.enlish.service.service.ClassService; +import com.yinlihupo.enlish.service.service.GradeService; import com.yinlihupo.enlish.service.service.StudentService; import com.yinlihupo.framework.biz.operationlog.aspect.ApiOperationLog; import com.yinlihupo.framework.common.response.PageResponse; +import com.yinlihupo.framework.common.response.Response; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -21,7 +28,10 @@ public class StudentController { @Resource private StudentService studentService; - + @Resource + private ClassService classService; + @Resource + private GradeService gradeService; @PostMapping("/list") @ApiOperationLog(description = "查询学生列表") @@ -44,4 +54,23 @@ public class StudentController { return PageResponse.success(studentItemRspVOS, pageNo, allStudents, pageSize); } + + @PostMapping("/detail") + @ApiOperationLog(description = "查询学生详情") + public Response findStudentDetail(@RequestBody FindStudentDetailReqVO findStudentDetailReqVO) { + Integer studentId = findStudentDetailReqVO.getStudentId(); + + StudentDO studentById = studentService.getStudentById(studentId); + ClassDO classById = classService.findClassById(studentById.getClassId()); + GradeDO byClassId = gradeService.findByClassId(studentById.getGradeId()); + + FindStudentDetailRspVO findStudentDetailRspVO = FindStudentDetailRspVO.builder() + .id(studentById.getId()) + .name(studentById.getName()) + .className(classById.getTitle()) + .gradeName(byClassId.getTitle()) + .build(); + + return Response.success(findStudentDetailRspVO); + } } diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/GradeDO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/GradeDO.java new file mode 100644 index 0000000..38d4bc3 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/GradeDO.java @@ -0,0 +1,22 @@ +package com.yinlihupo.enlish.service.domain.dataobject; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class GradeDO { + + private Integer id; + + private String title; + + private Date time; + +} \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentDO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentDO.java index 96a4a11..a570de8 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentDO.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/dataobject/StudentDO.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDateTime; + @AllArgsConstructor @NoArgsConstructor @Data @@ -19,6 +21,10 @@ public class StudentDO { private Integer gradeId; + private Integer isDeleted; + + private LocalDateTime startTime; + private Integer initialVocabularySize; private Integer currentVocabularySize; 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 b73cc57..c0cf631 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 @@ -4,15 +4,5 @@ import com.yinlihupo.enlish.service.domain.dataobject.ClassDO; public interface ClassDOMapper { - int deleteByPrimaryKey(Integer id); - - int insert(ClassDO record); - - int insertSelective(ClassDO record); - - ClassDO selectByPrimaryKey(Integer id); - - int updateByPrimaryKeySelective(ClassDO record); - - int updateByPrimaryKey(ClassDO record); + ClassDO selectClassDOById(Integer id); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java new file mode 100644 index 0000000..0f3b6c0 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/GradeDOMapper.java @@ -0,0 +1,8 @@ +package com.yinlihupo.enlish.service.domain.mapper; + +import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; + +public interface GradeDOMapper { + + GradeDO selectById(Integer id); +} \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentDOMapper.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentDOMapper.java index f1f04aa..6e33489 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentDOMapper.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/domain/mapper/StudentDOMapper.java @@ -9,4 +9,6 @@ public interface StudentDOMapper { List selectStudentDOListByClassIdAndGradeId(Integer classId, Integer gradeId, Integer pageSize, Integer offset); int selectStudentCount(); + + StudentDO selectStudentById(Integer id); } \ No newline at end of file diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailReqVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailReqVO.java new file mode 100644 index 0000000..fb2a678 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailReqVO.java @@ -0,0 +1,15 @@ +package com.yinlihupo.enlish.service.model.vo.student; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindStudentDetailReqVO { + + private Integer studentId; +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailRspVO.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailRspVO.java new file mode 100644 index 0000000..21dd87a --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/model/vo/student/FindStudentDetailRspVO.java @@ -0,0 +1,18 @@ +package com.yinlihupo.enlish.service.model.vo.student; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class FindStudentDetailRspVO { + + private Integer id; + private String name; + private String className; + private String gradeName; +} 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 new file mode 100644 index 0000000..f2bcd11 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/ClassService.java @@ -0,0 +1,8 @@ +package com.yinlihupo.enlish.service.service; + +import com.yinlihupo.enlish.service.domain.dataobject.ClassDO; + +public interface ClassService { + + ClassDO findClassById(Integer id); +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java new file mode 100644 index 0000000..af8afac --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/GradeService.java @@ -0,0 +1,8 @@ +package com.yinlihupo.enlish.service.service; + +import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; + +public interface GradeService { + + GradeDO findByClassId(Integer classId); +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentService.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentService.java index 7f3311b..dbc1637 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentService.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/StudentService.java @@ -10,4 +10,6 @@ public interface StudentService { List getStudentsByClassIdAndGradeId(Integer classId, Integer gradeId, Integer pageNo, Integer pageSize); int getAllStudents(); + + StudentDO getStudentById(Integer studentId); } 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 new file mode 100644 index 0000000..5c80cef --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/classs/ClassServiceImpl.java @@ -0,0 +1,19 @@ +package com.yinlihupo.enlish.service.service.classs; + +import com.yinlihupo.enlish.service.domain.dataobject.ClassDO; +import com.yinlihupo.enlish.service.domain.mapper.ClassDOMapper; +import com.yinlihupo.enlish.service.service.ClassService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +@Service +public class ClassServiceImpl implements ClassService { + + @Resource + private ClassDOMapper classDOMapper; + + @Override + public ClassDO findClassById(Integer id) { + return classDOMapper.selectClassDOById(id); + } +} 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 new file mode 100644 index 0000000..4baf4e7 --- /dev/null +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/grade/GradeServiceImpl.java @@ -0,0 +1,19 @@ +package com.yinlihupo.enlish.service.service.grade; + +import com.yinlihupo.enlish.service.domain.dataobject.GradeDO; +import com.yinlihupo.enlish.service.domain.mapper.GradeDOMapper; +import com.yinlihupo.enlish.service.service.GradeService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +@Service +public class GradeServiceImpl implements GradeService { + + @Resource + private GradeDOMapper gradeDOMapper; + + @Override + public GradeDO findByClassId(Integer classId) { + return gradeDOMapper.selectById(classId); + } +} diff --git a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/student/StudentServiceImpl.java b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/student/StudentServiceImpl.java index 6ec2b64..e8d3aeb 100644 --- a/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/student/StudentServiceImpl.java +++ b/enlish-service/src/main/java/com/yinlihupo/enlish/service/service/student/StudentServiceImpl.java @@ -25,4 +25,9 @@ public class StudentServiceImpl implements StudentService { public int getAllStudents() { return studentDOMapper.selectStudentCount(); } + + @Override + public StudentDO getStudentById(Integer studentId) { + return studentDOMapper.selectStudentById(studentId); + } } diff --git a/enlish-service/src/main/resources/generatorConfig.xml b/enlish-service/src/main/resources/generatorConfig.xml index ea6a92a..de0fc67 100644 --- a/enlish-service/src/main/resources/generatorConfig.xml +++ b/enlish-service/src/main/resources/generatorConfig.xml @@ -45,7 +45,7 @@ targetProject="src/main/java"/> - - - id, title - - - + select * + from `class` + where id = #{id} - - delete from class - where id = #{id,jdbcType=INTEGER} - - - insert into class (id, title) - values (#{id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}) - - - - insert into class - - - id, - - - title, - - - - - #{id,jdbcType=INTEGER}, - - - #{title,jdbcType=VARCHAR}, - - - - - - update class - - - title = #{title,jdbcType=VARCHAR}, - - - where id = #{id,jdbcType=INTEGER} - - - - update class - set title = #{title,jdbcType=VARCHAR} - where id = #{id,jdbcType=INTEGER} - \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/GradeDOMapper.xml b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml new file mode 100644 index 0000000..9fa2e03 --- /dev/null +++ b/enlish-service/src/main/resources/mapper/GradeDOMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/enlish-service/src/main/resources/mapper/StudentDOMapper.xml b/enlish-service/src/main/resources/mapper/StudentDOMapper.xml index 613aeac..c86b656 100644 --- a/enlish-service/src/main/resources/mapper/StudentDOMapper.xml +++ b/enlish-service/src/main/resources/mapper/StudentDOMapper.xml @@ -8,12 +8,10 @@ + + - - id, `name`, class_id, grade_id, initial_vocabulary_size, current_vocabulary_size - - + + \ No newline at end of file diff --git a/enlish-vue/src/api/student.js b/enlish-vue/src/api/student.js new file mode 100644 index 0000000..7e0015f --- /dev/null +++ b/enlish-vue/src/api/student.js @@ -0,0 +1,7 @@ +import axios from "@/axios"; + +export function getStudentDetail(id) { + return axios.post('/student/detail', { + studentId: id + }) +} \ No newline at end of file diff --git a/enlish-vue/src/layouts/components/ExamWordsDetailCard.vue b/enlish-vue/src/layouts/components/ExamWordsDetailCard.vue index ca3f5c1..e90a81b 100644 --- a/enlish-vue/src/layouts/components/ExamWordsDetailCard.vue +++ b/enlish-vue/src/layouts/components/ExamWordsDetailCard.vue @@ -8,8 +8,13 @@
{{ detail?.id ?? '-' }}
-
学生ID
-
{{ detail?.studentId ?? '-' }}
+
学生
+
+ {{ studentDetail?.name ?? '-' }} +
+
+ 班级:{{ studentDetail?.className ?? '-' }} 年级:{{ studentDetail?.gradeName ?? '-' }} +
试题ID
@@ -76,6 +81,7 @@