فهرست منبع

feat: 增加按课程推荐测试

weijin 4 سال پیش
والد
کامیت
08e025ac94

+ 6 - 0
src/main/java/com/nju/edu/eval/service/ExamService.java

@@ -132,6 +132,12 @@ public interface ExamService {
      */
     List<ExamInfoVO> getRecommendExam ();
 
+    /**
+     * 根据课程id获取推荐的考试
+     * @param courseId 课程id
+     */
+    List<ExamInfoVO> getRecommendExam (Integer courseId);
+
     /**
      * 教师根据课程获取考试列表
      * @param courseId 课程id

+ 19 - 8
src/main/java/com/nju/edu/eval/service/serviceImpl/ExamServiceImpl.java

@@ -283,16 +283,27 @@ public class ExamServiceImpl implements ExamService {
 
     @Override
     public List<ExamInfoVO> getRecommendExam() {
+        //todo 目前只是推荐最晚开始的开放测试
         List<Exam> examList = examDao.findAllByIsHidden(0);
-        if(examList.size() > 8) {
-            return examList.stream()
-                    .sorted(Comparator.comparing(Exam::getStartTime).reversed())
-                    .map(ExamConvertor::convertToExamInfoVO).collect(Collectors.toList()).subList(0, 8);
-        } else {
-            return examList.stream()
-                    .sorted(Comparator.comparing(Exam::getStartTime).reversed())
-                    .map(ExamConvertor::convertToExamInfoVO).collect(Collectors.toList());
+        return examList.stream()
+                .filter(exam -> exam.getCourse().getIsPublic() == 1)
+                .sorted(Comparator.comparing(Exam::getStartTime).reversed()).limit(8)
+                .map(ExamConvertor::convertToExamInfoVO).collect(Collectors.toList());
+    }
+
+    @Override
+    public List<ExamInfoVO> getRecommendExam(Integer courseId) {
+        Course course = courseDao.findById(courseId).orElse(null);
+        if(course == null) {
+            throw new MyServiceException("A0201", "无对应的课程");
+        } else if(course.getIsPublic() == 0) {
+            throw new MyServiceException("A0201", "对应课程是私有课程无法推荐");
         }
+        //todo 目前只是推荐最晚开始的开放测试
+        List<Exam> examList = examDao.findAllByCourseId(courseId);
+        return examList.stream()
+                .sorted(Comparator.comparing(Exam::getStartTime).reversed()).limit(8)
+                .map(ExamConvertor::convertToExamInfoVO).collect(Collectors.toList());
     }
 
     @Override

+ 6 - 0
src/main/java/com/nju/edu/eval/web/controller/ExamController.java

@@ -165,6 +165,12 @@ public class ExamController {
         return Response.buildSuccess(examService.getRecommendExam());
     }
 
+    @ApiOperation("获取考试推荐")
+    @GetMapping("/recommend/{courseId}")
+    public Response getRecommendExam(@PathVariable Integer courseId) {
+        return Response.buildSuccess(examService.getRecommendExam(courseId));
+    }
+
     @ApiOperation("教师根据课程获取考试列表")
     @GetMapping("/teacher/course/{courseId}")
     @Authorized(roles = {UserRole.TEACHER, UserRole.HR})