edit-plan-sylive_vlog
This commit is contained in:
@@ -53,6 +53,7 @@ class Plan extends CI_Controller
|
||||
|
||||
$plan[] = array('url' => base_url(array('plan', 'syt', 'subscribemsg')), 'interval' => 1); //私域通模板消息
|
||||
$plan[] = array('url' => base_url(array('plan', 'syt', 'syn_polyv')), 'interval' => 60); //私域通直播间数据同步
|
||||
$plan[] = array('url' => base_url(array('plan', 'syt', 'api_viewlog')), 'interval' => 5); //私域通直播间播放日志数据同步
|
||||
$plan[] = array('url' => base_url(array('plan', 'syt', 'out_time')), 'interval' => 1); //订单过期
|
||||
$plan[] = array('url' => base_url(array('plan', 'syt', 'union_user')), 'interval' => 1); //直播数据关联用户
|
||||
$this->plan = $plan;
|
||||
|
||||
@@ -118,17 +118,13 @@ class Syt extends CI_Controller
|
||||
'playbackPV' => $value['playbackPV'], 'totalPlayDuration' => $value['totalPlayDuration'],
|
||||
'session_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
$session = ['channelId' => $item['channelId'], 'sessionId' => $value['sessionId']];
|
||||
if ($re) {//同步更新数据
|
||||
$session['id'] = $re['id'];
|
||||
$session['viewlog_time'] = $re['viewlog_time'];
|
||||
$this->mdPolyvSession->update($data, ['id' => $re['id']]);
|
||||
} else {//新增
|
||||
$data['c_time'] = time();
|
||||
$session['id'] = $this->mdPolyvSession->add($data);
|
||||
$session['startTime'] = $value['startTime'];
|
||||
}
|
||||
$this->api_viewlog($session);
|
||||
}
|
||||
$msg = "同步成功:" . json_encode($results, JSON_UNESCAPED_UNICODE);
|
||||
echo $msg . "<br>";
|
||||
@@ -150,38 +146,63 @@ class Syt extends CI_Controller
|
||||
* Created by: dengbw
|
||||
* @param $session
|
||||
*/
|
||||
private function api_viewlog($session)
|
||||
public function api_viewlog()
|
||||
{
|
||||
if ($session['viewlog_time'] && $session['viewlog_time'] != '0000-00-00 00:00:00') {
|
||||
$startTime = strtotime($session['viewlog_time']);
|
||||
} else {
|
||||
$startTime = $session['startTime'] / 1000;
|
||||
$session_id = $this->input->get('session_id');
|
||||
$redis = &load_cache('redis');
|
||||
$ckey = 'PLV_SESSION_LASTID';
|
||||
$t1 = 'lc_live_polyv_session';
|
||||
$t2 = 'lc_market_sylive_activity';
|
||||
$where = [
|
||||
"$t2.activityId>" => 0
|
||||
];
|
||||
if($session_id){
|
||||
$where["{$t1}.id"] = $session_id;
|
||||
}else{
|
||||
$last_id = $redis->get($ckey);
|
||||
$last_id && $where["{$t1}.id>"] = $last_id;
|
||||
}
|
||||
$endTime = strtotime(date('Y-m-d H:i:s'));
|
||||
//不同月份时开始取本月第1天
|
||||
if (date('m', $startTime) != date('m', $endTime)) {
|
||||
$startTime = strtotime(date('Y-m', time()) . '-01 00:00:00');
|
||||
}
|
||||
$params['channelId'] = $session['channelId'];
|
||||
$params['sessionIds'] = $session['sessionId'];
|
||||
$params['startTime'] = $startTime * 1000;
|
||||
$params['endTime'] = $endTime * 1000;
|
||||
$params['page'] = 1;
|
||||
$results = $this->getViewLog($params);
|
||||
if ($results['status'] == 'success') {
|
||||
$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;
|
||||
$fileds = "{$t1}.*,{$t2}.activityId";
|
||||
$rows = $this->db->select($fileds)->from("$t1")
|
||||
->join("$t2", "{$t2}.channelId={$t1}.channelId", 'left')
|
||||
->where($where)->order_by("{$t1}.id asc")->limit(1, 0)
|
||||
->get()->result_array();
|
||||
if($rows){
|
||||
foreach ($rows as $key => $val) {
|
||||
$p_ckey = "PLV_CID{$val['channelId']}_{$val['sessionId']}_{$val}"; //分页缓存
|
||||
$page = $redis->get($p_ckey);
|
||||
!$page && $page = 1;
|
||||
$s_msg = "开始同步{$val['activityId']}活动直播,频道id:{$val['channelId']},场次id:{$val['sessionId']},分页{$page}";
|
||||
debug_log($s_msg, $this->log_file, $this->log_dir);
|
||||
echo $s_msg."<br>";
|
||||
$params = [
|
||||
'channelId' => $val['channelId'],
|
||||
'sessionId' => $val['sessionId'],
|
||||
'startTime' => $val['startTime'],
|
||||
'endTime' => $val['endTime'],
|
||||
'page' => $page,
|
||||
'pageSize' => 100
|
||||
];
|
||||
$results = $this->getViewLog($params);
|
||||
if ($results['status'] == 'success') {
|
||||
if(!$results['data']['lastPage'] && $results['data']['pageNumber'] != $results['data']['nextPageNumber']){
|
||||
$redis->save($p_ckey,$results['data']['nextPageNumber'],24*60*60);
|
||||
$left_page = $results['data']['totalPages'] - $page;
|
||||
$msg = "第:{$page}页同步完成,剩余:{$left_page}页";
|
||||
|
||||
}else{ //执行结束
|
||||
$redis->save($ckey,$val['id']);
|
||||
$msg = "同步完成";
|
||||
}
|
||||
debug_log($msg, $this->log_file, $this->log_dir);
|
||||
echo $msg."<br>";
|
||||
}else{
|
||||
$msg = "接口错误:" . $results['message'];
|
||||
echo $msg . "<br>";
|
||||
}
|
||||
}
|
||||
//同步观看数据时间
|
||||
$this->mdPolyvSession->update(['viewlog_time' => date('Y-m-d H:i:s', $endTime)], ['id' => $session['id']]);
|
||||
}else{
|
||||
echo "不存在需要同步数据";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,4 +335,5 @@ class Syt extends CI_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user