liugc пре 1 година
родитељ
комит
962ddcf602
2 измењених фајлова са 36 додато и 17 уклоњено
  1. 7 3
      app/workerapi/controller/TrainingController.php
  2. 29 14
      app/workerapi/logic/TrainingLogic.php

+ 7 - 3
app/workerapi/controller/TrainingController.php

@@ -62,9 +62,13 @@ class TrainingController extends BaseApiController
      */
     public function getQuestionList()
     {
-        $params  = request()->get();
-        $result = TrainingLogic::getQuestionList($params);
-        return $this->data($result);
+        try {
+            $params  = request()->get();
+            $result = TrainingLogic::getQuestionList($params);
+            return $this->data($result);
+        } catch (\Exception $e) {
+            return $this->fail($e->getMessage());
+        }
     }
 
 

+ 29 - 14
app/workerapi/logic/TrainingLogic.php

@@ -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;
     }