From 44a8767c464839566474ef6dab76c07306e4679d Mon Sep 17 00:00:00 2001
From: lccsw <805383944@qq.com>
Date: Mon, 31 Oct 2022 10:37:21 +0800
Subject: [PATCH] edit-plan-sylive_vlog
---
api/controllers/plan/Plan.php | 1 +
api/controllers/plan/Syt.php | 86 ++++++++++++++++++++++-------------
2 files changed, 55 insertions(+), 32 deletions(-)
diff --git a/api/controllers/plan/Plan.php b/api/controllers/plan/Plan.php
index 52e21b29..a4ea0275 100644
--- a/api/controllers/plan/Plan.php
+++ b/api/controllers/plan/Plan.php
@@ -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;
diff --git a/api/controllers/plan/Syt.php b/api/controllers/plan/Syt.php
index b4dbf1f6..32144c8b 100644
--- a/api/controllers/plan/Syt.php
+++ b/api/controllers/plan/Syt.php
@@ -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 . "
";
@@ -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."
";
+ $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."
";
+ }else{
+ $msg = "接口错误:" . $results['message'];
+ echo $msg . "
";
}
}
- //同步观看数据时间
- $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
}
}
}
+
}
\ No newline at end of file