ソースを参照

fix : 对未关闭的测试学生可以得到答案

XuShengTao 6 年 前
コミット
d1ce17c7cc

+ 6 - 1
src/main/java/nju/seec/helper/controller/QuizController.java

@@ -74,7 +74,12 @@ public class QuizController {
     @Auth(roles = {UserType.STUDENT,UserType.TEACHER}, message = "获得某一测试的详细内容")
     @GetMapping("/{quizId}")
     public QuizVO GetOneQuiz(LoginUser user, @PathVariable("quizId") String quizId) {
-        return quizService.combineQuizWithAnswer(Long.valueOf(quizId),user.getId(),user.getType());
+        QuizVO quizVO = quizService.combineQuizWithAnswer(Long.valueOf(quizId), user.getId(), user.getType());
+
+        if(user.getType().equals(UserType.STUDENT)&&!quizVO.getState().equals(QuizState.CLOSED)){
+            quizVO.excludeCorrectAnswer();
+        }
+        return quizVO;
     }
 
     /**

+ 7 - 0
src/main/java/nju/seec/helper/vo/quiz/ChoiceQuestionVO.java

@@ -37,6 +37,13 @@ public class ChoiceQuestionVO extends QuestionVO{
         if(answer==null){return false;}
         return this.answer.toLowerCase().equals(answer.toString().toLowerCase());
     }
+
+    @Override
+    public void excludeCorrectAnswer() {
+        this.answer=null;
+        this.pass=null;
+        this.analysis=null;
+    }
 }
 //kind: "CHOICE";
 //  options: {

+ 1 - 0
src/main/java/nju/seec/helper/vo/quiz/QuestionVO.java

@@ -33,6 +33,7 @@ public abstract class QuestionVO {
     private String stem;
     public abstract void exAddAnswer(QuizStudentAnswer answer);
     public abstract boolean checkAnswer(Object answer);
+    public abstract void excludeCorrectAnswer();
     private static ObjectMapper objectMapper = new ObjectMapper();
     public static QuestionVO parse(Map question){
         String kind = (String)question.get("kind");

+ 3 - 0
src/main/java/nju/seec/helper/vo/quiz/QuizVO.java

@@ -58,6 +58,9 @@ public class QuizVO {
         this.slide = new SlideVO(quiz.getSlide());
         this.questionNumber = quiz.getQuestions().size();
     }
+    public void excludeCorrectAnswer(){
+        questions.forEach(QuestionVO::excludeCorrectAnswer);
+    }
 }
 // http://47.100.18.120:3000/SEEC-BOK/API-DOC/src/master/helper/serializer/QuizSerializer.md
 // /** 已实现的枚举类 */

+ 6 - 0
src/main/java/nju/seec/helper/vo/quiz/TrueOrFalseQuestionVO.java

@@ -34,4 +34,10 @@ public class TrueOrFalseQuestionVO extends QuestionVO{
         if(answer==null){return false;}
         return this.answer.toString().toLowerCase().equals(answer.toString().toLowerCase());
     }
+    @Override
+    public void excludeCorrectAnswer() {
+        this.answer=null;
+        this.pass=null;
+        this.analysis=null;
+    }
 }