Explorar o código

add: 添加隐藏评测功能

weijin %!s(int64=4) %!d(string=hai) anos
pai
achega
53e6fb4d77

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

@@ -33,5 +33,5 @@ public interface ExamDao extends JpaRepository<Exam, Integer> {
      * 获得所有非隐藏的考试
      * @return 考试列表
      */
-    List<Exam> findByIsHiddenFalse();
+    List<Exam> findByIsHidden(Integer isHidden);
 }

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

@@ -85,7 +85,7 @@ public class Exam {
     @JoinColumn(name = "general_report_id")
     private GeneralReport generalReport;
 
-    private Boolean isHidden;
+    private Integer isHidden;
 
 //    private List<Question>
 

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

@@ -119,4 +119,11 @@ public interface ExamService {
      * @param name 考试名称
      */
     boolean updateExamName (Integer userId, Integer examId, String name);
+
+    /**
+     * 对学生隐藏或显示某次考试
+     * @param examId 考试Id
+     * @param hidden 是否隐藏
+     */
+    boolean setIsHidden (Integer userId, Integer examId, Integer hidden);
 }

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

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

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

@@ -51,7 +51,7 @@ public class ExamServiceImpl implements ExamService {
         Exam exam = new Exam(examVO.getExamName(), examVO.getPosition(),
                                                       examVO.getSkills(), examVO.getStartTime(),
                                                       examVO.getEndTime(), examVO.getComment(), user);
-        exam.setIsHidden(false);
+        exam.setIsHidden(0);
         // 只有非公开的考试才需要邀请码
         if (!examVO.getIsPublic()) {
             exam.setIsPublic(0);
@@ -76,10 +76,10 @@ public class ExamServiceImpl implements ExamService {
 //        List<ExamVO> examVOList = examEntities.get()
 //                .map(ExamConvertor::convertToVO).collect(Collectors.toList());
 //        return new ExamListAndNumVO(examVOList, (int) examEntities.getTotalElements());
-        List<Exam> exams = examDao.findByIsHiddenFalse();
+        List<Exam> exams = examDao.findByIsHidden(0);
         List<ExamVO> examVOList = exams.stream()
                 .sorted(Comparator.comparing(Exam::getStartTime).reversed())
-                .filter(exam -> !exam.getIsHidden())
+                .filter(exam -> exam.getIsHidden() == 0)
                 .skip(pageSize * (pageNum - 1)).limit(pageSize)
                 .map(ExamConvertor::convertToVO).collect(Collectors.toList());
         User user = userDao.findById(userId).orElse(null);
@@ -168,11 +168,11 @@ public class ExamServiceImpl implements ExamService {
                     exams.stream()
                             .sorted(Comparator.comparing(Exam::getStartTime).reversed())
                             .filter(exam -> state == 0 || exam.getState().ordinal() + 1 == state)
-                            .filter(exam -> !exam.getIsHidden())
+                            .filter(exam -> exam.getIsHidden() == 0)
                             .skip(pageSize * (pageNum - 1)).limit(pageSize)
                             .map(ExamConvertor::convertToJoinedVO).collect(Collectors.toList()),
                     //输出总个数,用于前端分页
-                    (int) exams.stream().filter(exam -> state == 0 || exam.getState().ordinal() + 1 == state).filter(exam -> !exam.getIsHidden()).count());
+                    (int) exams.stream().filter(exam -> state == 0 || exam.getState().ordinal() + 1 == state).filter(exam -> exam.getIsHidden() == 0).count());
         } else {
             throw new MyServiceException("A0201", "用户账号不存在");
         }
@@ -248,4 +248,17 @@ public class ExamServiceImpl implements ExamService {
         examDao.save(exam);
         return true;
     }
+
+    @Override
+    public boolean setIsHidden (Integer userId, Integer examId, Integer hidden){
+        Exam exam = examDao.findById(examId).orElse(null);
+        if (exam == null) {
+            throw new MyServiceException("A0201", "无对应的考试");
+        }
+
+        exam.setIsHidden(hidden);
+        examDao.save(exam);
+        return true;
+    }
+
 }

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

@@ -148,4 +148,14 @@ public class ExamController {
         //todo 暂时的接口,后面可扩展为更新考试信息
         return Response.buildSuccess(examService.updateExamName(user.getId(), examId, name));
     }
+
+    @ApiOperation("隐藏考试")
+    @PutMapping("/update/hidden")
+    @Authorized(roles = UserRole.TEACHER)
+    public Response setIsHidden(@ApiIgnore User user,
+                                @RequestParam(value = "examId", required = true) Integer examId,
+                                @RequestParam(value = "hidden", required = true) boolean hidden
+                                ) {
+        return Response.buildSuccess(examService.setIsHidden(user.getId(), examId, hidden?1:0));
+    }
 }