InfoController.class.php
9.02 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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 17/4/27
* Time: 14:51
*/
namespace Apicp\Controller\Source;
use Com\PackageValidate;
use Common\Common\Constant;
use Common\Service\SourceAttachService;
use Common\Service\SourceService;
class InfoController extends \Apicp\Controller\AbstractController
{
/**
* Info
* @author tangxingguo
* @desc 素材详情接口
* @param Int source_id:true 素材主键ID
* @return array 素材详情
array(
'source_id' => 'xxx', // 素材主键ID
'source_type' => 1, // 素材类型(1=图文素材;2=音图素材;3=视频素材;4=文件素材;5=外部素材)
'source_title' => '素材1', // 素材名称
'author' => '吆西', // 作者
'content' => 'aaa', // 内容描述
'link' => 'http://www.baidu.com/001.mp3', // 外部素材url(source_type=5时使用)
'audio_imgs' => array( // 音图内容(source_type=2时使用)
array(
'at_id' => '111', // 图片附件ID
'at_url' => 'http://www.vchangyi.com/001.jpg', // 图片附件地址
'audios' => array( // 音频附件
array(
'at_id' => '111', // 音频附件ID
'at_name' => 'ccc', // 音频附件名称
'at_time' => '123432', // 音频附件时长(毫秒)
'at_url' => 'http://www.vchangyi.com/001.jpg', // 音频附件地址
),
)
),
),
'videos' => array( // 视频内容(source_type=3时使用)
array(
'at_id' => '8765432345', // 视频附件ID
'at_name' => 'aaa', // 视频附件名称
'at_time' => '12345432', // 视频附件时长(毫秒)
'at_size' => '123233', // 视频附件尺寸(单位字节)
'at_url' => 'http://www.vchangyi.com/001.jpg', // 视频附件地址
'at_convert_url' => 'http://www.vchangyi.com/001.mp3', // 视频附件转码后的Url(文件、视频附件转码成功后才有值)
'at_suffix' => '.xml', // 附件后缀
),
),
'files' => array( // 文件内容(source_type=4时使用,只有1个附件)
array(
'at_id' => '8765432345', // 文件附件ID
'at_name' => 'aaa', // 文件附件名称
'at_time' => '12345432', // 文件附件时长(毫秒)
'at_size' => '123233', // 文件附件尺寸(单位字节)
'at_url' => 'http://www.vchangyi.com/001.jpg', // 文件附件地址
'at_convert_url' => 'http://www.vchangyi.com/001.mp3', // 文件附件转码后的Url(文件、视频附件转码成功后才有值)
'at_suffix' => '.xml', // 附件后缀
)
),
'attachs' => array( // 附件(source_type=1、2、3时使用,最多5个附件)
array(
'at_id' => '8765432345', // 附件ID
'at_name' => 'aaa', // 附件名称
'at_time' => '12345432', // 附件时长(毫秒)
'at_size' => '123233', // 附件尺寸(单位字节)
'at_url' => 'http://www.vchangyi.com/001.jpg', // 附件地址
'at_convert_url' => 'http://www.vchangyi.com/001.mp3', // 附件转码后的Url(文件、视频附件转码成功后才有值)
'at_suffix' => '.xml', // 附件后缀
),
),
'is_download' => 1, // 附件是否支持下载(1=不支持;2=支持)
'source_status' => 2, // 素材状态(1=转码中;2=正常)
'study_time' => 0, // 学习时长,单位:分钟
);
*/
public function Index_post()
{
// 验证规则
$rules = [
'source_id' => 'require|integer',
];
// 验证数据
$validate = new PackageValidate($rules, [], array_keys($rules));
$postData = $validate->postData;
$sourceId = $postData['source_id'];
$sourceServ = new SourceService();
// 素材数据
$sourceInfo = $sourceServ->get($sourceId);
// 素材数据不存在
if (empty($sourceInfo)) {
E('_ERR_SOURCE_DATA_NOT_FOUND');
}
// 音图
if (Constant::SOURCE_TYPE_AUDIO_IMG == $sourceInfo['source_type'] && $sourceInfo['audio_imgs']) {
// 音频素材存在音频文件,格式化
$sourceInfo['audio_imgs'] = unserialize($sourceInfo['audio_imgs']);
}
// 取素材附件
$attach = [
'videos' => [],
'files' => [],
'attachs' => [],
];
$attachServ = new SourceAttachService();
$list = $attachServ->list_by_conds(['source_id' => $sourceId]);
// 格式化附件数据
$list = $this->attach_format($list);
if ($list) {
foreach ($list as $v) {
// 取尾缀
$v['at_suffix'] = end(explode('.', $v['at_name']));
switch ($v['at_type']) {
// 视频文件
case Constant::ATTACH_TYPE_VIDEO:
$attach['videos'][] = $v;
break;
// 文件附件
case Constant::ATTACH_TYPE_FILE:
// 附件地址加入鉴权参数
$params = [
'_id' => json_encode(['article_id' => 1]),
'user' => $this->_login->user,
];
$v['at_url'] = fileUrl($v['at_url'], $params);
$v['at_convert_url'] = fileUrl($v['at_convert_url'], $params);
if (Constant::SOURCE_TYPE_FILE == $sourceInfo['source_type']) {
$attach['files'][] = $v;
} else {
$attach['attachs'][] = $v;
}
break;
}
}
}
// 合并数据
$sourceInfo = array_merge($sourceInfo, $attach);
$this->_result = $this->source_info_format($sourceInfo);
}
/**
* 素材数据格式化
* @param array $data 待格式化素材数据
*
* @return array
*/
private function source_info_format($data = [])
{
if (empty($data)) {
return $data;
}
$result = [
'source_id' => rintval($data['source_id']),
'source_type' => rintval($data['source_type']),
'source_title' => $data['source_title'],
'author' => $data['author'],
'content' => $data['content'],
'link' => $data['link'],
'is_download' => rintval($data['is_download']),
'source_status' => rintval($data['source_status']),
'update_time' => rintval($data['update_time']),
'study_time' => rintval($data['study_time']),
'audio_imgs' => $data['audio_imgs'],
'videos' => $data['videos'],
'files' => $data['files'],
'attachs' => $data['attachs']
];
return $result;
}
/**
* 附件数据格式化
* @param array $data 待格式化附件数据
*
* @return array
*/
private function attach_format($data = [])
{
$result = [];
if (empty($data)) {
return $result;
}
foreach ($data as $value) {
$result[] = [
'source_attach_id' => rintval($value['source_attach_id']),
'source_id' => rintval($value['source_id']),
'at_id' => $value['at_id'],
'at_name' => $value['at_name'],
'at_type' => rintval($value['at_type']),
'at_time' => rintval($value['at_time']),
'at_size' => rintval($value['at_size']),
'at_url' => $value['at_url'],
'at_convert_url' => $value['at_convert_url'],
'at_cover_url' => $value['at_cover_url']
];
}
return $result;
}
}