فهرست منبع

merge: 合并冲突部分

XuShengTao 6 سال پیش
والد
کامیت
a99b28b306

+ 2 - 2
src/main/java/nju/seec/helper/controller/QuizController.java

@@ -58,7 +58,7 @@ public class QuizController {
         Map ret=new LinkedHashMap(2);
         Page<Quiz> page;
         if(slideId!=null){
-            page = quizService.getAllBasicQuizBySlide(Integer.valueOf(slideId), pageable, state, user.getId());
+            page = quizService.getAllBasicQuizBySlide(Long.valueOf(slideId), pageable, state, user.getId());
            }else{
             page = quizService.getAllBasicQuizByUser( pageable, state, user.getId());
         }
@@ -85,7 +85,7 @@ public class QuizController {
     public QuizVO CreateQuiz(LoginUser user,@RequestBody QuizDTO newQuiz) {
         System.out.println(newQuiz);
         final Quiz quiz = quizService.CreateQuiz(newQuiz.getName(), user.getId(), newQuiz.getQuizTime(),
-                Integer.valueOf(newQuiz.getSlideId()), newQuiz.getQuestions());
+                Long.valueOf(newQuiz.getSlideId()), newQuiz.getQuestions());
         return quizService.combineQuiz(quiz.getId());
     }
 

+ 7 - 7
src/main/java/nju/seec/helper/service/QuizService.java

@@ -19,27 +19,27 @@ import java.util.Map;
 public interface QuizService {
 
     @Transactional
-    Quiz CreateQuiz(String name, Integer uid, SlideState quizTime,
-                    Integer slideId, List<String> questions);
+    Quiz CreateQuiz(String name, Long uid, SlideState quizTime,
+                    Long slideId, List<String> questions);
 
-    Integer upStudentAnswer(Long quizId, Integer uid, List<QuestionStudentAnswerDTO> answers);
+    Integer upStudentAnswer(Long quizId, Long uid, List<QuestionStudentAnswerDTO> answers);
 
-    Page<Quiz> getAllBasicQuizBySlide(Integer slideId, Pageable pageable, QuizState state, Integer uid);
+    Page<Quiz> getAllBasicQuizBySlide(Long slideId, Pageable pageable, QuizState state, Long uid);
 
     @Transactional
     QuizState checkQuizState(Quiz quiz, Slide slide);
 
-    QuizState checkQuizState(Long quizId, Integer slideId);
+    QuizState checkQuizState(Long quizId, Long slideId);
 
     QuizVO combineQuiz(Long quizId);
 
-    QuizVO combineQuizWithAnswer(Long quizId, Integer uid, UserType type);
+    QuizVO combineQuizWithAnswer(Long quizId, Long uid, UserType type);
 
     String deleteQuiz(Long quizId);
 
     Quiz modifyQuiz(Long quizId, String name, List<String> questions, SlideState quizTime, String slideId);
 
-    Page<Quiz> getAllBasicQuizByUser(Pageable pageable, QuizState state, Integer uid);
+    Page<Quiz> getAllBasicQuizByUser(Pageable pageable, QuizState state, Long uid);
 
     List<QuizResultVO> getQuizResult(Long aLong);
 

+ 14 - 14
src/main/java/nju/seec/helper/service/impl/QuizServiceImpl.java

@@ -46,8 +46,8 @@ public class QuizServiceImpl implements QuizService {
 
     @Override
     @Transactional
-    public Quiz CreateQuiz(String name, Integer uid, SlideState quizTime,
-                             Integer slideId, List<String> questions){
+    public Quiz CreateQuiz(String name, Long uid, SlideState quizTime,
+                           Long slideId, List<String> questions){
         User teacher =new User();
         teacher.setId(uid);
         Slide slide = slideDAO.findSlideById(slideId);
@@ -92,11 +92,11 @@ public class QuizServiceImpl implements QuizService {
     }
 
     @Override
-    public Page<Quiz> getAllBasicQuizByUser(Pageable pageable, QuizState state, Integer uid) {
+    public Page<Quiz> getAllBasicQuizByUser(Pageable pageable, QuizState state, Long uid) {
         User user=userDAO.findUserById(uid);
         //todo: 这里写的太狗屎了,可以用重写sql或者用实例查询
         if(user.getType().equals(UserType.STUDENT)){
-            final Set<Integer> courseIdsByStudentId = chooseDAO.findCourseIdsByStudentId(uid);
+            final Set<Long> courseIdsByStudentId = chooseDAO.findCourseIdsByStudentId(uid);
             final Set<Course> collect = courseIdsByStudentId.stream().map(i -> {
                 Course c = new Course();
                 c.setId(i);
@@ -125,7 +125,7 @@ public class QuizServiceImpl implements QuizService {
         if(quiz.getState()!=QuizState.CLOSED){throw new RuntimeException("测试未关闭,无法得到测试结果");}
         List<QuizResultVO> retList=new ArrayList<>();
         final List<StudentScore> studentScoreList = quiz.getStudentScore();
-        Map<Integer,List<QuizStudentAnswer>> IdQuizStudentAnswerMap=new HashMap<>();
+        Map<Long,List<QuizStudentAnswer>> IdQuizStudentAnswerMap=new HashMap<>();
         for(QuizStudentAnswer qsa:quizStudentAnswerDAO.findAllByQuiz(quiz)){
             IdQuizStudentAnswerMap.computeIfAbsent(qsa.getStudent().getId(), k -> new ArrayList<>());
             IdQuizStudentAnswerMap.get(qsa.getStudent().getId()).add(qsa);
@@ -146,7 +146,7 @@ public class QuizServiceImpl implements QuizService {
 
     @Override
     @Transactional
-    public Integer upStudentAnswer(Long quizId, Integer uid, List<QuestionStudentAnswerDTO> answers) {
+    public Integer upStudentAnswer(Long quizId, Long uid, List<QuestionStudentAnswerDTO> answers) {
         Assert.notNull(quizId,"错误的测试!");
         final Quiz quiz = quizDAO.findQuizById(quizId);
         if(quiz.getState()!=QuizState.ONGOING){throw HelperException.of(ExceptionType.FORBIDDEN,"不能提交尚未开始的作业!");}
@@ -184,7 +184,7 @@ public class QuizServiceImpl implements QuizService {
     }
 
     @Override
-    public Page<Quiz> getAllBasicQuizBySlide(Integer slideId, Pageable pageable, QuizState state, Integer uid) {
+    public Page<Quiz> getAllBasicQuizBySlide(Long slideId, Pageable pageable, QuizState state, Long uid) {
         Assert.notNull(slideId,"错误的幻灯片!");
         Slide slide=new Slide();
         slide.setId(slideId);
@@ -214,7 +214,7 @@ public class QuizServiceImpl implements QuizService {
                 if(quiz.getState().equals(QuizState.CLOSED)){return QuizState.CLOSED;}
                 quiz.setState(QuizState.CLOSED);
                 Set<QuizStudentAnswer> QuizAnswers = quizStudentAnswerDAO.findAllByQuiz(quiz);
-                final Set<Integer> studentIds = chooseDAO.findStudentIdsByCourseId(slide.getCourseId());
+                final Set<Long> studentIds = chooseDAO.findStudentIdsByCourseId(slide.getCourseId());
                 Student2_QuestionId2Answer triadMap = new Student2_QuestionId2Answer(studentIds, quiz.getQuestions().size());
                 //将已经作答的学生答案加入
                 for (QuizStudentAnswer answers : QuizAnswers) {
@@ -233,16 +233,16 @@ public class QuizServiceImpl implements QuizService {
         return quiz.getState();
     }
     @Override
-    public QuizState checkQuizState(Long quizId, Integer slideId){
+    public QuizState checkQuizState(Long quizId, Long slideId){
         Quiz quiz=quizDAO.findQuizById(quizId);
         Slide slide=slideDAO.findSlideById(slideId);
         return checkQuizState(quiz,slide);
     }
     private class Student2_QuestionId2Answer{
-        Map<Integer,Map<String,QuizStudentAnswer>> Student2_QuestionId2Answer;
-        Student2_QuestionId2Answer(Set<Integer> studentIds, Integer quizQuestionSize) {
+        Map<Long,Map<String,QuizStudentAnswer>> Student2_QuestionId2Answer;
+        Student2_QuestionId2Answer(Set<Long> studentIds, Integer quizQuestionSize) {
             Student2_QuestionId2Answer =new LinkedHashMap<>(studentIds.size());
-            for(Integer studentId:studentIds){
+            for(Long studentId:studentIds){
                 Map<String,QuizStudentAnswer> QuestionId2Answer= new LinkedHashMap<>(quizQuestionSize);
                 Student2_QuestionId2Answer.put(studentId,QuestionId2Answer);
             }
@@ -291,7 +291,7 @@ public class QuizServiceImpl implements QuizService {
         }
         List<QuizStudentAnswer> getAll(){
             List<QuizStudentAnswer> list=new ArrayList<>();
-            for(Integer sid:Student2_QuestionId2Answer.keySet()){
+            for(Long sid:Student2_QuestionId2Answer.keySet()){
                 list.addAll(Student2_QuestionId2Answer.get(sid).values());
             }
             return list;
@@ -305,7 +305,7 @@ public class QuizServiceImpl implements QuizService {
         return new QuizVO(quizById,questionVOS);
     }
     @Override
-    public QuizVO combineQuizWithAnswer(Long quizId, Integer uid,UserType userType){
+    public QuizVO combineQuizWithAnswer(Long quizId, Long uid,UserType userType){
         Assert.notNull(quizId,"错误的测试!");
         final Quiz quizById = quizDAO.findQuizById(quizId);
         User student =new User();

+ 7 - 2
src/main/java/nju/seec/helper/service/impl/SlideServiceImpl.java

@@ -13,6 +13,7 @@ import nju.seec.helper.dto.SlideStateDTO;
 import nju.seec.helper.entity.Course;
 import nju.seec.helper.entity.Slide;
 import nju.seec.helper.service.MessageService;
+import nju.seec.helper.service.QuizService;
 import nju.seec.helper.service.SlideService;
 import nju.seec.helper.service.util.AuthUtils;
 import nju.seec.helper.util.CacheUtils;
@@ -24,6 +25,7 @@ import nju.seec.helper.util.enums.SlideState;
 import nju.seec.helper.util.exception.HelperException;
 import nju.seec.helper.vo.SlideVO;
 import org.apache.pdfbox.pdmodel.PDDocument;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
@@ -52,14 +54,15 @@ public class SlideServiceImpl implements SlideService {
 
     private final MessageService messageService;
 
-    public SlideServiceImpl(CourseDAO courseDAO, SlideDAO slideDAO, ChooseDAO chooseDAO, FileUtils fileUtils, CacheUtils cacheUtils, MessageService messageService) {
+    @Autowired
+    public SlideServiceImpl(CourseDAO courseDAO, SlideDAO slideDAO, ChooseDAO chooseDAO, FileUtils fileUtils, CacheUtils cacheUtils, MessageService messageService, QuizService quizService) {
         this.courseDAO = courseDAO;
         this.slideDAO = slideDAO;
         this.chooseDAO = chooseDAO;
-        this.quizService = quizService;
         this.fileUtils = fileUtils;
         this.cacheUtils = cacheUtils;
         this.messageService = messageService;
+        this.quizService = quizService;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -124,6 +127,8 @@ public class SlideServiceImpl implements SlideService {
 
         slide.setState(slideStateDTO.getState());
         slide = slideDAO.save(slide);
+        // 修改Slide状态同时推进quiz状态
+        quizService.modifySlideState(slide);
 
         // 增加通知
         if (slide.getState() == SlideState.IN_CLASS) {