|
|
|
@ -23,23 +23,33 @@ import java.util.*;
|
|
|
|
|
@Transactional
|
|
|
|
|
public class ExamServiceImpl implements ExamService {
|
|
|
|
|
|
|
|
|
|
// 试卷仓库
|
|
|
|
|
private final ExamRepository examRepository;
|
|
|
|
|
|
|
|
|
|
// 考试记录仓库
|
|
|
|
|
private final ExamRecordRepository examRecordRepository;
|
|
|
|
|
|
|
|
|
|
// 问题仓库
|
|
|
|
|
private final QuestionRepository questionRepository;
|
|
|
|
|
|
|
|
|
|
// 用户仓库
|
|
|
|
|
private final UserRepository userRepository;
|
|
|
|
|
|
|
|
|
|
// 问题等级仓库
|
|
|
|
|
private final QuestionLevelRepository questionLevelRepository;
|
|
|
|
|
|
|
|
|
|
// 问题类型仓库
|
|
|
|
|
private final QuestionTypeRepository questionTypeRepository;
|
|
|
|
|
|
|
|
|
|
// 问题类别仓库
|
|
|
|
|
private final QuestionCategoryRepository questionCategoryRepository;
|
|
|
|
|
|
|
|
|
|
private final QuestionOptionRepository questionOptionRepository;
|
|
|
|
|
|
|
|
|
|
// 问题选项仓库
|
|
|
|
|
// 定义一个final类型的QuestionOptionRepository对象
|
|
|
|
|
private final QuestionOptionRepository questionOptionRepository;
|
|
|
|
|
// 构造函数,传入多个Repository对象
|
|
|
|
|
public ExamServiceImpl(QuestionRepository questionRepository, UserRepository userRepository, QuestionLevelRepository questionLevelRepository, QuestionTypeRepository questionTypeRepository, QuestionCategoryRepository questionCategoryRepository, QuestionOptionRepository questionOptionRepository, ExamRepository examRepository, ExamRecordRepository examRecordRepository) {
|
|
|
|
|
// 将传入的Repository对象赋值给对应的成员变量
|
|
|
|
|
this.questionRepository = questionRepository;//
|
|
|
|
|
this.userRepository = userRepository;//
|
|
|
|
|
this.questionLevelRepository = questionLevelRepository;//
|
|
|
|
@ -49,7 +59,6 @@ public class ExamServiceImpl implements ExamService {
|
|
|
|
|
this.examRepository = examRepository;
|
|
|
|
|
this.examRecordRepository = examRecordRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<QuestionVo> getQuestionAll() {
|
|
|
|
|
List<Question> questionList = questionRepository.findAll();
|
|
|
|
@ -144,8 +153,10 @@ public class ExamServiceImpl implements ExamService {
|
|
|
|
|
for (int i = 0; i < questionOptionVoList.size(); i++) {
|
|
|
|
|
QuestionOptionVo questionOptionVo = questionOptionVoList.get(i);
|
|
|
|
|
QuestionOption questionOption = new QuestionOption();
|
|
|
|
|
// 2.把questionOptionVo中的属性值复制到questionOption中。
|
|
|
|
|
BeanUtils.copyProperties(questionOptionVo, questionOption);
|
|
|
|
|
questionOptionList.add(questionOption);
|
|
|
|
|
// 3.如果questionOptionVo中的answer属性为true,则把questionOptionVo中的questionOptionId属性值添加到questionAnswerOptionIds中。
|
|
|
|
|
if (questionOptionVo.getAnswer()) {
|
|
|
|
|
if (i != size - 1) {
|
|
|
|
|
// 把更新后的答案的id加上去,记得用-连到一起。
|
|
|
|
@ -158,18 +169,25 @@ public class ExamServiceImpl implements ExamService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 1.更新问题。
|
|
|
|
|
// 根据问题id从数据库中查找问题
|
|
|
|
|
Question question = questionRepository.findById(questionVo.getQuestionId()).orElse(null);
|
|
|
|
|
// 断言问题不为空
|
|
|
|
|
assert question != null;
|
|
|
|
|
// 将questionVo中的属性值复制到question中
|
|
|
|
|
BeanUtils.copyProperties(questionVo, question);
|
|
|
|
|
// 将问题答案选项id转换为字符串并设置到question中
|
|
|
|
|
question.setQuestionAnswerOptionIds(questionAnswerOptionIds.toString());
|
|
|
|
|
// 保存更新后的question到数据库中
|
|
|
|
|
questionRepository.save(question);
|
|
|
|
|
|
|
|
|
|
// 2.更新所有的option。
|
|
|
|
|
// 将questionOptionList中的所有option保存到数据库中
|
|
|
|
|
questionOptionRepository.saveAll(questionOptionList);
|
|
|
|
|
|
|
|
|
|
// 返回更新后的问题,方便前端局部刷新。
|
|
|
|
|
// 将更新后的question转换为questionVo并返回
|
|
|
|
|
return getQuestionVo(question);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void questionCreate(QuestionCreateVo questionCreateVo) {
|
|
|
|
|