7db088250d
stylive_519_2
107 lines
4.2 KiB
PHP
107 lines
4.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Notes:保利威云直播
|
|
* Created on: 2022/05/17 17:15
|
|
* Created by: dengbw
|
|
*/
|
|
class Polyv extends HD_Controller
|
|
{
|
|
|
|
private $log_file;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->log_file = 'polyv.log';
|
|
}
|
|
|
|
/**
|
|
* Notes:查询频道直播观看详情数据
|
|
* Created on: 2022/5/17 16:01
|
|
* Created by: dengbw
|
|
* https://liche-api-dev.xiaoyu.com/plan/polyv/view_log?sd=1
|
|
* https://api.liche.cn/plan/polyv/view_log
|
|
*/
|
|
public function view_log()
|
|
{
|
|
$this->load->model('live/Live_polyv_viewlog_model', 'mdPolyvViewlog');
|
|
$this->load->library('PolyvApi');
|
|
$startTime = $endTime = time();
|
|
$redis = &load_cache('redis');
|
|
$redisKey = 'polyv_view_log_endtime';
|
|
$get_endTime = $redis->get($redisKey);
|
|
$params = $this->input->get();
|
|
if ($get_endTime && (date('Y-m-d', $get_endTime) != date('Y-m-d'))) {
|
|
$get_endTime = '';
|
|
}
|
|
if (!$get_endTime || $params['sd']) {
|
|
$startTime = strtotime(date('Y-m-d') . ' 00:00:00');
|
|
} else if ($get_endTime) {
|
|
$startTime = $get_endTime;
|
|
}
|
|
$params['startTime'] = $startTime * 1000;
|
|
$params['endTime'] = $endTime * 1000;
|
|
$params['param3'] = 'live';
|
|
$params['page'] = 1;
|
|
$results = $this->getViewLog($params);
|
|
if ($results['status'] == 'success') {
|
|
$redis->save($redisKey, $endTime, 24 * 3600);//保存最后时间
|
|
$i = 10;
|
|
while (($i--) > 0) {
|
|
if ($results['status'] == 'success' && !$results['lastPage']
|
|
&& $results['pageNumber'] != $results['nextPageNumber']) {//循环分页
|
|
$params['page'] = $results['nextPageNumber'];
|
|
$results = $this->getViewLog($params);
|
|
continue;
|
|
} else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
//if ($params['sd']) {
|
|
echo 'startTime=' . date('Y-m-d H:i:s', $startTime) . '&endTime=' . date('Y-m-d H:i:s', $endTime) . '<br><br>';
|
|
echo json_encode($results, JSON_UNESCAPED_UNICODE);
|
|
//}
|
|
}
|
|
|
|
/**
|
|
* Notes:新增/修改直播数据
|
|
* Created on: 2022/5/19 14:25
|
|
* Created by: dengbw
|
|
* @param $params
|
|
* @return bool|string
|
|
*/
|
|
private function getViewLog($params)
|
|
{
|
|
$polyv = new PolyvApi();
|
|
$results = $polyv->getViewLog($params);
|
|
if ($results['status'] == 'success') {
|
|
$addData = [];
|
|
foreach ($results['data']['contents'] as $key => $value) {
|
|
$re = $this->mdPolyvViewlog->get(['playId' => $value['playId']]);
|
|
$data = [
|
|
'channelId' => $value['channelId'], 'sessionId' => $value['sessionId'], 'playId' => $value['playId'],
|
|
'userId' => $value['userId'], 'playDuration' => $value['playDuration'], 'stayDuration' => $value['stayDuration'],
|
|
'flowSize' => $value['flowSize'], 'param1' => $value['param1'], 'param2' => $value['param2'],
|
|
'param3' => $value['param3'], 'param4' => $value['param4'], 'param5' => $value['param5'], 'ptype' => $value['ptype'],
|
|
'ipAddress' => $value['ipAddress'], 'country' => $value['country'], 'province' => $value['province'],
|
|
'city' => $value['city'], 'isp' => $value['isp'], 'referer' => $value['referer'], 'userAgent' => $value['userAgent'],
|
|
'operatingSystem' => $value['operatingSystem'], 'browser' => $value['browser'], 'isMobile' => $value['isMobile'],
|
|
'currentDay' => $value['currentDay'], 'createdTime' => $value['createdTime'], 'lastModified' => $value['lastModified'],
|
|
];
|
|
if ($re) {//同步更新数据
|
|
$this->mdPolyvViewlog->update($data, ['id' => $re['id']]);
|
|
} else {//新增
|
|
$data['c_time'] = time();
|
|
$addData[] = $data;
|
|
}
|
|
}
|
|
if ($addData && count($addData)) {//新增数据
|
|
$addData = array_reverse($addData);
|
|
$this->mdPolyvViewlog->add_batch($addData);
|
|
}
|
|
}
|
|
return $results;
|
|
}
|
|
} |