request = request(); $token = $this->request->token; $root_id = $token['root_org']; if(!in_array($root_id,[23])) return json(['code' => 0, 'data' => '']); } /** * 课程分类列表接口 */ public function get_train_class_cate() { $token = $this->request->token; $w[] = ['root_id','=',$token['root_org']]; $w[] = ['pid','=',0]; $list = TrainClassCate::where($w)->field('id,name')->order(['order'=>'asc','id'=>'desc'])->select(); $footdata = ['id'=>(int)$token['root_org']]; event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $footdata, 'TrainClassList')); return json(['code' => 0, 'data' => $list]); } /** * 获取课程培训标签 */ public function get_train_class_label() { $token = $this->request->token; $pid = input('pid',0); $w[] = ['root_id','=',$token['root_org']]; $w[] = ['pid','=',$pid]; $list = TrainClassCate::where($w)->field('id,name')->order('id asc')->select(); return json(['code' => 0, 'data' => $list]); } /** * 课程列表接口 */ public function trainClassList() { $token = $this->request->token; $param = $this->request->only(['page'=>1,'limit'=>10]); $condition = [ ['root_id','=',$token['root_org']], ['del','=',0], ['publish','=',1], ['from_type','=',0] ]; $cate = input('cate',''); if ($cate) $condition[] = ['cate','=',$cate]; $label = input('label',''); if ($label) $condition[] = ['label','=',$label]; $keyword = input('keyword',''); if ($keyword) $condition[] = ['title','like','%'.trim($keyword).'%']; $sql = TrainClass::field('id,title,cover,course_id,category,view,train_employee,addtime,type'); $data = $sql->where($condition)->page($param['page'],$param['limit'])->order('addtime desc')->select()->toArray(); // 查询课程多少人参与,课程章节数 foreach($data as &$item){ $item['course_num'] = empty($item['course_id']) ? 0 : count(explode(',',$item['course_id'])); } return json(['code' => 0, 'data' => $data]); } /** * 课程课件列表 */ public function trainCourseList($page , $class_id) { $from = input('from',0) ? 1 : 0; $class = TrainClass::where(['id'=>$class_id , 'root_id'=>$this->request->token['root_org'] , 'publish'=>1 , 'del'=>0])->field('course_id,type')->find(); if(empty($class)) return json(['code' => 0, 'data' => []]); $data = TrainCourse::field('id,title,type')->where([['id', 'in', $class['course_id']],['root_id','=',$this->request->token['root_org']]])->page($page , 20)->order('addtime desc')->select()->toArray(); return json(['code' => 0, 'data' => $data]); } /** * 课程内容详情 */ public function classDetail($class_id) { $token = $this->request->token; $from = input('from',0) ? 1 : 0; $data = TrainClass::where([['id','=',$class_id],['root_id','=',$token['root_org']],['del','=',0],['publish','=',1]])->field('id,title,cover,des,course_id,type,category,train_employee,addtime,from_type,from_root_id')->find(); if(empty($data)) return json(['code' => 0, 'data' => []]); $data['course_num'] = empty($data['course_id']) ? 0 : count(explode(',',$data['course_id'])); $data['done_log_num'] = TrainDoneLog::where([['from','=',$from],['class_id','=',$data['id']] , ['root_id','=',$token['root_org']] , ['done_percent','>',0]])->count(); //课程来源 if ($data['from_type'] == 0) { $data['from'] = '店面发布'; } elseif ($data['from_type'] == 1) { $data['from'] = '集团指派'; } else { $company = Company::where('root_id',$data['from_root_id'])->value('company_name'); $data['from'] = '集团从'.$company.'共享'; } event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $data, 'TrainClass')); return json(['code' => 0, 'data' => $data]); } /** * 课件内容详情 */ public function courseDetail($course_id,$class_id) { $token = $this->request->token; $data = TrainCourse::where(['id'=> $course_id , 'root_id'=>$token['root_org']])->find()->toArray(); $data['page_num'] = 0; //pdf 页数 if ($data['type']=='pdf') { $data['page_num'] = $data['file'] ? $this->getPageTotal($data['file']) : 0; } $data['class_title'] = TrainClass::where([['id','=',$class_id],['root_id','=',$token['root_org']]])->value('title'); $data['class_id'] = $class_id; event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $data, 'TrainCourse')); return json(['code' => 0, 'data' => $data]); } /** * 获取PDF的页数 */ public function getPageTotal($path){ // 打开文件 if (!$fp = @fopen($path,"r")) { $error = "打开文件{$path}失败"; return 0; } else { $max=0; while(!feof($fp)) { $line = fgets($fp,255); if (preg_match('/\/Count [0-9]+/', $line, $matches)){ preg_match('/[0-9]+/',$matches[0], $matches2); if ($max<$matches2[0]) $max=$matches2[0]; } } fclose($fp); // 返回页数 return $max; } } } ?>