Browse Source

优化布局增加占比

master
wanghongjun 3 years ago
parent
commit
2490084378
  1. 69
      app/controller/Index.php

69
app/controller/Index.php

@ -27,6 +27,8 @@ class Index extends BaseController
return $ret; return $ret;
} }
protected $token = 'y871T5okLEegC6WrcKN259Mhy4AGDcjm';
/** /**
* 分时时间段接口 * 分时时间段接口
* @return array * @return array
@ -38,19 +40,29 @@ class Index extends BaseController
if (empty($granularity)) return json_encode(['code' => 403, 'date参数不能为空']); if (empty($granularity)) return json_encode(['code' => 403, 'date参数不能为空']);
$dateData = getTargetDate(); $dateData = getTargetDate();
$returnData = []; $allTimeData = [];
$groupsData = [];
if ($granularity == 'daily') { if ($granularity == 'daily') {
$list = $this->getGroupData('hourly',$dateData['day']['c_start_time'],$dateData['day']['c_end_time']); $list = $this->getGroupData('hourly',$dateData['day']['c_start_time'],$dateData['day']['c_end_time']);
$returnData = $this->handleGroupData($list); $data = $this->handleGroupData($list);
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
} elseif ($granularity == 'monthly') { } elseif ($granularity == 'monthly') {
$list = $this->getGroupData('daily',$dateData['month']['c_start_time'],$dateData['month']['c_end_time']); $list = $this->getGroupData('daily',$dateData['month']['c_start_time'],$dateData['month']['c_end_time']);
$returnData = $this->handleGroupData($list,'d'); $data = $this->handleGroupData($list,'d');
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
} elseif ($granularity == 'yearly') { } elseif ($granularity == 'yearly') {
$list = $this->getGroupData('monthly',$dateData['year']['c_start_time'],date('c')); $list = $this->getGroupData('monthly',$dateData['year']['c_start_time'],date('c'));
$returnData = $this->handleGroupData($list,'m'); $data = $this->handleGroupData($list,'m');
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
} }
return json_encode(['code' => 0, 'data' => $returnData]); return json_encode(['code' => 0, 'msg' => '成功', 'data' => [
'allTimeData' => $allTimeData,
'groupsData' => $groupsData
]]);
} }
/** /**
@ -71,7 +83,7 @@ class Index extends BaseController
]; ];
$json_data = json_encode($dataArr); $json_data = json_encode($dataArr);
$result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); $result = postToken($url,$json_data,false,[],$this->token);
$res_data = json_decode($result,true); $res_data = json_decode($result,true);
if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]);
@ -86,34 +98,48 @@ class Index extends BaseController
* @return array * @return array
*/ */
protected function handleGroupData($list,$date_str = 'H:00') { protected function handleGroupData($list,$date_str = 'H:00') {
$returnData = []; $allTimeData = [];
$groupsData = [];
if ($date_str == 'H:00') { if ($date_str == 'H:00') {
for ($i = 9; $i < 23; $i++) { for ($i = 9; $i < 23; $i++) {
$str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; $str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00';
$returnData[$str] = 0; $allTimeData[$str] = 0;
} }
} elseif ($date_str == 'd') { } elseif ($date_str == 'd') {
$d = date('d') * 1; $d = date('d') * 1;
$date = $d - 12 > 0 ? $d - 12 : 1; $date = $d - 12 > 0 ? $d - 12 : 1;
for ($i = $date; $i <= $d; $i++) { for ($i = $date; $i <= $d; $i++) {
$str = strlen($i) == 1 ? '0'.$i : $i; $str = strlen($i) == 1 ? '0'.$i : $i;
$returnData[$str] = 0; $allTimeData[$str] = 0;
} }
} elseif ($date_str == 'm') { } elseif ($date_str == 'm') {
$m = date('m') * 1; $m = date('m') * 1;
$date = $m - 12 > 0 ? $m - 12 : 1; $date = $m - 12 > 0 ? $m - 12 : 1;
for ($i = $date; $i <= $m; $i++) { for ($i = $date; $i <= $m; $i++) {
$str = strlen($i) == 1 ? '0'.$i : $i; $str = strlen($i) == 1 ? '0'.$i : $i;
$returnData[$str] = 0; $allTimeData[$str] = 0;
} }
} }
$sumFlowInNum = 0;
foreach ($list as $value) { foreach ($list as $value) {
$date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); $sumFlowInNum += $value['flowInNum']; // 进馆总人数
if (!isset($returnData[$date])) continue; if (!isset($groupsData[$value['groupName']]['flowInNum'])) $groupsData[$value['groupName']]['flowInNum'] = 0;
$returnData[$date] = $value['flowInNum']; $groupsData[$value['groupName']]['flowInNum'] += $value['flowInNum']; // 分租进馆人数
$date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); // 各时间端进馆人数
if (!isset($allTimeData[$date])) continue;
$allTimeData[$date] += $value['flowInNum'];
}
ksort($allTimeData);
// 计算各组占比
foreach ($groupsData as &$val) {
$val['proportion'] = (round($val['flowInNum']/$sumFlowInNum,2) * 100) ."%";
} }
ksort($returnData);
return $returnData; return [
'allTimeData' => $allTimeData, // 总客流趋势时间段
'groupsData' => $groupsData // 各组总数及占比
];
} }
/** /**
@ -166,7 +192,7 @@ class Index extends BaseController
]; ];
$json_data = json_encode($data); $json_data = json_encode($data);
$result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); $result = postToken($url,$json_data,false,[],$this->token);
$res_data = json_decode($result,true); $res_data = json_decode($result,true);
if ($res_data['code'] != 0) { if ($res_data['code'] != 0) {
@ -210,15 +236,22 @@ class Index extends BaseController
]; ];
$json_data = json_encode($dataArr); $json_data = json_encode($dataArr);
$result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); $result = postToken($url,$json_data,false,[],$this->token);
$res_data = json_decode($result,true); $res_data = json_decode($result,true);
if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]);
$returnData = []; $returnData = [];
$sumAllEnter = 0;
foreach ($res_data['data'] as $value) { foreach ($res_data['data'] as $value) {
$returnData[$value['regionId']] = $value['allEnter']; if (!isset($returnData[$value['groupId']]['allEnter'])) $returnData[$value['groupId']]['allEnter'] = 0;
$returnData[$value['groupId']]['allEnter'] += $value['allEnter'];
$sumAllEnter += $value['allEnter'];
}
foreach ($returnData as &$val) {
$val['proportion'] = (round($val['allEnter']/$sumAllEnter,2) * 100) ."%";
} }
return json_encode(['code' => 0, 'msg' => '成功', 'data' => $returnData]); return json_encode(['code' => 0, 'msg' => '成功', 'data' => $returnData]);

Loading…
Cancel
Save