|
|
@@ -131,21 +131,30 @@ class TrainingLogic extends BaseLogic
|
|
|
public static function getQuestionList(array $params)
|
|
|
{
|
|
|
try {
|
|
|
- // 开始考试
|
|
|
- self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 4]);
|
|
|
-
|
|
|
- $list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
|
|
|
- foreach ($list as &$item) {
|
|
|
- $item['title'] = $item['trainingQuestions']['title'];
|
|
|
- $item['question_type'] = $item['trainingQuestions']['question_type'];
|
|
|
- $item['question_selects'] = $item['trainingQuestions']['question_selects'];
|
|
|
- $item['question_answer'] = $item['trainingQuestions']['question_answer'];
|
|
|
- $item['question_analysis'] = $item['trainingQuestions']['question_analysis'];
|
|
|
+ $workerCourse = TrainingWorkerCourse::where('id',$params['worker_course_id'])->findOrEmpty();
|
|
|
+ $study_status = 0;
|
|
|
+ if(isset($params['is_resit']) && $params['is_resit'] == 1 && $workerCourse['study_status'] == 4){
|
|
|
+ // 重置
|
|
|
+ TrainingWorkerCourse::update(['exam_start_time'=>0,'exam_end_time'=>0,'study_status'=>2,'exam_score'=>0],['id'=>$params['worker_course_id']]);
|
|
|
+ TrainingWorkerQuestion::update(['worker_answer'=>'','exam_score'=>0],['worker_course_id'=>$params['worker_course_id']]);
|
|
|
+ $study_status = 2;
|
|
|
+ }
|
|
|
+ $list = [];
|
|
|
+ if($workerCourse['study_status'] == 2 || $study_status == 2) {
|
|
|
+ // 开始考试
|
|
|
+ self::upWorkerCourse(['id'=>$params['worker_course_id'],'status'=> 4]);
|
|
|
+ $list = TrainingWorkerQuestion::with(['trainingQuestions'])->where('worker_course_id',$params['worker_course_id'])->select()->toArray();
|
|
|
+ foreach ($list as &$item) {
|
|
|
+ $item['title'] = $item['trainingQuestions']['title'];
|
|
|
+ $item['question_type'] = $item['trainingQuestions']['question_type'];
|
|
|
+ $item['question_selects'] = $item['trainingQuestions']['question_selects'];
|
|
|
+ $item['question_answer'] = $item['trainingQuestions']['question_answer'];
|
|
|
+ $item['question_analysis'] = $item['trainingQuestions']['question_analysis'];
|
|
|
+ }
|
|
|
}
|
|
|
return $list;
|
|
|
} catch (\Exception $e) {
|
|
|
- self::setError($e->getMessage());
|
|
|
- return [];
|
|
|
+ throw new \Exception($e->getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -233,12 +242,18 @@ class TrainingLogic extends BaseLogic
|
|
|
public static function examStatistics($params){
|
|
|
// 计算考试结果: 总题数 正确率(>0的题数) 总得分(每题得分累计) | 总用时 是否合格
|
|
|
// training_worker_question training_worker_course
|
|
|
+ /*total_questions 总题数 correct_questions 正确题数 correct_rate_percentage 正确率 total_score 总得分
|
|
|
+
|
|
|
+ exam_time 总用时秒*/
|
|
|
+
|
|
|
$res = [];
|
|
|
$res['statistics'] = TrainingWorkerQuestion::where('worker_course_id',$params['worker_course_id'])
|
|
|
->field(['worker_course_id',Db::raw('COUNT(id) AS total_questions,SUM(CASE WHEN exam_score > 0 THEN 1 ELSE 0 END) AS correct_questions,ROUND((SUM(CASE WHEN exam_score > 0 THEN 1 ELSE 0 END) / COUNT(id)) * 100, 2) AS correct_rate_percentage,SUM(exam_score) AS total_score')])
|
|
|
->group('worker_course_id')
|
|
|
- ->select();
|
|
|
- $res['course'] = TrainingWorkerCourse::where('id',$params['worker_course_id'])->findOrEmpty()->toArray();
|
|
|
+ ->find();
|
|
|
+ $workerCourse = TrainingWorkerCourse::where('id',$params['worker_course_id'])->findOrEmpty()->toArray();
|
|
|
+ $res['statistics']['exam_time'] = $workerCourse['exam_end_time'] - $workerCourse['exam_start_time'];
|
|
|
+ $res['statistics']['study_status'] = $workerCourse['study_status'];
|
|
|
$res['statistics_list'] = TrainingWorkerQuestion::where('worker_course_id',$params['worker_course_id'])->select();
|
|
|
return $res;
|
|
|
}
|