浏览代码

add: 增加学生端限制只显示不隐藏的考试

weijin 4 年之前
父节点
当前提交
7ecc8a814e

+ 6 - 0
src/main/java/com/nju/edu/eval/data/dao/ExamDao.java

@@ -28,4 +28,10 @@ public interface ExamDao extends JpaRepository<Exam, Integer> {
      */
 
     List<Exam> findAllByStartTimeBetweenOrderByStartTime(Date startTime, Date endTime);
+
+    /**
+     * 获得所有非隐藏的考试
+     * @return 考试列表
+     */
+    List<Exam> findByIsHiddenFalse();
 }

+ 2 - 0
src/main/java/com/nju/edu/eval/data/entity/Exam.java

@@ -85,6 +85,8 @@ public class Exam {
     @JoinColumn(name = "general_report_id")
     private GeneralReport generalReport;
 
+    private Boolean isHidden;
+
 //    private List<Question>
 
     public Exam(String examName, String position, List<String> skills, Date startTime, Date endTime, String comment, User user) {

+ 2 - 0
src/main/java/com/nju/edu/eval/model/vo/exam/ExamVO.java

@@ -50,4 +50,6 @@ public class ExamVO {
      * 是否需要邀请码加入
      */
     private Boolean isPublic;
+
+    private Boolean isHidden;
 }

+ 1 - 0
src/main/java/com/nju/edu/eval/service/convertor/ExamConvertor.java

@@ -35,6 +35,7 @@ public class ExamConvertor {
         examVO.setAntiCheating(exam.getAntiCheating() == 1);
         examVO.setIsPublic(exam.getIsPublic() == 1);
         examVO.setIsJoined(true);
+        examVO.setIsHidden(exam.getIsHidden());
         return examVO;
     }
 

+ 14 - 5
src/main/java/com/nju/edu/eval/service/serviceImpl/ExamServiceImpl.java

@@ -71,9 +71,16 @@ public class ExamServiceImpl implements ExamService {
 
     @Override
     public ExamListAndNumVO getExamList(int userId, int pageSize, int pageNum) {
-        Page<Exam> examEntities = examDao.findAll(PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.DESC, "startTime")));
-        List<ExamVO> examVOList = examEntities.get()
-                .map(ExamConvertor::convertToVO).collect(Collectors.toList());
+//        Page<Exam> examEntities = examDao.findAll(PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.DESC, "startTime")));
+//        List<ExamVO> examVOList = examEntities.get()
+//                .map(ExamConvertor::convertToVO).collect(Collectors.toList());
+//        return new ExamListAndNumVO(examVOList, (int) examEntities.getTotalElements());
+        List<Exam> exams = examDao.findByIsHiddenFalse();
+        List<ExamVO> examVOList = exams.stream()
+                .sorted(Comparator.comparing(Exam::getStartTime).reversed())
+                .filter(exam -> !exam.getIsHidden())
+                .skip(pageSize * (pageNum - 1)).limit(pageSize)
+                .map(ExamConvertor::convertToJoinedVO).collect(Collectors.toList());
         User user = userDao.findById(userId).orElse(null);
         List<Exam> currentUserExams = user.getExams();
         for (ExamVO examVO : examVOList) {
@@ -82,7 +89,7 @@ public class ExamServiceImpl implements ExamService {
                 examVO.setIsJoined(true);
             }
         }
-        return new ExamListAndNumVO(examVOList, (int) examEntities.getTotalElements());
+        return new ExamListAndNumVO(examVOList, (int) exams.size());
     }
 
     @Override
@@ -157,8 +164,10 @@ public class ExamServiceImpl implements ExamService {
             List<Exam> exams = student.getExams();
 
             return new ExamListAndNumVO(
-                    exams.stream().sorted(Comparator.comparing(Exam::getStartTime).reversed())
+                    exams.stream()
+                            .sorted(Comparator.comparing(Exam::getStartTime).reversed())
                             .filter(exam -> state == 0 || exam.getState().ordinal() + 1 == state)
+                            .filter(exam -> !exam.getIsHidden())
                             .skip(pageSize * (pageNum - 1)).limit(pageSize)
                             .map(ExamConvertor::convertToJoinedVO).collect(Collectors.toList()),
                     //输出总个数,用于前端分页

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

@@ -58,7 +58,7 @@ public class ExamController {
     public Response getExamList(@ApiIgnore User user,
                                 @RequestParam(value = "pageSize") int pageSize,
                                 @RequestParam(value = "pageNum") int pageNum) {
-        return Response.buildSuccess(examService.getExamList(user.getId(), pageSize, pageNum-1));
+        return Response.buildSuccess(examService.getExamList(user.getId(), pageSize, pageNum));
     }
 
     @ApiOperation("获得开始时间在某个时间段内的考试")