market_323_2

This commit is contained in:
dengbw
2023-03-23 16:35:02 +08:00
committed by lccsw
parent 263b0f98ea
commit 80cbd4ece6
5 changed files with 363 additions and 70 deletions
@@ -166,6 +166,22 @@ class groupsCustomer extends BaseController
$order = $params['order'];
!$page && $page = 1;
!$limit && $limit = 10;
$levels = [];
if ($page == 1) {
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'parentId' => 0, 'status>=' => 0]);
if ($re_gro['statisticsType']) {
$this->load->model('market/Market_sys_dictionary_data_model', 'mdSysDictionaryData');
$res_dit = $this->mdSysDictionaryData->select(['status>=' => 0, 'dictId' => $re_gro['statisticsType']], 'sortNumber asc,dictDataId desc'
, 0, 0, 'dictDataCode,dictDataName');
foreach ($res_dit as $k => $v) {
$groupsLevel = intval($v['dictDataCode']);
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'groupsLevel' => $groupsLevel, 'status>=' => 0]);
if ($re_gro) {
$levels[] = ['label' => $v['dictDataName'], 'prop' => "levelName{$groupsLevel}"];
}
}
}
}
$sort_order = 'customerId desc';
if ($sort && $order) {
$sort_order = $sort . ' ' . $order;
@@ -208,7 +224,7 @@ class groupsCustomer extends BaseController
, 'bizId' => $v['bizId'], 'cfUserId' => $v['cfUserId']]);
$status = intval($v['status']);
$statusName = $statusAry[$status];
$visitTagName = '-';
$visitTagName = '';
$visitTagId = $v['visitTagId'];
if ($visitTagId) {
$visitTagName = $visitTagAry[$visitTagId];
@@ -216,19 +232,50 @@ class groupsCustomer extends BaseController
$visitTagName = $visitTagName . '(' . $jsonData['visitTag'][$visitTagId] . ')';
}
}
$item = [
'customerId' => $v['customerId'], 'name' => $v['name'], 'mobile' => $v['mobile'], 'level' => $v['level']
, 'statusName' => $statusName, 'visitTagName' => $visitTagName, 'levelName1' => $consultant['levelName1']
, 'levelName2' => $consultant['levelName2'], 'levelName3' => $consultant['levelName3']
, 'stores' => $consultant['stores'], 'consultant' => $consultant['consultant']
$list1 = [
'customerId' => $v['customerId'], 'name' => $v['name'], 'mobile' => $v['mobile']
, 'statusName' => $statusName, 'visitTagName' => $visitTagName, 'consultant' => $consultant['consultant']
];
if ($limit == 10000) {
unset($list1['customerId']);
}
$list2 = [];
foreach ($levels as $k2 => $v2) {
$list2[$v2['prop']] = $consultant[$v2['prop']] ? $consultant[$v2['prop']] : '';
}
$item = count($list2) ? array_merge($list1, $list2) : $list1;
$item['stores'] = $consultant['stores'];
$list[] = $item;
}
}
if ($limit == 10000) {
return $list;
$columns1 = ['姓名', '手机号', '状态', '回访标签', '顾问'];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = $v['label'];
}
$columns3 = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns = array_merge($columns3, ['门店']);
return ['list' => $list, 'columns' => $columns];
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [
['prop' => 'customerId', 'label' => 'ID', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 45, 'fixed' => 'left'],
['prop' => 'name', 'label' => '姓名', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'mobile', 'label' => '手机号', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'statusName', 'label' => '状态', 'showOverflowTooltip' => true, 'minWidth' => 60, 'align' => 'center'],
['prop' => 'visitTagName', 'label' => '回访标签', 'showOverflowTooltip' => true, 'minWidth' => 100, 'align' => 'center'],
['prop' => 'consultant', 'label' => '顾问', 'showOverflowTooltip' => true, 'minWidth' => 60]
];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = ['prop' => $v['prop'], 'label' => $v['label'], 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns[] = ['prop' => 'stores', 'label' => '门店', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
@@ -244,6 +244,22 @@ class groupsExchange extends BaseController
$itemId = $params['itemId'];
!$page && $page = 1;
!$limit && $limit = 10;
$levels = [];
if ($page == 1) {
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'parentId' => 0, 'status>=' => 0]);
if ($re_gro['statisticsType']) {
$this->load->model('market/Market_sys_dictionary_data_model', 'mdSysDictionaryData');
$res_dit = $this->mdSysDictionaryData->select(['status>=' => 0, 'dictId' => $re_gro['statisticsType']], 'sortNumber asc,dictDataId desc'
, 0, 0, 'dictDataCode,dictDataName');
foreach ($res_dit as $k => $v) {
$groupsLevel = intval($v['dictDataCode']);
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'groupsLevel' => $groupsLevel, 'status>=' => 0]);
if ($re_gro) {
$levels[] = ['label' => $v['dictDataName'], 'prop' => "levelName{$groupsLevel}"];
}
}
}
}
$sort_order = 'id desc';
if ($sort && $order) {
$sort_order = $sort . ' ' . $order;
@@ -302,14 +318,25 @@ class groupsExchange extends BaseController
$useStatusName = '驳回';
}
$ifAddress = intval($map_items[$v['itemId']]);
$item = [
$list1 = [
'id' => $v['id'], 'sid' => $v['sid'], 'uname' => $v['uname'], 'mobile' => $v['mobile'], 'itemTitle' => $v['itemTitle']
, 'totalPrice' => $v['totalPrice'], 'payTime' => $v['payTime'] != '0000-00-00 00:00:00' ? $v['payTime'] : ''
, 'winTime' => $v['winTime'] ? $v['winTime'] : '', 'useStatusName' => $useStatusName, 'useStatus' => intval($useStatus)
, 'levelName1' => $consultant['levelName1'], 'levelName2' => $consultant['levelName2'], 'levelName3' => $consultant['levelName3']
, 'stores' => $consultant['stores'], 'consultant' => $consultant['consultant'], 'exchangeName' => $exchangeName
, 'ifAddress' => $ifAddress
, 'totalPrice' => $v['totalPrice'], 'exchangeName' => $exchangeName
, 'useStatusName' => $useStatusName, 'consultant' => $consultant['consultant']
, 'ifAddress' => $ifAddress, 'useStatus' => intval($useStatus)
];
if ($limit == 10000) {
unset($list1['id']);
unset($list1['ifAddress']);
unset($list1['useStatus']);
} else {
unset($list1['sid']);
}
$list2 = [];
foreach ($levels as $k2 => $v2) {
$list2[$v2['prop']] = $consultant[$v2['prop']] ? $consultant[$v2['prop']] : '';
}
$item = count($list2) ? array_merge($list1, $list2) : $list1;
$item['stores'] = $consultant['stores'];
if ($limit == 10000) {
$address = $biz = '';
$jsondata = $v['jsondata'] ? json_decode($v['jsondata'], true) : [];
@@ -319,16 +346,44 @@ class groupsExchange extends BaseController
if ($jsondata['biz']) {
$biz = $jsondata['biz'];
}
$item['address'] = $address;
$item['biz'] = $biz;
$item['address'] = $address;
}
$list[] = $item;
}
}
if ($limit == 10000) {
return $list;
$columns1 = ['订单号', '姓名', '手机号', '商品标题', '订单价格', '核销类型', '状态', '顾问'];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = $v['label'];
}
$columns3 = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns = array_merge($columns3, ['门店', '所选经销商', '地址']);
return ['list' => $list, 'columns' => $columns];
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [
['prop' => 'id', 'label' => 'ID', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 45, 'fixed' => 'left'],
['prop' => 'uname', 'label' => '姓名', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'mobile', 'label' => '手机号', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'itemTitle', 'label' => '商品标题', 'showOverflowTooltip' => true, 'minWidth' => 130],
['prop' => 'totalPrice', 'label' => '订单价格', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'exchangeName', 'label' => '核销类型', 'showOverflowTooltip' => true, 'minWidth' => 60, 'align' => 'center'],
['prop' => 'useStatus', 'label' => '状态', 'showOverflowTooltip' => true, 'minWidth' => 60, 'align' => 'center', 'slot' => 'useStatus'],
['prop' => 'consultant', 'label' => '顾问', 'showOverflowTooltip' => true, 'minWidth' => 60]
];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = ['prop' => $v['prop'], 'label' => $v['label'], 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns[] = ['prop' => 'stores', 'label' => '门店', 'showOverflowTooltip' => true, 'minWidth' => 80];
$columns[] = ['columnKey' => 'action', 'label' => '操作', 'showOverflowTooltip' => true, 'width' => 150, 'align' => 'center'
, 'resizable' => false, 'slot' => 'action'];
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
+61 -8
View File
@@ -61,6 +61,22 @@ class groupsOrder extends BaseController
$itemId = $params['itemId'];
!$page && $page = 1;
!$limit && $limit = 10;
$levels = [];
if ($page == 1) {
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'parentId' => 0, 'status>=' => 0]);
if ($re_gro['statisticsType']) {
$this->load->model('market/Market_sys_dictionary_data_model', 'mdSysDictionaryData');
$res_dit = $this->mdSysDictionaryData->select(['status>=' => 0, 'dictId' => $re_gro['statisticsType']], 'sortNumber asc,dictDataId desc'
, 0, 0, 'dictDataCode,dictDataName');
foreach ($res_dit as $k => $v) {
$groupsLevel = intval($v['dictDataCode']);
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'groupsLevel' => $groupsLevel, 'status>=' => 0]);
if ($re_gro) {
$levels[] = ['label' => $v['dictDataName'], 'prop' => "levelName{$groupsLevel}"];
}
}
}
}
$sort_order = 'id desc';
if ($sort && $order) {
if ($sort == 'statusName') {
@@ -105,14 +121,23 @@ class groupsOrder extends BaseController
$consultant = $this->consultantGet(['activityId' => $v['activityId'], 'userId' => $v['userId']
, 'levelId1' => $v['levelId1'], 'levelId2' => $v['levelId2'], 'levelId3' => $v['levelId3']
, 'bizId' => $v['bizId'], 'cfUserId' => $v['cfUserId']]);
$item = [
$list1 = [
'id' => $v['id'], 'sid' => $v['sid'], 'uname' => $v['uname'], 'mobile' => $v['mobile'], 'itemTitle' => $v['itemTitle']
, 'totalPrice' => $v['totalPrice'], 'payTime' => $v['payTime'] != '0000-00-00 00:00:00' ? $v['payTime'] : ''
, 'typeName' => $this->mdSyliveOrder->typeAry($v['type']), 'createTime' => $v['createTime']
, 'statusName' => $this->mdSyliveOrder->statusAry($v['status'])
, 'levelName1' => $consultant['levelName1'] , 'levelName2' => $consultant['levelName2'] , 'levelName3' => $consultant['levelName3']
, 'stores' => $consultant['stores'], 'consultant' => $consultant['consultant']
, 'createTime' => $v['createTime'], 'typeName' => $this->mdSyliveOrder->typeAry($v['type'])
, 'statusName' => $this->mdSyliveOrder->statusAry($v['status']), 'consultant' => $consultant['consultant']
];
if ($limit == 10000) {
unset($list1['id']);
} else {
unset($list1['sid']);
}
$list2 = [];
foreach ($levels as $k2 => $v2) {
$list2[$v2['prop']] = $consultant[$v2['prop']] ? $consultant[$v2['prop']] : '';
}
$item = count($list2) ? array_merge($list1, $list2) : $list1;
$item['stores'] = $consultant['stores'];
if ($limit == 10000) {
$address = $biz = '';
$jsondata = $v['jsondata'] ? json_decode($v['jsondata'], true) : [];
@@ -122,16 +147,44 @@ class groupsOrder extends BaseController
if ($jsondata['biz']) {
$biz = $jsondata['biz'];
}
$item['address'] = $address;
$item['biz'] = $biz;
$item['address'] = $address;
}
$list[] = $item;
}
}
if ($limit == 10000) {
return $list;
$columns1 = ['订单号', '姓名', '手机号', '商品标题', '订单价格', '付款时间', '创建时间', '订单类型', '状态', '顾问'];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = $v['label'];
}
$columns3 = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns = array_merge($columns3, ['门店', '所选经销商', '地址']);
return ['list' => $list, 'columns' => $columns];
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [
['prop' => 'id', 'label' => 'ID', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 45, 'fixed' => 'left'],
['prop' => 'uname', 'label' => '姓名', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'mobile', 'label' => '手机号', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'itemTitle', 'label' => '商品标题', 'showOverflowTooltip' => true, 'minWidth' => 130],
['prop' => 'totalPrice', 'label' => '订单价格', 'showOverflowTooltip' => true, 'minWidth' => 70, 'sortable' => 'custom'],
['prop' => 'payTime', 'label' => '付款时间', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
['prop' => 'createTime', 'label' => '创建时间', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
['prop' => 'typeName', 'label' => '订单类型', 'showOverflowTooltip' => true, 'minWidth' => 70],
['prop' => 'statusName', 'label' => '状态', 'showOverflowTooltip' => true, 'minWidth' => 70],
['prop' => 'consultant', 'label' => '顾问', 'showOverflowTooltip' => true, 'minWidth' => 60]
];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = ['prop' => $v['prop'], 'label' => $v['label'], 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns[] = ['prop' => 'stores', 'label' => '门店', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
@@ -107,7 +107,7 @@ class GroupsStatistics extends BaseController
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'groupsLevel' => $groupsLevel, 'status>=' => 0]);
if ($re_gro) {
$levelData[] = ['title' => $v['dictDataName'] . '统计', 'value' => $groupsLevel];
$levels[] = ['label' => $v['dictDataName'], 'prop' => "levelName{$groupsLevel}"];
$levels[] = "{$v['dictDataName']},$groupsLevel";
}
}
}
@@ -466,11 +466,18 @@ class GroupsStatistics extends BaseController
$order = $params['order'];
$day = $params['day'];
$itemId = intval($params['itemId']);//商品
$levels = $params['levels'];
!$page && $page = 1;
!$limit && $limit = 10;
$list = [];
$count = 0;
$re = $this->mdSyliveActivity->get(['activityId' => $activityId]);
if ($levels && count($levels)) {
foreach ($levels as $k => $v) {
$arr_unit = explode(',', $v);
$levels[$k] = ['label' => $arr_unit[0], 'prop' => "levelName{$arr_unit[1]}", 'levelId' => "levelId{$arr_unit[1]}"];
}
}
if ($re) {
$channelId = intval($re['channelId']);
!$sort && $sort = 'browse';
@@ -518,10 +525,7 @@ class GroupsStatistics extends BaseController
["groupsId in({$str_groups})" => null, 'activityId' => $activityId, 'status>=' => 0]);
foreach ($res as $v) {
$bizId = intval($v['bizId']);
$levelName1 = $levelName2 = $levelName3 = $bizName = '-';
$map_groups[$v['levelId1']] && $levelName1 = $map_groups[$v['levelId1']];
$map_groups[$v['levelId2']] && $levelName2 = $map_groups[$v['levelId2']];
$map_groups[$v['levelId3']] && $levelName3 = $map_groups[$v['levelId3']];
$bizName = '-';
$map_groups[$bizId] && $bizName = $map_groups[$bizId];
$where_sort['bizId'] = $bizId;
if ($sort == 'browse') {
@@ -563,9 +567,14 @@ class GroupsStatistics extends BaseController
}
}
$consultantPer = number_format_com($consultant / $allConsultant * 100, 2, '') . '%';
$list[] = ['levelName1' => $levelName1, 'levelName2' => $levelName2, 'levelName3' => $levelName3, 'bizName' => $bizName
, 'consultant' => $consultant, 'allConsultant' => $allConsultant, 'consultantPer' => $consultantPer, 'browse' => $browse, 'subscribe' => $subscribe
, 'watch' => $watch, 'order' => $orderTotal, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list1 = [];
foreach ($levels as $k2 => $v2) {
$levelId = $v2['levelId'];
$list1[$v2['prop']] = $map_groups[$v[$levelId]] ? $map_groups[$v[$levelId]] : '';
}
$list2 = ['bizName' => $bizName, 'consultant' => $consultant, 'allConsultant' => $allConsultant, 'consultantPer' => $consultantPer
, 'browse' => $browse, 'subscribe' => $subscribe, 'watch' => $watch, 'order' => $orderTotal, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list[] = count($list1) ? array_merge($list1, $list2) : $list2;
}
}
} else {
@@ -621,10 +630,7 @@ class GroupsStatistics extends BaseController
["groupsId in({$str_groups})" => null, 'activityId' => $activityId, 'status>=' => 0]);
foreach ($res as $v) {
$bizId = intval($v['bizId']);
$levelName1 = $levelName2 = $levelName3 = $bizName = '-';
$map_groups[$v['levelId1']] && $levelName1 = $map_groups[$v['levelId1']];
$map_groups[$v['levelId2']] && $levelName2 = $map_groups[$v['levelId2']];
$map_groups[$v['levelId3']] && $levelName3 = $map_groups[$v['levelId3']];
$bizName = '-';
if ($v['groupsName']) {
$bizName = $v['groupsName'];
} else {
@@ -654,9 +660,14 @@ class GroupsStatistics extends BaseController
$v['watch'] = intval($re['watch']);
}
$consultantPer = number_format_com($consultant / $allConsultant * 100, 2, '') . '%';
$list[] = ['levelName1' => $levelName1, 'levelName2' => $levelName2, 'levelName3' => $levelName3, 'bizName' => $bizName
, 'consultant' => $consultant, 'allConsultant' => $allConsultant, 'consultantPer' => $consultantPer, 'browse' => $v['browse'], 'subscribe' => $v['subscribe']
, 'watch' => $v['watch'], 'order' => $order, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list1 = [];
foreach ($levels as $k2 => $v2) {
$levelId = $v2['levelId'];
$list1[$v2['prop']] = $map_groups[$v[$levelId]] ? $map_groups[$v[$levelId]] : '';
}
$list2 = ['bizName' => $bizName, 'consultant' => $consultant, 'allConsultant' => $allConsultant, 'consultantPer' => $consultantPer
, 'browse' => $v['browse'], 'subscribe' => $v['subscribe'], 'watch' => $v['watch'], 'order' => $order, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list[] = count($list1) ? array_merge($list1, $list2) : $list2;
}
}
}
@@ -664,7 +675,27 @@ class GroupsStatistics extends BaseController
if ($limit == 10000) {
return $list;
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [];
foreach ($levels as $k => $v) {
$columns1[] = ['prop' => $v['prop'], 'label' => $v['label'], 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns2 = [
['prop' => 'bizName', 'label' => '门店', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120],
['prop' => 'consultant', 'label' => '参与顾问数', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 85],
['prop' => 'allConsultant', 'label' => '全部顾问数', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 85],
['prop' => 'consultantPer', 'label' => '开工率', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 75],
['prop' => 'browse', 'label' => '浏览数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 115, 'sortable' => 'custom'],
['prop' => 'subscribe', 'label' => '预约数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 115, 'sortable' => 'custom'],
['prop' => 'watch', 'label' => '观看数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 115, 'sortable' => 'custom'],
['prop' => 'order', 'label' => '订单数(单)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 115, 'sortable' => 'custom'],
['prop' => 'livePV', 'label' => '观看数(人次)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
['prop' => 'watchDuration', 'label' => '人均观看(分)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
];
$columns = count($columns1) ? array_merge($columns1, $columns2) : $columns2;
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
@@ -677,10 +708,17 @@ class GroupsStatistics extends BaseController
$order = $params['order'];
$day = $params['day'];
$itemId = intval($params['itemId']);//商品
$levels = $params['levels'];
!$page && $page = 1;
!$limit && $limit = 10;
$list = [];
$count = 0;
if ($levels && count($levels)) {
foreach ($levels as $k => $v) {
$arr_unit = explode(',', $v);
$levels[$k] = ['label' => $arr_unit[0], 'prop' => "levelName{$arr_unit[1]}", 'levelId' => "levelId{$arr_unit[1]}"];
}
}
$re = $this->mdSyliveActivity->get(['activityId' => $activityId]);
if ($re) {
$channelId = intval($re['channelId']);
@@ -732,10 +770,7 @@ class GroupsStatistics extends BaseController
$map_user = $this->mdSyliveUser->map('userId', 'uname', ["userId in({$str_user})" => null]);
foreach ($res as $v) {
$cfUserId = intval($v['cfUserId']);
$levelName1 = $levelName2 = $levelName3 = $bizName = $consultantName = '-';
$map_groups[$v['levelId1']] && $levelName1 = $map_groups[$v['levelId1']];
$map_groups[$v['levelId2']] && $levelName2 = $map_groups[$v['levelId2']];
$map_groups[$v['levelId3']] && $levelName3 = $map_groups[$v['levelId3']];
$bizName = $consultantName = '-';
$map_groups[$v['bizId']] && $bizName = $map_groups[$v['bizId']];
$map_user[$cfUserId] && $consultantName = $map_user[$cfUserId];
$where_sort['cfUserId'] = $cfUserId;
@@ -774,9 +809,14 @@ class GroupsStatistics extends BaseController
$watchDuration = round($playDuration / $livePV);
}
}
$list[] = ['levelName1' => $levelName1, 'levelName2' => $levelName2, 'levelName3' => $levelName3,
'bizName' => $bizName, 'consultantName' => $consultantName, 'browse' => $browse,
$list1 = [];
foreach ($levels as $k2 => $v2) {
$levelId = $v2['levelId'];
$list1[$v2['prop']] = $map_groups[$v[$levelId]] ? $map_groups[$v[$levelId]] : '';
}
$list2 = ['bizName' => $bizName, 'consultantName' => $consultantName, 'browse' => $browse,
'subscribe' => $subscribe, 'watch' => $watch, 'order' => $order, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list[] = count($list1) ? array_merge($list1, $list2) : $list2;
}
}
} else {
@@ -818,10 +858,7 @@ class GroupsStatistics extends BaseController
$map_user = $this->mdSyliveUser->map('userId', 'uname', ["userId in({$str_user})" => null]);
foreach ($res as $v) {
$cfUserId = intval($v['cfUserId']);
$levelName1 = $levelName2 = $levelName3 = $bizName = $consultantName = '-';
$map_groups[$v['levelId1']] && $levelName1 = $map_groups[$v['levelId1']];
$map_groups[$v['levelId2']] && $levelName2 = $map_groups[$v['levelId2']];
$map_groups[$v['levelId3']] && $levelName3 = $map_groups[$v['levelId3']];
$bizName = $consultantName = '-';
$map_groups[$v['bizId']] && $bizName = $map_groups[$v['bizId']];
$map_user[$cfUserId] && $consultantName = $map_user[$cfUserId];
if ($sort != 'order' && $itemId) {//有商品id,区分订单
@@ -848,9 +885,14 @@ class GroupsStatistics extends BaseController
$watchDuration = round($playDuration / $livePV);
}
}
$list[] = ['levelName1' => $levelName1, 'levelName2' => $levelName2, 'levelName3' => $levelName3,
'bizName' => $bizName, 'consultantName' => $consultantName, 'browse' => $browse,
$list1 = [];
foreach ($levels as $k2 => $v2) {
$levelId = $v2['levelId'];
$list1[$v2['prop']] = $map_groups[$v[$levelId]] ? $map_groups[$v[$levelId]] : '';
}
$list2 = ['bizName' => $bizName, 'consultantName' => $consultantName, 'browse' => $browse,
'subscribe' => $subscribe, 'watch' => $watch, 'order' => $order, 'livePV' => $livePV, 'watchDuration' => $watchDuration];
$list[] = count($list1) ? array_merge($list1, $list2) : $list2;
}
}
}
@@ -858,7 +900,23 @@ class GroupsStatistics extends BaseController
if ($limit == 10000) {
return $list;
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [];
foreach ($levels as $k => $v) {
$columns1[] = ['prop' => $v['prop'], 'label' => $v['label'], 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns2 = [
['prop' => 'bizName', 'label' => '门店', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120],
['prop' => 'consultantName', 'label' => '顾问', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'browse', 'label' => '浏览数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120, 'sortable' => 'custom'],
['prop' => 'subscribe', 'label' => '预约数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120, 'sortable' => 'custom'],
['prop' => 'watch', 'label' => '观看数(人)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120, 'sortable' => 'custom'],
['prop' => 'order', 'label' => '订单数(单)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 120, 'sortable' => 'custom'],
];
$columns = count($columns1) ? array_merge($columns1, $columns2) : $columns2;
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
@@ -872,10 +930,17 @@ class GroupsStatistics extends BaseController
$itemId = intval($params['itemId']);//商品
$insiders = intval($params['insiders']);//内部人员
$groupsId = intval($params['groupsId']);//分组id
$levels = $params['levels'];
!$page && $page = 1;
!$limit && $limit = 10;
$list = [];
$count = 0;
if ($levels && count($levels)) {
foreach ($levels as $k => $v) {
$arr_unit = explode(',', $v);
$levels[$k] = ['label' => $arr_unit[0], 'prop' => "levelName{$arr_unit[1]}", 'levelId' => "levelId{$arr_unit[1]}"];
}
}
$re = $this->mdSyliveActivity->get(['activityId' => $activityId]);
if ($re) {
$channelId = intval($re['channelId']);
@@ -948,10 +1013,7 @@ class GroupsStatistics extends BaseController
$cfUserId = intval($v['cfUserId']);
$insiders = '否';//内部人员
$createTime = $browseTime = $subscribeTime = $liveTime = $playDuration = $livePV = '';
$nickname = $consultantName = $levelName1 = $levelName2 = $levelName3 = $bizName = '-';
$map_groups[$v['levelId1']] && $levelName1 = $map_groups[$v['levelId1']];
$map_groups[$v['levelId2']] && $levelName2 = $map_groups[$v['levelId2']];
$map_groups[$v['levelId3']] && $levelName3 = $map_groups[$v['levelId3']];
$nickname = $consultantName = $bizName = '-';
$map_groups[$v['bizId']] && $bizName = $map_groups[$v['bizId']];
$map_user[$cfUserId] && $consultantName = $map_user[$cfUserId]['uname'];
$user = $map_user[$userId];
@@ -977,17 +1039,41 @@ class GroupsStatistics extends BaseController
$re_sum = $this->mdSyliveViewlog->sum('playDuration', ['userId' => $userId, 'activityId' => $activityId]);
$re_sum['playDuration'] && $playDuration = ceil($re_sum['playDuration'] / 60);
}
$list[] = ['nickname' => $nickname, 'createTime' => $createTime, 'browseTime' => $browseTime, 'subscribeTime' => $subscribeTime,
'consultantName' => $consultantName, 'levelName1' => $levelName1, 'levelName2' => $levelName2
, 'levelName3' => $levelName3, 'bizName' => $bizName,
'liveTime' => $liveTime, 'livePV' => $livePV, 'playDuration' => $playDuration, 'insiders' => $insiders];
$list1 = [];
foreach ($levels as $k2 => $v2) {
$levelId = $v2['levelId'];
$list1[$v2['prop']] = $map_groups[$v[$levelId]] ? $map_groups[$v[$levelId]] : '';
}
$list2 = ['bizName' => $bizName, 'nickname' => $nickname, 'createTime' => $createTime, 'browseTime' => $browseTime, 'subscribeTime' => $subscribeTime,
'liveTime' => $liveTime, 'livePV' => $livePV, 'playDuration' => $playDuration, 'insiders' => $insiders, 'consultantName' => $consultantName];
$list[] = count($list1) ? array_merge($list1, $list2) : $list2;
}
}
}
if ($limit == 10000) {
return $list;
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [];
foreach ($levels as $k => $v) {
$columns1[] = ['prop' => $v['prop'], 'label' => $v['label'], 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns2 = [
['prop' => 'bizName', 'label' => '门店', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 110],
['prop' => 'nickname', 'label' => '昵称', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'createTime', 'label' => '创建时间', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'browseTime', 'label' => '首次浏览时间', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'subscribeTime', 'label' => '预约时间', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'liveTime', 'label' => '首次观看时间', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'playDuration', 'label' => '观看时长(分)', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'livePV', 'label' => '观看次数', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'insiders', 'label' => '内部人员', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'consultantName', 'label' => '归属顾问', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 80],
];
$columns = count($columns1) ? array_merge($columns1, $columns2) : $columns2;
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}
+59 -7
View File
@@ -80,6 +80,22 @@ class groupsWin extends BaseController
$winType = $params['winType'];
!$page && $page = 1;
!$limit && $limit = 10;
$levels = [];
if ($page == 1) {
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'parentId' => 0, 'status>=' => 0]);
if ($re_gro['statisticsType']) {
$this->load->model('market/Market_sys_dictionary_data_model', 'mdSysDictionaryData');
$res_dit = $this->mdSysDictionaryData->select(['status>=' => 0, 'dictId' => $re_gro['statisticsType']], 'sortNumber asc,dictDataId desc'
, 0, 0, 'dictDataCode,dictDataName');
foreach ($res_dit as $k => $v) {
$groupsLevel = intval($v['dictDataCode']);
$re_gro = $this->mdSyliveGroups->get(['activityId' => $activityId, 'groupsLevel' => $groupsLevel, 'status>=' => 0]);
if ($re_gro) {
$levels[] = ['label' => $v['dictDataName'], 'prop' => "levelName{$groupsLevel}"];
}
}
}
}
$sort_order = 'winTime desc';
if ($sort && $order) {
$sort_order = $sort . ' ' . $order;
@@ -124,13 +140,22 @@ class groupsWin extends BaseController
, 'levelId1' => $v['levelId1'], 'levelId2' => $v['levelId2'], 'levelId3' => $v['levelId3']
, 'bizId' => $v['bizId'], 'cfUserId' => $v['cfUserId']]);
$winName = $winTypeAry[$v['winType']] ? $winTypeAry[$v['winType']] : '';
$item = [
$list1 = [
'id' => $v['id'], 'sid' => $v['sid'], 'uname' => $v['uname'], 'mobile' => $v['mobile'], 'itemTitle' => $v['itemTitle']
, 'totalPrice' => $v['totalPrice'], 'payTime' => $v['payTime'] != '0000-00-00 00:00:00' ? $v['payTime'] : ''
, 'winTime' => $v['winTime'] ? $v['winTime'] : '', 'winName' => $winName
, 'levelName1' => $consultant['levelName1'], 'levelName2' => $consultant['levelName2'], 'levelName3' => $consultant['levelName3']
, 'stores' => $consultant['stores'], 'consultant' => $consultant['consultant']
, 'winTime' => $v['winTime'] ? $v['winTime'] : '', 'winName' => $winName, 'consultant' => $consultant['consultant']
];
if ($limit == 10000) {
unset($list1['id']);
} else {
unset($list1['sid']);
}
$list2 = [];
foreach ($levels as $k2 => $v2) {
$list2[$v2['prop']] = $consultant[$v2['prop']] ? $consultant[$v2['prop']] : '';
}
$item = count($list2) ? array_merge($list1, $list2) : $list1;
$item['stores'] = $consultant['stores'];
if ($limit == 10000) {
$address = $biz = '';
$jsondata = $v['jsondata'] ? json_decode($v['jsondata'], true) : [];
@@ -140,16 +165,43 @@ class groupsWin extends BaseController
if ($jsondata['biz']) {
$biz = $jsondata['biz'];
}
$item['address'] = $address;
$item['biz'] = $biz;
$item['address'] = $address;
}
$list[] = $item;
}
}
if ($limit == 10000) {
return $list;
$columns1 = ['订单号', '姓名', '手机号', '商品标题', '订单价格', '付款时间', '中奖时间', '中奖类型', '顾问'];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = $v['label'];
}
$columns3 = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns = array_merge($columns3, ['门店', '所选经销商', '地址']);
return ['list' => $list, 'columns' => $columns];
} else {
return ['list' => $list, 'count' => $count];
$columns = '';
if ($page == 1) {
$columns1 = [
['prop' => 'id', 'label' => 'ID', 'align' => 'center', 'showOverflowTooltip' => true, 'minWidth' => 45, 'fixed' => 'left'],
['prop' => 'uname', 'label' => '姓名', 'showOverflowTooltip' => true, 'minWidth' => 60],
['prop' => 'mobile', 'label' => '手机号', 'showOverflowTooltip' => true, 'minWidth' => 80],
['prop' => 'itemTitle', 'label' => '商品标题', 'showOverflowTooltip' => true, 'minWidth' => 130],
['prop' => 'totalPrice', 'label' => '订单价格', 'showOverflowTooltip' => true, 'minWidth' => 70, 'sortable' => 'custom'],
['prop' => 'payTime', 'label' => '付款时间', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
['prop' => 'winTime', 'label' => '中奖时间', 'showOverflowTooltip' => true, 'minWidth' => 100, 'sortable' => 'custom'],
['prop' => 'winName', 'label' => '中奖类型', 'showOverflowTooltip' => true, 'minWidth' => 90],
['prop' => 'consultant', 'label' => '顾问', 'showOverflowTooltip' => true, 'minWidth' => 60]
];
$columns2 = [];
foreach ($levels as $k => $v) {
$columns2[] = ['prop' => $v['prop'], 'label' => $v['label'], 'showOverflowTooltip' => true, 'minWidth' => 80];
}
$columns = count($columns2) ? array_merge($columns1, $columns2) : $columns1;
$columns[] = ['prop' => 'stores', 'label' => '门店', 'showOverflowTooltip' => true, 'minWidth' => 80];
}
return ['list' => $list, 'count' => $count, 'columns' => $columns];
}
}