Преглед изворни кода

Merge branch 'feat/classXG' of FanYanPeng/EAI-Backend into refactor

BaiQi пре 1 година
родитељ
комит
92aa5da5bd

+ 0 - 1
application.yaml

@@ -101,4 +101,3 @@ springdoc:
     enabled: true
     path: /doc/swagger/swagger-ui.html
     packagesToScan: com.njuzr.eaibackend.controller
-

+ 23 - 0
src/main/java/com/njuzr/eaibackend/controller/ClassController.java

@@ -99,6 +99,29 @@ public class ClassController {
         }
     }
 
+    /**
+     * 根据学生ID和课程ID查询班级
+     * @param studentId 学生ID
+     * @param courseId 课程ID
+     * @return 班级信息
+     */
+    @GetMapping("/student/{studentId}/course/{courseId}")
+    public MyResponse getClassByStudentIdAndCourseId(
+            @PathVariable Long studentId,
+            @PathVariable Long courseId) {
+
+        try {
+            Class aClass = classService.getClassByStudentIdAndCourseId(studentId, courseId);
+            if (aClass == null) {
+                return MyResponse.error(404, "未找到对应的班级");
+            }
+            return MyResponse.success(aClass);
+        } catch (Exception e) {
+            log.error("查询班级失败", e);
+            return MyResponse.error(500, "服务器内部错误");
+        }
+    }
+
     /**
      * 批量删除班级中的学生
      * @param classId 班级ID

+ 6 - 0
src/main/java/com/njuzr/eaibackend/mapper/ClassStudentMapper.java

@@ -2,6 +2,7 @@ package com.njuzr.eaibackend.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.njuzr.eaibackend.po.ClassStudent;
+import com.njuzr.eaibackend.po.Class;
 import com.njuzr.eaibackend.vo.StudentInfoVO;
 import org.apache.ibatis.annotations.*;
 
@@ -21,6 +22,11 @@ public interface ClassStudentMapper extends BaseMapper<ClassStudent> {
             @Param("classId") Long classId,
             @Param("officialNumbers") List<String> officialNumbers);
 
+    /**
+     * 根据学生ID和课程ID查询班级
+     */
+    Class findClassByStudentIdAndCourseId(@Param("studentId") Long studentId, @Param("courseId") Long courseId);
+    
     @Select("SELECT u.id as student_id, cs.official_number, cs.stu_name, cs.state FROM class_student cs JOIN users u ON cs.official_number = u.official_number WHERE cs.class_id = #{classId}")
     @Results({
             @Result(property = "studentId", column = "student_id"),

+ 8 - 0
src/main/java/com/njuzr/eaibackend/service/ClassService.java

@@ -41,4 +41,12 @@ public interface ClassService {
     List<StudentInfoVO> getStudentsByClassId(Long classId);
 
     Class getClassById(Long classId);
+
+    /**
+     * 根据学生ID和课程ID查询班级
+     * @param studentId 学生ID
+     * @param courseId 课程ID
+     * @return 班级信息
+     */
+    Class getClassByStudentIdAndCourseId(Long studentId, Long courseId);
 }

+ 5 - 0
src/main/java/com/njuzr/eaibackend/service/impl/ClassServiceImpl.java

@@ -267,6 +267,11 @@ public class ClassServiceImpl implements ClassService {
         return courseClass;
     }
 
+    @Override
+    public Class getClassByStudentIdAndCourseId(Long studentId, Long courseId) {
+        return classStudentMapper.findClassByStudentIdAndCourseId(studentId, courseId);
+    }
+
     private List<ClassStudent> parseExcelFile(MultipartFile file, Long classId) throws IOException {
         List<ClassStudent> students = new ArrayList<>();
         Workbook workbook = new XSSFWorkbook(file.getInputStream());

+ 8 - 0
src/main/resources/mapper/ClassStudentMapper.xml

@@ -22,4 +22,12 @@
             #{number}
         </foreach>
     </delete>
+    <!-- 根据学生ID和课程ID查询班级 -->
+    <select id="findClassByStudentIdAndCourseId" resultType="com.njuzr.eaibackend.po.Class">
+        SELECT c.*
+        FROM class c
+        JOIN class_student cs ON c.class_id = cs.class_id
+        JOIN users u ON cs.official_number = u.official_number
+        WHERE u.id = #{studentId} AND c.course_id = #{courseId}
+    </select>
 </mapper>