<?php /** * Created by PhpStorm. * User: liyifei2012it * Date: 18/4/2 * Time: 11:23 */ namespace Api\Controller\Task; use Com\PackageValidate; use Common\Common\Constant; use Common\Common\Course; use Common\Common\Train; use Common\Service\ContentService; use Common\Service\TeacherService; class CourseListController extends \Api\Controller\AbstractController { /** * CourseList * @author tangxingguo * @desc 授课记录列表接口(讲师本人查看的授课记录页) * @param Int page:false:1 页码 * @param Int limit:false:20 每页记录数 * @param Int teacher_task_id 授课任务ID * @return array|bool 课程列表 array( 'page' => 1, // 页码 'limit' => 20, // 每页记录数 'total' => 200, // 记录总数 'list' => array( array( 'article_id' => 12, // 课程ID 'title' => '冰糖雪梨', // 课程标题 'article_type' => 1, // 课程类型(1=单课程,2=系列课程) 'cover_url' => 'http://qy.vchangyi.org', // 封面图片URL 'study_total' => 10, // 已学习人数 'course_nature' => 3, // 课程性质(1=必修课;2=选修课;3=公共课) 'data_type' => 1, // 数据类型(1=线上课程;2=线下课程) 'article_type' => 1, // 线上课程存在,课程类型(1=单课程;2=系列课程) 'plan_id' => 1, // 培训计划ID 'ed_id' => 1, // 培训ID ), ), ) */ public function Index_post() { // 验证规则 $rules = [ 'page' => 'integer', 'limit' => 'integer', 'teacher_task_id' => 'integer|gt:0', ]; // 验证数据 $validate = new PackageValidate($rules, [], array_keys($rules)); $postData = $validate->postData; $teacherServ = new TeacherService(); $teacher = $teacherServ->get_by_conds([ 'uid' => $this->uid, 'teacher_status' => Constant::TEACHER_STATUS_NORMAL ]); if (empty($teacher)) { E('_ERR_TEACHER_NOT_FOUND'); } // 分页 $postData['page'] = $postData['page'] ?? Constant::PAGING_DEFAULT_PAGE; $postData['limit'] = $postData['limit'] ?? Constant::PAGING_DEFAULT_LIMIT; list($start, $perpage) = page_limit($postData['page'], $postData['limit']); // 排序 $orders = [ 'created' => 'DESC' ]; // 课程列表 $contentServ = new ContentService(); $conds = [ 'teacher_id' => $teacher['teacher_id'], ]; if (isset($postData['teacher_task_id'])) { $conds['teacher_task_id'] = $postData['teacher_task_id']; } $list = $contentServ->list_by_conds($conds, [$start, $perpage], $orders); // 取plan_id、ed_id;线上课程课程类型(系列课程、单课程) $onlineArticleIds = []; $offlineArticleIds = []; foreach ($list as $key => $value) { // 线上课程 if ($value['data_type'] == Constant::TASK_CONTENT_DATA_TYPE_ONLINE) { $onlineArticleIds[] = $value['app_data_id']; // 线下课程 } elseif ($value['data_type'] == Constant::TASK_CONTENT_DATA_TYPE_OFFLINE) { $offlineArticleIds[] = $value['app_data_id']; } } // 线上课程 $train = &Train::instance(); if (!empty($onlineArticleIds)) { // 取课程类型 $course = &Course::instance(); $onlineArticleList = $course->getArticleList(['article_id' => $onlineArticleIds]); $onlineArticleList = array_combine_by_key($onlineArticleList, 'article_id'); } // 线下课程 if (!empty($offlineArticleIds)) { // 取plan_id、ed_id; $offlinePlanList = $train->getPlanList([ 'plan_type' => Train::PLAN_TYPE_OFFLINE_COURSE, 'plan_obj_id' => $offlineArticleIds, ]); $offlinePlanList = array_combine_by_key($offlinePlanList, 'plan_obj_id'); } // 数据拼接 foreach ($list as $k => $v) { $v['article_id'] = $v['app_data_id']; // 线上课程 if ($v['data_type'] == Constant::TASK_CONTENT_DATA_TYPE_ONLINE) { // 课程类型 $v['article_type'] = isset($onlineArticleList[$v['app_data_id']]) ? $onlineArticleList[$v['app_data_id']]['article_type'] : ''; } // 线下课程 if ($v['data_type'] == Constant::TASK_CONTENT_DATA_TYPE_OFFLINE) { // 培训计划ID $v['plan_id'] = isset($offlinePlanList[$v['app_data_id']]) ? $offlinePlanList[$v['app_data_id']]['plan_id'] : ''; // 培训ID $v['ed_id'] = isset($offlinePlanList[$v['app_data_id']]) ? $offlinePlanList[$v['app_data_id']]['ed_id'] : ''; } $list[$k] = $v; } // 课程总数 $total = $contentServ->count_by_conds($conds); $this->_result = [ 'page' => (int)$postData['page'], 'limit' => (int)$postData['limit'], 'total' => (int)$total, 'list' => $list, ]; } }