CourseListController.class.php
5.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?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,
];
}
}