|
@@ -5,6 +5,7 @@ import nju.seec.helper.api.dataanalysis.EventAction;
|
|
|
import nju.seec.helper.api.dataanalysis.EventType;
|
|
import nju.seec.helper.api.dataanalysis.EventType;
|
|
|
import nju.seec.helper.aspect.auth.LoginUser;
|
|
import nju.seec.helper.aspect.auth.LoginUser;
|
|
|
import nju.seec.helper.aspect.event.Event;
|
|
import nju.seec.helper.aspect.event.Event;
|
|
|
|
|
+import nju.seec.helper.aspect.event.ExerciseRecordEvent;
|
|
|
import nju.seec.helper.dao.QuizDAO;
|
|
import nju.seec.helper.dao.QuizDAO;
|
|
|
import nju.seec.helper.dao.QuizStudentAnswerDAO;
|
|
import nju.seec.helper.dao.QuizStudentAnswerDAO;
|
|
|
import nju.seec.helper.dao.UserDAO;
|
|
import nju.seec.helper.dao.UserDAO;
|
|
@@ -28,7 +29,7 @@ import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
-import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author cst
|
|
* @author cst
|
|
@@ -48,6 +49,7 @@ public class QuizStudentAnswerServiceImpl implements QuizStudentAnswerService {
|
|
|
this.questionService = questionService;
|
|
this.questionService = questionService;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @ExerciseRecordEvent
|
|
|
@Event(type = EventType.QUIZ, action = EventAction.PARTICIPATE)
|
|
@Event(type = EventType.QUIZ, action = EventAction.PARTICIPATE)
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
@Override
|
|
@@ -74,13 +76,13 @@ public class QuizStudentAnswerServiceImpl implements QuizStudentAnswerService {
|
|
|
// 计算得分
|
|
// 计算得分
|
|
|
List<BaseQuestionVO> questionVOList = questionService.getQuestionsByQuiz(quiz);
|
|
List<BaseQuestionVO> questionVOList = questionService.getQuestionsByQuiz(quiz);
|
|
|
|
|
|
|
|
- AtomicReference<Integer> correct = new AtomicReference<>(0);
|
|
|
|
|
|
|
+ AtomicInteger correct = new AtomicInteger();
|
|
|
|
|
|
|
|
Map<String, Object> answers = quizStudentAnswerDTO.getAnswers();
|
|
Map<String, Object> answers = quizStudentAnswerDTO.getAnswers();
|
|
|
questionVOList.forEach(baseQuestionVO -> {
|
|
questionVOList.forEach(baseQuestionVO -> {
|
|
|
Object answer;
|
|
Object answer;
|
|
|
if ((answer = answers.get(baseQuestionVO.getId())) != null && baseQuestionVO.pass(answer)) {
|
|
if ((answer = answers.get(baseQuestionVO.getId())) != null && baseQuestionVO.pass(answer)) {
|
|
|
- correct.getAndSet(correct.get() + 1);
|
|
|
|
|
|
|
+ correct.getAndIncrement();
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|