|
@@ -1,63 +1,37 @@
|
|
package cn.com.qmth.examcloud.core.questions.service.impl;
|
|
package cn.com.qmth.examcloud.core.questions.service.impl;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.Collections;
|
|
|
|
-import java.util.HashMap;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
-import java.util.Random;
|
|
|
|
-import java.util.Set;
|
|
|
|
-import java.util.regex.Matcher;
|
|
|
|
-import java.util.regex.Pattern;
|
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
-
|
|
|
|
-import org.apache.commons.collections.CollectionUtils;
|
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
|
-import org.slf4j.Logger;
|
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.data.domain.Example;
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
-
|
|
|
|
import cn.com.qmth.examcloud.commons.exception.StatusException;
|
|
import cn.com.qmth.examcloud.commons.exception.StatusException;
|
|
import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
|
|
import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
|
|
import cn.com.qmth.examcloud.core.questions.base.Model;
|
|
import cn.com.qmth.examcloud.core.questions.base.Model;
|
|
import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
|
|
import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
|
|
-import cn.com.qmth.examcloud.core.questions.dao.AudioTimeConfigRepo;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailRepo;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.PaperDetailUnitRepo;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.PaperRepo;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.AudioTimeConfig;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetail;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.PaperDetailUnit;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuesOption;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionAudio;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.ExtractConfigProviderService;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.PaperService;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.QuesService;
|
|
|
|
-import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
|
|
|
|
|
|
+import cn.com.qmth.examcloud.core.questions.dao.*;
|
|
|
|
+import cn.com.qmth.examcloud.core.questions.dao.entity.*;
|
|
|
|
+import cn.com.qmth.examcloud.core.questions.service.*;
|
|
import cn.com.qmth.examcloud.core.questions.service.bean.QuestionAnswerConvert;
|
|
import cn.com.qmth.examcloud.core.questions.service.bean.QuestionAnswerConvert;
|
|
import cn.com.qmth.examcloud.core.questions.service.bean.extract.ExtractConfigPaper;
|
|
import cn.com.qmth.examcloud.core.questions.service.bean.extract.ExtractConfigPaper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionGroup;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionGroup;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionStructureWrapper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionStructureWrapper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionUnitWrapper;
|
|
import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionUnitWrapper;
|
|
-import cn.com.qmth.examcloud.question.commons.core.question.DefaultQuestion;
|
|
|
|
-import cn.com.qmth.examcloud.question.commons.core.question.DefaultQuestionOption;
|
|
|
|
-import cn.com.qmth.examcloud.question.commons.core.question.DefaultQuestionStructure;
|
|
|
|
-import cn.com.qmth.examcloud.question.commons.core.question.DefaultQuestionUnit;
|
|
|
|
import cn.com.qmth.examcloud.question.commons.core.question.QuestionType;
|
|
import cn.com.qmth.examcloud.question.commons.core.question.QuestionType;
|
|
|
|
+import cn.com.qmth.examcloud.question.commons.core.question.*;
|
|
import cn.com.qmth.examcloud.support.cache.CacheHelper;
|
|
import cn.com.qmth.examcloud.support.cache.CacheHelper;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigCacheBean;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigCacheBean;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigDetailCacheBean;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigDetailCacheBean;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
|
|
import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
|
|
import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
|
|
import cn.com.qmth.examcloud.support.filestorage.FileStorageUtil;
|
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.data.domain.Example;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author weiwenhai
|
|
* @author weiwenhai
|
|
@@ -98,8 +72,8 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
|
|
@Autowired
|
|
@Autowired
|
|
private PaperService paperService;
|
|
private PaperService paperService;
|
|
|
|
|
|
-// @Autowired
|
|
|
|
-// private SysProperty sysProperty;
|
|
|
|
|
|
+ // @Autowired
|
|
|
|
+ // private SysProperty sysProperty;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public ExtractConfigCacheBean getExtractConfig(Long examId, String courseCode) {
|
|
public ExtractConfigCacheBean getExtractConfig(Long examId, String courseCode) {
|
|
@@ -381,19 +355,13 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public DefaultQuestion getDefaultQuestion(Long examId, String courseCode, String groupCode, String questionId) {
|
|
public DefaultQuestion getDefaultQuestion(Long examId, String courseCode, String groupCode, String questionId) {
|
|
- LOG.debug("网考根据调卷规则中试题id:" + questionId + "获取单个试题...");
|
|
|
|
- long beginTime = System.currentTimeMillis();
|
|
|
|
-
|
|
|
|
Question question = Model.of(quesRepo.findById(questionId));
|
|
Question question = Model.of(quesRepo.findById(questionId));
|
|
if (question == null) {
|
|
if (question == null) {
|
|
throw new StatusException("500", "试题不存在!");
|
|
throw new StatusException("500", "试题不存在!");
|
|
}
|
|
}
|
|
-
|
|
|
|
quesService.formatQues(question);
|
|
quesService.formatQues(question);
|
|
- LOG.debug("查询单个试题耗时:" + (System.currentTimeMillis() - beginTime) + "ms");
|
|
|
|
|
|
|
|
//封装成新的题单元集合
|
|
//封装成新的题单元集合
|
|
- beginTime = System.currentTimeMillis();
|
|
|
|
DefaultQuestionStructure defaultQuestionStructure = new DefaultQuestionStructure();
|
|
DefaultQuestionStructure defaultQuestionStructure = new DefaultQuestionStructure();
|
|
if (question.getHasAudio() == null || false == question.getHasAudio()) {
|
|
if (question.getHasAudio() == null || false == question.getHasAudio()) {
|
|
defaultQuestionStructure.setHasAudios(false);
|
|
defaultQuestionStructure.setHasAudios(false);
|
|
@@ -426,11 +394,12 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
|
|
defaultQuestion.setMasterVersion(defaultQuestionStructure);
|
|
defaultQuestion.setMasterVersion(defaultQuestionStructure);
|
|
|
|
|
|
if (examId != null) {
|
|
if (examId != null) {
|
|
- LOG.debug("替换试题单元中的音频路径...");
|
|
|
|
appendAudioFlag(defaultQuestion, String.valueOf(examId), courseCode, groupCode, question);
|
|
appendAudioFlag(defaultQuestion, String.valueOf(examId), courseCode, groupCode, question);
|
|
}
|
|
}
|
|
|
|
|
|
- LOG.debug("封装成新的题单元集合耗时:" + (System.currentTimeMillis() - beginTime) + "ms");
|
|
|
|
|
|
+ // 获取试题信息带答案(敏感信息日志,用于排查调用者)
|
|
|
|
+ LOG.warn("$$$getQuestionWithAnswer questionId:{} examId:{} courseCode:{} groupCode:{}",
|
|
|
|
+ questionId, examId, courseCode, groupCode);
|
|
return defaultQuestion;
|
|
return defaultQuestion;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -544,8 +513,8 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
|
|
String questionAudioId = matchAudioName(containAStr, "a", "id");
|
|
String questionAudioId = matchAudioName(containAStr, "a", "id");
|
|
QuestionAudio questionAudio = questionAudioService.findAudioById(questionAudioId);
|
|
QuestionAudio questionAudio = questionAudioService.findAudioById(questionAudioId);
|
|
if (questionAudio != null) {
|
|
if (questionAudio != null) {
|
|
-// String url = sysProperty.getDomain() + questionAudio.getFileUrl();
|
|
|
|
- //通用存储
|
|
|
|
|
|
+ // String url = sysProperty.getDomain() + questionAudio.getFileUrl();
|
|
|
|
+ //通用存储
|
|
String url = FileStorageUtil.realPath(questionAudio.getFileUrl());
|
|
String url = FileStorageUtil.realPath(questionAudio.getFileUrl());
|
|
if (playTime != null) {
|
|
if (playTime != null) {
|
|
containAStr += " question-audio url=\"" + url + "\" playTime=\"" + playTime + "\"" + "></a>";
|
|
containAStr += " question-audio url=\"" + url + "\" playTime=\"" + playTime + "\"" + "></a>";
|