ListController.class.php
4.83 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
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 17/4/27
* Time: 11:01
*/
namespace Apicp\Controller\Source;
use Com\PackageValidate;
use Common\Service\SourceService;
use Common\Service\ArticleChapterService;
class ListController extends \Apicp\Controller\AbstractController
{
/**
* List
*
* @author liyifei
* @desc 素材列表接口
*
* @param Int page:1 当前页(默认第一页)
* @param Int limit:20 当前页条数
* @param String source_title 素材名称
* @param String source_key 素材标识
* @param String source_status 素材状态(1=转码中;2=正常;3=转码失败)
* @param String source_type 素材类型(1=图文素材;2=音图素材;3=视频素材;4=文件素材;5=外部素材)
* @param String keyword 搜索关键字(素材ID、素材标题,同时搜索)
* @param String ea_name 创建人名称
* @param Int start_time 更新开始时间(毫秒级时间戳)
* @param Int end_time 更新结束时间(毫秒级时间戳)
*
* @return array 列表信息
* array(
* 'total' => 100, // 总条数
* 'page' => 1, // 当前页
* 'limit' => 20, // 当前页条数
* 'list' => array( // 列表数据
* 'source_id' => 1, // 素材主键(页面不展示)
* 'source_title' => '电商冲击,实体店靠什么赢', // 素材标题
* 'source_status' => 1, // 素材状态(1=转码中;2=正常;3=转码失败)
* 'source_key' => 'P17042611409', // 素材ID(页面展示)
* 'source_type' => 1, // 素材类型(1=图文素材;2=音图素材;3=视频素材;4=文件素材;5=外部素材)
* 'used_total' => 2, // 关联课程数
* 'ea_name' => '爱居兔', // 创建者
* 'update_time' => 1493264288000, // 最后更新时间
* 'study_time' => 0, // 素材限制学习时长(正整数),单位:分钟
* )
* )
*/
public function Index_post()
{
// 验证规则
$rules = [
'page' => 'integer',
'limit' => 'integer',
'source_title' => 'max:64',
'source_type' => 'integer|in:1,2,3,4,5',
'source_status' => 'integer|between:1,2',
'ea_name' => 'max:50',
'start_time' => 'integer',
'end_time' => 'integer',
];
// 验证数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$postData = $validate->postData;
$postData['keyword'] = I('post.keyword', '', 'trim');
$postData['source_key'] = I('post.source_key', '', 'trim');
//默认title不为空的
$postData['title_is_require'] = '';
// 素材列表
$sourceServ = new SourceService();
$list = $sourceServ->listSource($postData);
if ($list) {
$source_ids = array_column($list, 'source_id');
// 素材被用次数
$chapterServ = new ArticleChapterService();
$chapterList = $chapterServ->list_by_conds(['source_id' => $source_ids]);
foreach ($list as $k => $v) {
$list[$k]['used_total'] = 0;
foreach ($chapterList as $chapter) {
if ($v['source_id'] == $chapter['source_id']) {
$list[$k]['used_total'] += 1;
}
}
}
}
// 数据总数
$total = $sourceServ->countSource($postData);
$this->_result = [
'page' => rintval($postData['page']),
'limit' => rintval($postData['limit']),
'total' => $total,
'list' => $this->source_data_format($list)
];
}
/**
* 素材数据格式化
*
* @param array $data 待格式化素材数据
*
* @return array 格式化后数据
*/
private function source_data_format($data = [])
{
$result = [];
if (empty($data)) {
return $result;
}
foreach ($data as $value) {
$result[] = [
'source_id' => rintval($value['source_id']),
'source_title' => $value['source_title'],
'source_status' => rintval($value['source_status']),
'source_key' => $value['source_key'],
'source_type' => rintval($value['source_type']),
'used_total' => $value['used_total'],
'ea_name' => $value['ea_name'],
'update_time' => rintval($value['update_time']),
'study_time' => rintval($value['study_time'])
];
}
return $result;
}
}