| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package nju.seec.helper.service.impl;
- import nju.seec.helper.dao.QuizDAO;
- import nju.seec.helper.dao.QuizStudentAnswerDAO;
- import nju.seec.helper.dao.SlideDAO;
- import nju.seec.helper.dto.LoginUser;
- import nju.seec.helper.entity.*;
- import nju.seec.helper.service.QuizService;
- import nju.seec.helper.util.BOKUtil;
- import nju.seec.helper.util.enums.QuizState;
- import nju.seec.helper.util.enums.SlideState;
- import nju.seec.helper.vo.quiz.QuestionVO;
- import nju.seec.helper.vo.quiz.QuizVO;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.Assert;
- import java.util.*;
- @Service
- public class QuizServiceImpl implements QuizService {
- @Autowired
- private SlideDAO slideDAO;
- @Autowired
- private QuizDAO quizDAO;
- @Autowired
- private QuizStudentAnswerDAO quizStudentAnswerDAO;
- @Autowired
- private BOKUtil bokUtil;
- @Transactional
- public QuizVO CreateQuiz(String name, Integer uid, SlideState quizTime,
- Integer slideId, List<String> questions){
- User teacher =new User();
- teacher.setId(uid);
- Slide slide = slideDAO.findSlideById(slideId);
- Course course = new Course();
- course.setId(slide.getCourseId());
- Quiz quiz = new Quiz();
- quiz.setCourse(course);
- quiz.setName(name);
- quiz.setQuestions(questions);
- quiz.setQuizTime(quizTime);
- quiz.setSlide(slide);
- quiz.setTeacher(teacher);
- quiz.setState(quizTime.getNum()<slide.getState().getNum()?QuizState.CLOSED:QuizState.ONGOING);
- quiz=quizDAO.saveAndFlush(quiz);
- return combineQuiz(quiz.getId());
- }
- public QuizVO combineQuiz(Long quizId){
- Assert.notNull(quizId,"QUIZ ID can't be null!");
- final Quiz quizById = quizDAO.findQuizById(quizId);
- final List<QuestionVO> questionVOS = bokUtil.BokFindByIdIn(quizById.getQuestions());
- QuizVO ret= new QuizVO(quizById,questionVOS);
- return ret;
- }
- public QuizVO combineQuizWithAnswer(Long quizId, Integer uid){
- Assert.notNull(quizId,"QUIZ ID can't be null!");
- final Quiz quizById = quizDAO.findQuizById(quizId);
- User student =new User();
- student.setId(uid);
- final Set<QuizStudentAnswer> QuizAnswers = quizStudentAnswerDAO.findByQuizAndStudent(quizById, student);
- List<QuestionVO> questionVOS = bokUtil.BokFindByIdIn(quizById.getQuestions());
- Map<String,QuizStudentAnswer> qsaMap=new HashMap<>(QuizAnswers.size());
- for(QuizStudentAnswer qsa: QuizAnswers){
- qsaMap.put(qsa.getQuestionId(),qsa);
- }
- for(QuestionVO vo:questionVOS){
- if(qsaMap.get(vo.getQuestionId())!=null){
- vo.exAddAnswer(qsaMap.get(vo.getQuestionId()));
- }
- }
- QuizVO ret= new QuizVO(quizById,questionVOS);
- return ret;
- }
- }
|