Переглянути джерело

merge findExamQuestionList api

deason 3 роки тому
батько
коміт
073a9af30e

+ 2 - 34
examcloud-core-oe-student-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/student/api/controller/ExamQuestionController.java

@@ -1,14 +1,9 @@
 package cn.com.qmth.examcloud.core.oe.student.api.controller;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.core.oe.student.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.student.bean.ExamStudentQuestionInfo;
 import cn.com.qmth.examcloud.core.oe.student.service.ExamRecordQuestionsService;
-import cn.com.qmth.examcloud.core.oe.student.service.ExamingSessionService;
-import cn.com.qmth.examcloud.support.examing.*;
-import cn.com.qmth.examcloud.support.redis.RedisKeyHelper;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
+import cn.com.qmth.examcloud.support.examing.ExamQuestion;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,12 +27,6 @@ public class ExamQuestionController extends ControllerSupport {
     @Autowired
     private ExamRecordQuestionsService examRecordQuestionsService;
 
-    @Autowired
-    private ExamingSessionService examingSessionService;
-
-    @Autowired
-    private RedisClient redisClient;
-
     /**
      * 将mongodb中的答过的题和redis中的题目列表合并返回给前端
      * 返回给前端时注意将正确答案和得分置成null
@@ -48,27 +37,7 @@ public class ExamQuestionController extends ControllerSupport {
     @GetMapping("/findExamQuestionList")
     public List<ExamQuestion> findExamQuestionList() {
         User user = getAccessUser();
-        ExamingSession examSessionInfo = examingSessionService.getExamingSession(user.getUserId());
-        if (examSessionInfo == null
-                || examSessionInfo.getExamingStatus().equals(ExamingStatus.INFORMAL)) {
-            throw new StatusException("1001", "考试会话已过期,请重新开考");
-        }
-
-        String examingHeartbeatKey = RedisKeyHelper.getBuilder().examingHeartbeatKey(examSessionInfo.getExamRecordDataId());
-        ExamingHeartbeat examingHeartbeat = redisClient.get(examingHeartbeatKey, ExamingHeartbeat.class);
-
-        if (null != examingHeartbeat
-                && examingHeartbeat.getCost() >= examSessionInfo.getExamDuration()) {
-            throw new StatusException("1001", "考试会话已过期,请重新开考");
-        }
-
-        ExamRecordQuestions qers = examRecordQuestionsService.getExamRecordQuestions(examSessionInfo.getExamRecordDataId());
-        List<ExamQuestion> examQuestionList = qers.getExamQuestions();
-        for (ExamQuestion examQuestion : examQuestionList) {
-            examQuestion.setCorrectAnswer(null);
-            examQuestion.setStudentScore(null);
-        }
-        return examQuestionList;
+        return examRecordQuestionsService.findExamQuestionList(user.getUserId());
     }
 
     /**
@@ -81,7 +50,6 @@ public class ExamQuestionController extends ControllerSupport {
     @GetMapping("/getQuestionContent")
     public String getQuestionContent(@RequestParam String questionId) {
         User user = getAccessUser();
-        Check.isBlank(questionId, "questionId不能为空");
         return examRecordQuestionsService.getQuestionContent(user.getUserId(), questionId);
     }
 

+ 4 - 24
examcloud-core-oe-student-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/student/api/controller/client/ExamProcessController.java

@@ -1,12 +1,12 @@
 package cn.com.qmth.examcloud.core.oe.student.api.controller.client;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.oe.student.bean.*;
 import cn.com.qmth.examcloud.core.oe.student.service.*;
 import cn.com.qmth.examcloud.support.Constants;
-import cn.com.qmth.examcloud.support.examing.*;
-import cn.com.qmth.examcloud.support.redis.RedisKeyHelper;
+import cn.com.qmth.examcloud.support.examing.ExamQuestion;
+import cn.com.qmth.examcloud.support.examing.ExamRecordPaperStruct;
+import cn.com.qmth.examcloud.support.examing.ExamingSession;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
@@ -97,27 +97,7 @@ public class ExamProcessController extends ControllerSupport {
     @PostMapping("/findExamQuestionList")
     public List<ExamQuestion> findExamQuestionList() {
         User user = getAccessUser();
-        ExamingSession examSessionInfo = examingSessionService.getExamingSession(user.getUserId());
-        if (examSessionInfo == null
-                || examSessionInfo.getExamingStatus().equals(ExamingStatus.INFORMAL)) {
-            throw new StatusException("1001", "考试会话已过期,请重新开考");
-        }
-
-        String examingHeartbeatKey = RedisKeyHelper.getBuilder().examingHeartbeatKey(examSessionInfo.getExamRecordDataId());
-        ExamingHeartbeat examingHeartbeat = redisClient.get(examingHeartbeatKey, ExamingHeartbeat.class);
-
-        if (null != examingHeartbeat
-                && examingHeartbeat.getCost() >= examSessionInfo.getExamDuration()) {
-            throw new StatusException("1001", "考试会话已过期,请重新开考");
-        }
-
-        ExamRecordQuestions qers = examRecordQuestionsService.getExamRecordQuestions(examSessionInfo.getExamRecordDataId());
-        List<ExamQuestion> examQuestionList = qers.getExamQuestions();
-        for (ExamQuestion examQuestion : examQuestionList) {
-            examQuestion.setCorrectAnswer(null);
-            examQuestion.setStudentScore(null);
-        }
-        return examQuestionList;
+        return examRecordQuestionsService.findExamQuestionList(user.getUserId());
     }
 
     @ApiOperation(value = "考试过程中-获取试题内容")

+ 2 - 0
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/ExamRecordQuestionsService.java

@@ -36,6 +36,8 @@ public interface ExamRecordQuestionsService {
 
     ExamRecordQuestions createExamRecordQuestions(Long examRecordDataId, DefaultPaper defaultPaper);
 
+    List<ExamQuestion> findExamQuestionList(Long studentId);
+
     ExamRecordQuestions getExamRecordQuestions(Long examRecordDataId);
 
     String getQuestionContent(Long studentId, String questionId);

+ 25 - 0
examcloud-core-oe-student-service/src/main/java/cn/com/qmth/examcloud/core/oe/student/service/impl/ExamRecordQuestionsServiceImpl.java

@@ -128,6 +128,29 @@ public class ExamRecordQuestionsServiceImpl implements ExamRecordQuestionsServic
         return examRecordQuestions;
     }
 
+    @Override
+    public List<ExamQuestion> findExamQuestionList(Long studentId) {
+        ExamingSession examSessionInfo = examingSessionService.getExamingSession(studentId);
+        if (examSessionInfo == null || examSessionInfo.getExamingStatus().equals(ExamingStatus.INFORMAL)) {
+            throw new StatusException("1001", "考试会话已过期,请重新开考");
+        }
+
+        String examingHeartbeatKey = RedisKeyHelper.getBuilder().examingHeartbeatKey(examSessionInfo.getExamRecordDataId());
+        ExamingHeartbeat examingHeartbeat = redisClient.get(examingHeartbeatKey, ExamingHeartbeat.class);
+        if (null != examingHeartbeat
+                && examingHeartbeat.getCost() >= examSessionInfo.getExamDuration()) {
+            throw new StatusException("1001", "考试会话已过期,请重新开考");
+        }
+
+        ExamRecordQuestions recordQuestions = this.getExamRecordQuestions(examSessionInfo.getExamRecordDataId());
+        List<ExamQuestion> examQuestionList = recordQuestions.getExamQuestions();
+        for (ExamQuestion examQuestion : examQuestionList) {
+            examQuestion.setCorrectAnswer(null);
+            examQuestion.setStudentScore(null);
+        }
+        return examQuestionList;
+    }
+
     @Override
     public ExamRecordQuestions getExamRecordQuestions(Long examRecordDataId) {
         ExamRecordData ed = examRecordDataService.getExamRecordDataCache(examRecordDataId);
@@ -155,6 +178,8 @@ public class ExamRecordQuestionsServiceImpl implements ExamRecordQuestionsServic
 
     @Override
     public String getQuestionContent(Long studentId, String questionId) {
+        Check.isBlank(questionId, "questionId不能为空");
+
         ExamingSession examSessionInfo = examingSessionService.getExamingSession(studentId);
         if (examSessionInfo == null
                 || examSessionInfo.getExamingStatus().equals(ExamingStatus.INFORMAL)) {