diff --git a/src/main/java/club/joylink/rtss/controller/paper/PagerQuestionBankController.java b/src/main/java/club/joylink/rtss/controller/paper/PagerQuestionBankController.java index 76d1a6b98..94f792db8 100644 --- a/src/main/java/club/joylink/rtss/controller/paper/PagerQuestionBankController.java +++ b/src/main/java/club/joylink/rtss/controller/paper/PagerQuestionBankController.java @@ -57,11 +57,16 @@ public class PagerQuestionBankController { } /** - * 获取题目信息 + * 获取题目信息或预览 */ @GetMapping(path = "/org/{questionId}") - public PaperQuestionVO getQuestion(@PathVariable Long questionId) { - return questionBankService.getQuestion(questionId, false); + public PaperQuestionVO getQuestion(@PathVariable Long questionId,@RequestParam(name = "random",defaultValue = "false") boolean random) { + return questionBankService.getQuestion(questionId, false,random); + } + + @PostMapping(path = "/org/test/answer/{questionId}") + public boolean testAnswer(@PathVariable Long questionId,@RequestBody List answers){ + return this.questionBankService.answer(questionId,answers); } /** @@ -121,4 +126,6 @@ public class PagerQuestionBankController { questionBankService.deleteQuestion(questionId); } + + } diff --git a/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java b/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java index 48f104f4e..df5969421 100644 --- a/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java +++ b/src/main/java/club/joylink/rtss/services/paper/PagerQuestionService.java @@ -98,7 +98,7 @@ public class PagerQuestionService { * @param doNotCheckDel 是否检测数据状态是否删除 true = 不检测,false=检测 * @return */ - public PaperQuestionVO getQuestion(Long questionId,boolean doNotCheckDel) { + public PaperQuestionVO getQuestion(Long questionId,boolean doNotCheckDel,boolean random) { PaperQuestionWithBLOBs question = questionDAO.selectByPrimaryKey(questionId); boolean isDel = Objects.nonNull(question) || question.getIsDel() == BusinessConsts.DBLogicDelete.NORMAL.ordinal(); if(doNotCheckDel){ @@ -106,6 +106,9 @@ public class PagerQuestionService { } BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertTrue(isDel); PaperQuestionVO questionVO = new PaperQuestionVO(question); + if(random){ + Collections.shuffle(questionVO.getOptionList()); + } return questionVO; } @@ -117,17 +120,17 @@ public class PagerQuestionService { */ public boolean answer(Long questionId,List answerIds){ BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(!CollectionUtils.isEmpty(answerIds),"题目答案不能为空"); - PaperQuestionVO vo = this.getQuestion(questionId,true); + PaperQuestionVO vo = this.getQuestion(questionId,true,false); List newAnswerList = answerIds.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); - if(Objects.equals(BusinessConsts.TheoryType.select.name(),vo.getType()) + /* if(Objects.equals(BusinessConsts.TheoryType.select.name(),vo.getType()) || Objects.equals(BusinessConsts.TheoryType.judge.name(),vo.getType())){ BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(newAnswerList.size() == 1 ,"单选,判断题答案只能有一个!"); }else if(Objects.equals(BusinessConsts.TheoryType.multi.name(),vo.getType())){ - BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(newAnswerList.size() > 2 ,"多选题答案最少需要2个"); - } - Collections.sort(answerIds); - String answerStr = Joiner.on(",").skipNulls().join(answerIds); - if(Objects.equals(answerStr,vo.getQuestionAnswer())){ + BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(newAnswerList.size() >= 2 ,"多选题答案最少需要2个"); + }*/ + Collections.sort(newAnswerList); + String answerStr = Joiner.on(",").skipNulls().join(newAnswerList); + if(Objects.equals(answerStr,vo.getAnswer())){ return true; } log.info("检查题目[{}]答案,获取原答案[{}],正确答案[{}] ",questionId, answerStr,vo.getQuestionAnswer());