123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- namespace app\client\controller;
- use app\model\TrainClass;
- use app\model\TrainCourse;
- use app\model\TrainDoneLog;
- use think\facade\Db;
- use think\facade\Console;
- use app\model\TrainCourseView;
- use app\model\TrainClassCate;
- use app\model\Company;
- use app\event\FootPrints;
- class Train extends Base
- {
- public function __construct()
- {
- $this->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;
- }
- }
- }
- ?>
|