market_live_105
This commit is contained in:
@@ -53,10 +53,10 @@ class Plan extends CI_Controller
|
||||
$plan[] = array('url' => base_url(array('plan', 'order', 'send_aggs_biz_ding_piao_rpt')), 'interval' => 1); //向飞书发送小狸播报
|
||||
|
||||
// $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' => 1); //私域通直播间播放日志数据同步
|
||||
// $plan[] = array('url' => base_url(array('plan', 'syt', 'syn_polyv')), 'interval' => 60); //私域通直播间数据同步
|
||||
// $plan[] = array('url' => base_url(array('plan', 'syt', 'api_viewlog')), 'interval' => 1); //私域通直播间播放日志数据同步
|
||||
// $plan[] = array('url' => base_url(array('plan', 'syt', 'union_user')), 'interval' => 1); //直播数据关联用户
|
||||
$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;
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ class Activity extends BaseController
|
||||
if (!$activityId) {
|
||||
$this->return_json('参数错误');
|
||||
}
|
||||
$re = $this->mdSyliveActivity->get(['activityId' => $activityId], 'activityId,title');
|
||||
$re = $this->mdSyliveActivity->get(['activityId' => $activityId], 'activityId,title,channelId');
|
||||
if (!$re) {
|
||||
$this->return_json('活动不存在');
|
||||
}
|
||||
|
||||
@@ -0,0 +1,342 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
require_once APPPATH . 'controllers/api/BaseController.php';
|
||||
|
||||
/**
|
||||
* Notes:私域直播_直播管理
|
||||
* Created on: 2022/10/21 17:15
|
||||
* Created by: dengbw
|
||||
*/
|
||||
class Live extends BaseController
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('market/Market_sylive_activity_model', 'mdSyliveActivity');
|
||||
$this->load->model('market/Market_sylive_viewlog_model', 'mdSyliveViewlog');
|
||||
$this->load->model('live/Live_polyv_session_model', 'mdPolyvSession');
|
||||
$this->load->model('live/Live_polyv_viewlog_model', 'mdPolyvViewlog');
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:直播管理列表
|
||||
* Created on: 2022/9/20 14:48
|
||||
* Created by: dengbw
|
||||
*/
|
||||
public function index_get()
|
||||
{
|
||||
$activityId = intval($this->input_param('activityId'));
|
||||
$re = $this->mdSyliveActivity->get(['activityId' => $activityId]);
|
||||
if (!$re) {
|
||||
$this->return_json('活动不存在');
|
||||
}
|
||||
$channelId = $re['channelId'] ? $re['channelId'] : '';
|
||||
$where = ['channelId' => $channelId];
|
||||
$count = $this->mdPolyvSession->count($where);
|
||||
$list = [];
|
||||
if ($count) {
|
||||
$res = $this->mdPolyvSession->select($where, "startTime desc");
|
||||
foreach ($res as $key => $value) {
|
||||
$setValue = $value;
|
||||
$setValue['duration'] = $value['duration'] ? ceil($value['duration'] / 60) : '0';
|
||||
$setValue['totalPlayDuration'] = $value['totalPlayDuration'] ? ceil($value['totalPlayDuration'] / 60) : '0';
|
||||
$setValue['startTime'] = $value['startTime'] ? date('Y-m-d H:i:s', $value['startTime'] / 1000) : '';
|
||||
$setValue['endTime'] = $value['endTime'] ? date('Y-m-d H:i:s', $value['endTime'] / 1000) : '';
|
||||
$setValue['viewlogTime'] = $value['viewlog_time'] != '0000-00-00 00:00:00'
|
||||
? date('Y-m-d H:i', strtotime($value['viewlog_time'])) : '';
|
||||
$setValue['sessionTime'] = $value['session_time'] != '0000-00-00 00:00:00' ?
|
||||
date('Y-m-d H:i', strtotime($value['session_time'])) : '';
|
||||
$list[] = $setValue;
|
||||
}
|
||||
}
|
||||
$date = ['list' => $list, 'count' => $count];
|
||||
$this->return_response_list($date);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:同步频道多场次数据
|
||||
* Created on: 2023/1/3 14:28
|
||||
* Created by: dengbw
|
||||
*/
|
||||
public function session_api_get()
|
||||
{
|
||||
$activityId = intval($this->input_param('activityId'));
|
||||
$channelId = $this->input_param('channelId');
|
||||
$sessionId = $this->input_param('sessionId');
|
||||
if (!$channelId) {
|
||||
$this->return_json('参数错误');
|
||||
}
|
||||
$this->load->library('PolyvApi');
|
||||
$polyv = new PolyvApi(['channel_id' => $channelId]);
|
||||
if ($sessionId) {
|
||||
$where['sessionIds'] = $sessionId;
|
||||
} else {
|
||||
$re = $this->mdSyliveActivity->get(['activityId' => $activityId]);
|
||||
if (!$re) {
|
||||
$this->return_json('活动不存在');
|
||||
}
|
||||
$where['startTime'] = strtotime($re['timeStart']) * 1000;
|
||||
$where['endTime'] = strtotime($re['timeEnd']) * 1000;
|
||||
}
|
||||
$results = $polyv->getSessionStats($where);
|
||||
if ($results['status'] == 'success') {
|
||||
foreach ($results['data']['list'] as $key => $value) {
|
||||
$re = $this->mdPolyvSession->get(['channelId' => $channelId, 'sessionId' => $value['sessionId']]);
|
||||
$data = [
|
||||
'channelId' => $value['channelId'], 'sessionId' => $value['sessionId'], 'name' => $value['name'],
|
||||
'startTime' => $value['startTime'], 'endTime' => $value['endTime'], 'duration' => $value['duration'],
|
||||
'liveUV' => $value['liveUV'], 'livePV' => $value['livePV'], 'playbackUV' => $value['playbackUV'],
|
||||
'playbackPV' => $value['playbackPV'], 'totalPlayDuration' => $value['totalPlayDuration'],
|
||||
'session_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
if ($re) {//同步更新数据
|
||||
$this->mdPolyvSession->update($data, ['id' => $re['id']]);
|
||||
} else {//新增
|
||||
$data['c_time'] = time();
|
||||
$this->mdPolyvSession->add($data);
|
||||
}
|
||||
}
|
||||
$this->return_response($results);
|
||||
} else {
|
||||
$this->return_json($results['message']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:同步直播观看详情数据
|
||||
* Created on: 2022/12/26 16:49
|
||||
* Created by: dengbw
|
||||
*/
|
||||
public function view_api_get()
|
||||
{
|
||||
$this->load->model('market/market_sylive_user_model', 'mdSyliveUser');
|
||||
$this->load->model('market/market_sylive_activity_user_model', 'mdSyliveActivityUser');
|
||||
$this->load->model('market/Market_sylive_groups_user_model', 'mdSyliveGroupsUser');
|
||||
$activityId = intval($this->input_param('activityId'));
|
||||
$channelId = $this->input_param('channelId');
|
||||
$sessionId = $this->input_param('sessionId');
|
||||
$page = $this->input_param('page');
|
||||
if (!$activityId) {
|
||||
$this->return_json('活动id不能为空');
|
||||
}
|
||||
if (!$channelId) {
|
||||
$this->return_json('频道id不能为空');
|
||||
}
|
||||
if (!$channelId) {
|
||||
$this->return_json('场次id不能为空');
|
||||
}
|
||||
!$page && $page = 1;
|
||||
$re_session = $this->mdPolyvSession->get(['channelId' => $channelId, 'sessionId' => $sessionId]);
|
||||
if (!$re_session) {
|
||||
$this->return_json('无此场次数据');
|
||||
}
|
||||
$params['sessionIds'] = $sessionId;
|
||||
$params['startTime'] = $re_session['startTime'];
|
||||
$params['endTime'] = $re_session['endTime'];
|
||||
$params['page'] = $page;
|
||||
$params['pageSize'] = 100;
|
||||
$this->load->library('PolyvApi');
|
||||
$polyv = new PolyvApi(['channel_id' => $channelId]);
|
||||
$results = $polyv->getViewLog($params);
|
||||
$percent = $nextPageNumber = 0;
|
||||
if ($results['status'] == 'success') {
|
||||
$percent = ceil(($results['data']['pageNumber'] / $results['data']['totalPages']) * 100);
|
||||
if (!$results['data']['lastPage'] && ($results['data']['pageNumber'] != $results['data']['nextPageNumber'])) {
|
||||
$nextPageNumber = $results['data']['nextPageNumber'];
|
||||
}
|
||||
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']]);
|
||||
$vlogId = $re['id'];
|
||||
} else {//新增
|
||||
$data['c_time'] = time();
|
||||
//新增数据
|
||||
$vlogId = $this->mdPolyvViewlog->add($data);
|
||||
}
|
||||
if ($vlogId) {//私域直播_观看日志
|
||||
$re_user = $this->mdSyliveUser->get(['unionid' => $data['param1']]);
|
||||
if ($re_user) {
|
||||
$ac_user = $this->mdSyliveActivityUser->get(['activityId' => $activityId, 'userId' => $re_user['userId']]);
|
||||
if ($ac_user) {
|
||||
$addData = [
|
||||
'userId' => $re_user['userId'],
|
||||
'vlogId' => $vlogId,
|
||||
'activityId' => $activityId,
|
||||
'playId' => $data['playId'],
|
||||
'playDuration' => $data['playDuration'],
|
||||
'stayDuration' => $data['stayDuration']
|
||||
];
|
||||
$p_user = $ac_user;
|
||||
if ($ac_user['channelId']) {//顾问
|
||||
$ch_user = $this->mdSyliveGroupsUser->get(['activityId' => $activityId, 'userId' => $ac_user['channelId']]);
|
||||
if ($ch_user) {
|
||||
$p_user = $ch_user;
|
||||
$addData['cfUserId'] = $p_user['userId'];
|
||||
}
|
||||
}
|
||||
$p_user['bizId'] && $addData['bizId'] = $p_user['bizId'];
|
||||
$p_user['levelId1'] && $addData['levelId1'] = $p_user['levelId1'];
|
||||
$p_user['levelId2'] && $addData['levelId2'] = $p_user['levelId2'];
|
||||
$p_user['levelId3'] && $addData['levelId3'] = $p_user['levelId3'];
|
||||
$re_log = $this->mdSyliveViewlog->get(['vlogId' => $vlogId]);
|
||||
if ($re_log) {
|
||||
$this->mdSyliveViewlog->update($addData, ['id' => $re_log['id']]);
|
||||
} else {
|
||||
$addData['createTime'] = time();
|
||||
$this->mdSyliveViewlog->add($addData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->mdPolyvSession->update(['viewlog_time' => date('Y-m-d H:i:s')],
|
||||
['channelId' => $channelId, 'sessionId' => $sessionId]);
|
||||
}
|
||||
$date = ['percent' => $percent, 'nextPageNumber' => $nextPageNumber];
|
||||
$this->return_response_list($date);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:订单管理列表
|
||||
* Created on: 2022/12/08 14:48
|
||||
* Created by: dengbw
|
||||
*/
|
||||
public function viewlog_get()
|
||||
{
|
||||
$date = $this->viewlogList($this->inputs);
|
||||
$this->return_response_list($date);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:导出订单数据
|
||||
* Created on: 2022/12/08 15:26
|
||||
* Created by: dengbw
|
||||
*/
|
||||
public function export_viewlog_get()
|
||||
{
|
||||
$this->inputs['page'] = 1;
|
||||
$this->inputs['limit'] = 10000;
|
||||
$date = $this->viewlogList($this->inputs);
|
||||
$this->return_response_list($date);
|
||||
}
|
||||
|
||||
private function viewlogList($params)
|
||||
{
|
||||
$this->load->model('market/Market_sylive_groups_model', 'mdSyliveGroups');
|
||||
$this->load->model('market/Market_sylive_user_model', 'mdSyliveUser');
|
||||
$activityId = intval($params['activityId']);
|
||||
$bizId = intval($params['bizId']);
|
||||
$sessionId = $params['sessionId'];
|
||||
$page = $params['page'];
|
||||
$limit = $params['limit'];
|
||||
!$page && $page = 1;
|
||||
!$limit && $limit = 10;
|
||||
$where['a.activityId'] = $activityId;
|
||||
$sessionId && $where['b.sessionId'] = $sessionId;
|
||||
if ($bizId) {
|
||||
$res_org = $this->mdSyliveGroups->get(["groupsId" => $bizId]);
|
||||
if ($res_org) {
|
||||
if ($res_org['groupsLevel']) {
|
||||
$levelId = 'a.levelId' . $res_org['groupsLevel'];
|
||||
$where[$levelId] = $bizId;
|
||||
} else if ($res_org['parentId']) {//门店
|
||||
$where['a.bizId'] = $bizId;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($limit == 10000) {
|
||||
$count = $limit;
|
||||
} else {
|
||||
$count = $this->db->select('a.id')
|
||||
->from('lc_market_sylive_viewlog as a')
|
||||
->join('lc_live_polyv_viewlog as b', "b.id=a.vlogId", 'left')
|
||||
->where($where)
|
||||
->count_all_results();
|
||||
}
|
||||
$list = [];
|
||||
if ($count) {
|
||||
$offset = ($page - 1) * $limit;
|
||||
$res = $this->db->select('a.*,b.createdTime as time')
|
||||
->from('lc_market_sylive_viewlog as a')
|
||||
->join('lc_live_polyv_viewlog as b', "b.id=a.vlogId", 'left')
|
||||
->where($where)
|
||||
->order_by('b.id Desc')
|
||||
->limit($limit, $offset)
|
||||
->get()->result_array();
|
||||
$user_ids = implode(",", array_column($res, 'userId'));
|
||||
$map_user = $this->mdSyliveUser->map('userId', 'uname', ["userId in({$user_ids})" => null]);
|
||||
foreach ($res as $v) {
|
||||
$uname = '';
|
||||
$consultant = $this->consultantGet(['userId' => $v['userId']
|
||||
, 'levelId1' => $v['levelId1'], 'levelId2' => $v['levelId2'], 'levelId3' => $v['levelId3']
|
||||
, 'bizId' => $v['bizId'], 'cfUserId' => $v['cfUserId']]);
|
||||
$playDuration = '0';
|
||||
if ($v['playDuration']) {
|
||||
$format = $v['playDuration'] >= 3600 ? 'H:i:s' : 'i:s';//大1小时
|
||||
$playDuration = gmdate($format, $v['playDuration']);
|
||||
}
|
||||
$map_user[$v['userId']] && $uname = $map_user[$v['userId']];
|
||||
$item = [
|
||||
'userId' => $v['userId'], 'uname' => $uname, 'playDuration' => $playDuration,
|
||||
'createTime' => date('Y-m-d H:i:s', $v['time'] / 1000)
|
||||
, 'levelName1' => $consultant['levelName1'], 'levelName2' => $consultant['levelName2'], 'levelName3' => $consultant['levelName3']
|
||||
, 'stores' => $consultant['stores'], 'consultant' => $consultant['consultant']
|
||||
];
|
||||
$list[] = $item;
|
||||
}
|
||||
}
|
||||
if ($limit == 10000) {
|
||||
return $list;
|
||||
} else {
|
||||
return ['list' => $list, 'count' => $count];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes:获取顾问信息
|
||||
* Created on: 2022/12/08 11:29
|
||||
* Created by: dengbw
|
||||
* @param $params
|
||||
* @return string
|
||||
*/
|
||||
private function consultantGet($params)
|
||||
{
|
||||
$stores = $consultant = $levelName1 = $levelName2 = $levelName3 = '';
|
||||
$levelId1 = intval($params['levelId1']);
|
||||
$levelId2 = intval($params['levelId2']);
|
||||
$levelId3 = intval($params['levelId3']);
|
||||
$bizId = intval($params['bizId']);
|
||||
$cfUserId = intval($params['cfUserId']);
|
||||
$res_org = $this->mdSyliveGroups->get(["groupsId" => $bizId]);
|
||||
$res_org['groupsName'] && $stores = $res_org['groupsName'];
|
||||
if ($levelId1) {
|
||||
$res_org = $this->mdSyliveGroups->get(["groupsId" => $levelId1]);
|
||||
$res_org['groupsName'] && $levelName1 = $res_org['groupsName'];
|
||||
}
|
||||
if ($levelId2) {
|
||||
$res_org = $this->mdSyliveGroups->get(["groupsId" => $levelId2]);
|
||||
$res_org['groupsName'] && $levelName2 = $res_org['groupsName'];
|
||||
}
|
||||
if ($levelId3) {
|
||||
$res_org = $this->mdSyliveGroups->get(["groupsId" => $levelId3]);
|
||||
$res_org['groupsName'] && $levelName3 = $res_org['groupsName'];
|
||||
}
|
||||
$re_user = $this->mdSyliveUser->get(['userId' => $cfUserId]);
|
||||
$re_user['uname'] && $consultant = $re_user['uname'];
|
||||
return ['stores' => $stores, 'consultant' => $consultant, 'levelName1' => $levelName1,
|
||||
'levelName2' => $levelName2, 'levelName3' => $levelName3];
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user