success('同意自定义请求头'); } parent::_initialize(); } /** * 未完成考试列表 * @param TrainService $service */ public function getUndoneExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,['phone' => 'require']); if($res !== true){ $this->error($res); } // 获取数据 $data = $service->getUndoneExam($params['phone']); $this->success('ok',$data); } /** * 及格考试列表 * @param TrainService $service */ public function getQualifiedExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,['phone' => 'require']); if($res !== true){ $this->error($res); } // 获取数据 $data = $service->getQualifiedExam($params['phone']); $this->success('ok',$data); } /** * 不格考试列表 * @param TrainService $service */ public function getUnqualifiedExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,['phone' => 'require']); if($res !== true){ $this->error($res); } // 获取数据 $data = $service->getQualifiedExam($params['phone'], true); $this->success('ok',$data); } /** * 获取缺考的考试 * @param TrainService $service */ public function getMissedExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,['phone' => 'require']); if($res !== true){ $this->error($res); } // 获取数据 $data = $service->getMissedExam($params['phone']); $this->success('ok',$data); } /** * 获取考试的考题 * @param TrainService $service */ public function getExamQuestions(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,['exam_id' => 'require']); if($res !== true){ $this->error($res); } // 获取数据 $exam = $service->getExam($params['exam_id']); $questions = $service->getExamQuestions($params['exam_id']); $data = [ 'exam_id' => $exam['id'], 'title' => $exam['title'], 'duration' => $exam['duration'], 'questions' => $questions ]; $this->success('ok',$data); } /** * 开始考试 * @param TrainService $service */ public function startExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,[ 'result_id' => 'require', ]); if($res !== true){ $this->error($res); } $result = $service->getResult($params['result_id']); if($result['status'] !== 0){ $this->error('当前状态无法开始考试'); } $exam = $service->getExam($result['exam_id']); $now = $this->request->time(); if($now > strtotime($exam['end_time'])){ $this->error('考试已截止'); } // 获取数据 $data = $service->startExam($params['result_id']); $this->success('ok',$data); } /** * 重考 * @param TrainService $service */ public function retakeExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params,[ 'result_id' => 'require', ]); if($res !== true){ $this->error($res); } $result = $service->getResult($params['result_id']); if($result['status'] !== 2){ $this->error('当前状态无法开始重考'); } $exam = $service->getExam($result['exam_id']); $now = $this->request->time(); if($now > strtotime($exam['end_time'])){ $this->error('考试已截止'); } // 获取数据 $data = $service->retakeExam($params['result_id']); $this->success('ok',$data); } /** * 提交考试 * @param TrainService $service */ public function subExam(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params, [ 'result_id' => 'require', 'record' => 'require', ]); if($res !== true){ $this->error($res); } // 考试状态验证 $result = $service->getResult($params['result_id']); $exam = $service->getExam($result['exam_id']); if($result['status'] !== 1){ $this->error('当前状态无法提交考试'); } // 考试是否超时 // if((time() - strtotime($result['start_time'])) > ($exam['duration'] * 60)){ // $this->error('已超出答题时长无法提交。开始答题时间:' . $result['start_time']); // } // 考试是否截止 $now = $this->request->time(); if($now > strtotime($exam['end_time'])){ $this->error('考试已截止'); } // 提交 $res = $service->subExam($params['result_id'], $params['record']); if(!$res){ $this->error($service->getError()); } $this->success('ok',$res); } /** * 获取剩余考试时间 * @param TrainService $service */ public function getRemainingTime(TrainService $service) { // 验证 $params = $this->request->param(); $res = $this->validate($params, ['result_id' => 'require']); if($res !== true){ $this->error($res); } $data = $service->getRemainingTime($params['result_id']); $this->success('ok',[ 'time' => $data ]); } /** * 获取用户详情 * @param DingTalk $dingTalkService */ public function getUserDetail(DingTalk $dingTalkService) { // 验证 $params = $this->request->param(); $res = $this->validate($params, ['code' => 'require']); if($res !== true){ $this->error($res); } // 获取access_token $token = $dingTalkService->getToken(); if(!$token){ $this->error('获取access_token失败:' . $dingTalkService->getError()); } // 获取用户userid $user_id = $dingTalkService->getUserId($params['code'], $token); if(!$user_id){ $this->error('获取用户userid失败:'. $dingTalkService->getError()); } // 获取用户详情 $detail = $dingTalkService->getUserDetail($user_id, $token); if(!$detail){ $this->error('获取用户详情失败:'. $dingTalkService->getError()); } $this->success('ok',$detail); } }