Browse Source

提交工程师面试

dongxiaoqin 1 năm trước cách đây
mục cha
commit
06d0030cdb
1 tập tin đã thay đổi với 89 bổ sung20 xóa
  1. 89 20
      app/workerapi/controller/InterviewController.php

+ 89 - 20
app/workerapi/controller/InterviewController.php

@@ -4,7 +4,8 @@ namespace app\workerapi\controller;
 
 use think\Request;
 use app\workerapi\logic\MasterWorkerLogic;
-use app\workerapi\validate\MasterWokerValidate;
+use app\common\model\master_worker\MasterWorkerInterview;
+use app\common\model\master_worker\MasterWorkerQuestion;
 use app\common\model\master_worker_register\MasterWorkerRegister;
 
 class InterviewController extends BaseApiController
@@ -112,7 +113,7 @@ class InterviewController extends BaseApiController
         $step = $request->post('step');
         // 获取所有 POST 参数
         $data = $request->post('data');
-        if ( !in_array($step, [1,2,3,4])) {
+        if ( !in_array($step, [1,2,3,4,5])) {
             return $this->fail('参数错误');
         }
         if ($step > 1 && (empty($data) || !is_array($data))) {
@@ -123,19 +124,28 @@ class InterviewController extends BaseApiController
         if (!$worker_register_id) {
             return $this->fail('ID有误');
         }
-
-        
+        $info = MasterWorkerInterview::where("worker_register_id", $worker_register_id)->findOrEmpty();
+        if ($info->isEmpty()) {
+            $info = new MasterWorkerInterview();
+            $info->worker_register_id = $worker_register_id;
+        } else if ($info->status > 0) {
+            return $this->fail('您已提交过面试题,请勿重复提交');
+        }
 
         $msg = '操作成功';
         $has_next = 1;
         $is_success = 0;
-        $tmplist = array_column($list, null, 'step');
+        $result = [];
+        $list = $this->list;
+        $list2 = $this->list2;
+        $list3 = $this->list3;
+        $tmplist = array_column($list, null, 'id');
         if ($step == 1 ) {
             $result[] = $list;
         } elseif ($step == 2) {
             foreach($data as $item) {
                 if (empty($item['id']) || ($item['id'] != 4 && empty($item['options']))) {
-                    return $this->fail('参数错误3');
+                    return $this->fail('参数错误');
                 }
                 if ($item['id'] == 5) {
                     $options = $item['options'];
@@ -146,22 +156,32 @@ class InterviewController extends BaseApiController
             }
             $key = array_search($options, $tmplist[5]['options']);
             if ($key === false || !isset($list2[$key])) {
-                $msg = '很抱歉,您的测试未通过,感谢您的关注!';
                 $has_next = 0;
-                $result = [];
+                $info->status = 2;
+                $msg = '很抱歉,您的测试未通过,感谢您的关注!';
             } else {
                 //根据上一步的选项判断
                 $result[] = $list2[$key]; 
             }
             
-        } elseif ($step == 3) {
-            $data = $data[0];
-            $id = empty($data['id']) ? 0 : $data['id'];
+            switch($key) {
+                case 0 :
+                    $info->type = 1;
+                    break;
+                case 1 : 
+                    $info->type = 2;
+                    break;
+                case 2 : 
+                    $info->type = 3;
+            }
+            $info->content = json_encode([ 1 => $data]);
+            $info->save();
             
+        } elseif ($step == 3) {
+            $data = current($data);
+            $id = empty($data['id']) ? 0 : $data['id'];            
             if ($id == 6 || $id == 7) {
-                $type = $id == 6 ? 2 : 1;
-                $question = MasterWorkerLogic::getQuestion(['type' => $type, 'category' => $data['options']]);
-                
+                $question = MasterWorkerLogic::getQuestion(['type' => $info->type, 'category' => $data['options']]);
                 foreach($question['list'] as $key => $item) {   
                     $temp = [
                         "id" => $item['id'],
@@ -175,20 +195,69 @@ class InterviewController extends BaseApiController
                 if ($data['options'] == '空调') {
                     $result[] = $list3;
                 } else {
-                    $msg = '很抱歉,您的测试未通过,感谢您的关注!';
                     $has_next = 0;
-                    $result = [];
+                    $info->status = 2;
+                    $msg = '很抱歉,您的测试未通过,感谢您的关注!';
                 }
             } else {
-                $msg = '很抱歉,您的测试未通过,感谢您的关注!';
+                return $this->fail('参数有误');
+            }
+            $content = json_decode($info->content, true);
+            $content[2] = $data;
+            $info->content = json_encode($content);
+            $info->save();
+        } elseif (($step == 4 && $info->type == 3) || $step == 5) {
+            try{
+                Db::startTrans();
+
+                MasterWorkerRegisterLogic::createMasterWorker(['worker_register_id' => $worker_register_id]);
+
+                $content = json_decode($info->content, true);
+                $content[$step - 1] = $data;
+                $info->content = json_encode($content);
+                $info->status = 1;
+                $info->save();
                 $has_next = 0;
-                $result = [];
+                $is_success = 1;
+                $msg = '恭喜您成功入驻众盾闪修平台!';
+                
+                Db::commit();
+            } catch (\Exception $e) {
+                Db::rollback();
+                return $this->fail($e->getMessage());
             }
         } else {
-            $result[] = $list3[0]; 
+            //校验
+            $data = array_column($data, null, 'id');
+            $ids = array_keys($data);
+            $answers = MasterWorkerQuestion::where('type',$info->type)->whereIn('id',$ids)->column('answer','id');
+            if (count($ids) != count($answers)) {
+                return $this->fail('题目参数有误');
+            }
+            $rights = 0;
+            foreach($data as &$item) {
+                $answer = $answers[$item['id']];
+                $item['options'] = preg_replace('/[^a-zA-Z]/', '', $item['options']);
+                if ($answer == '对' || $answer == '错') {
+                    $item['options'] = $item['options'] == 'A' ? '对' : '错';
+                }
+                if ($item['options'] == $answer) {
+                    $rights ++;
+                }
+            }
+            if ($rights / count($data) >= 0.8) {
+                $result[] = $list3[0]; 
+            } else {
+                $has_next = 0;
+                $info->status = 2;
+                $msg = '很抱歉,您的测试未通过,感谢您的关注!';
+            }
+            $content = json_decode($info->content, true);
+            $content[$step - 1] = $data;
+            $info->content = json_encode($content);
+            $info->save();
         }
         return $this->success($msg, ['has_next' => $has_next,'is_success' => $is_success, 'list' => $result], 1, 1);
     }
-    
 
 }