QuizServiceImpl.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package nju.seec.helper.service.impl;
  2. import nju.seec.helper.dao.QuizDAO;
  3. import nju.seec.helper.dao.QuizStudentAnswerDAO;
  4. import nju.seec.helper.dao.SlideDAO;
  5. import nju.seec.helper.dto.LoginUser;
  6. import nju.seec.helper.entity.*;
  7. import nju.seec.helper.service.QuizService;
  8. import nju.seec.helper.util.BOKUtil;
  9. import nju.seec.helper.util.enums.QuizState;
  10. import nju.seec.helper.util.enums.SlideState;
  11. import nju.seec.helper.vo.quiz.QuestionVO;
  12. import nju.seec.helper.vo.quiz.QuizVO;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import org.springframework.util.Assert;
  17. import java.util.*;
  18. @Service
  19. public class QuizServiceImpl implements QuizService {
  20. @Autowired
  21. private SlideDAO slideDAO;
  22. @Autowired
  23. private QuizDAO quizDAO;
  24. @Autowired
  25. private QuizStudentAnswerDAO quizStudentAnswerDAO;
  26. @Autowired
  27. private BOKUtil bokUtil;
  28. @Transactional
  29. public QuizVO CreateQuiz(String name, Integer uid, SlideState quizTime,
  30. Integer slideId, List<String> questions){
  31. User teacher =new User();
  32. teacher.setId(uid);
  33. Slide slide = slideDAO.findSlideById(slideId);
  34. Course course = new Course();
  35. course.setId(slide.getCourseId());
  36. Quiz quiz = new Quiz();
  37. quiz.setCourse(course);
  38. quiz.setName(name);
  39. quiz.setQuestions(questions);
  40. quiz.setQuizTime(quizTime);
  41. quiz.setSlide(slide);
  42. quiz.setTeacher(teacher);
  43. quiz.setState(quizTime.getNum()<slide.getState().getNum()?QuizState.CLOSED:QuizState.ONGOING);
  44. quiz=quizDAO.saveAndFlush(quiz);
  45. return combineQuiz(quiz.getId());
  46. }
  47. public QuizVO combineQuiz(Long quizId){
  48. Assert.notNull(quizId,"QUIZ ID can't be null!");
  49. final Quiz quizById = quizDAO.findQuizById(quizId);
  50. final List<QuestionVO> questionVOS = bokUtil.BokFindByIdIn(quizById.getQuestions());
  51. QuizVO ret= new QuizVO(quizById,questionVOS);
  52. return ret;
  53. }
  54. public QuizVO combineQuizWithAnswer(Long quizId, Integer uid){
  55. Assert.notNull(quizId,"QUIZ ID can't be null!");
  56. final Quiz quizById = quizDAO.findQuizById(quizId);
  57. User student =new User();
  58. student.setId(uid);
  59. final Set<QuizStudentAnswer> QuizAnswers = quizStudentAnswerDAO.findByQuizAndStudent(quizById, student);
  60. List<QuestionVO> questionVOS = bokUtil.BokFindByIdIn(quizById.getQuestions());
  61. Map<String,QuizStudentAnswer> qsaMap=new HashMap<>(QuizAnswers.size());
  62. for(QuizStudentAnswer qsa: QuizAnswers){
  63. qsaMap.put(qsa.getQuestionId(),qsa);
  64. }
  65. for(QuestionVO vo:questionVOS){
  66. if(qsaMap.get(vo.getQuestionId())!=null){
  67. vo.exAddAnswer(qsaMap.get(vo.getQuestionId()));
  68. }
  69. }
  70. QuizVO ret= new QuizVO(quizById,questionVOS);
  71. return ret;
  72. }
  73. }