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