123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <?php
- namespace app\api\controller;
- use app\admin\library\DingTalk;
- use app\admin\service\train\TrainService;
- use app\common\controller\Api;
- /**
- * 培训相关
- */
- class Train extends Api
- {
- protected $noNeedLogin = '*';
- public function _initialize()
- {
- // 解决跨域
- if($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
- $this->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);
- }
- }
|