|
|
|
@ -28,97 +28,149 @@ class Index extends BaseController |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 总览总数据接口 |
|
|
|
* 分时时间段接口 |
|
|
|
* @return array |
|
|
|
*/ |
|
|
|
public function allGroupNum() { |
|
|
|
|
|
|
|
$config = config('app'); |
|
|
|
public function allGroupTimeNum() { |
|
|
|
|
|
|
|
$dayStatTime = date('c',strtotime(date("Y-m-d 00:00:00"))); |
|
|
|
$monday = date('Y-m-d 00:00:00', strtotime("last Monday", strtotime(date('Y-m-d')))); |
|
|
|
$weekStatTime = date('c',strtotime($monday)); |
|
|
|
$monthStatTime = date('c',strtotime(date("Y-m-01 00:00:00"))); |
|
|
|
$dateArr = ['day' => $dayStatTime, 'week' => $weekStatTime, 'month' => $monthStatTime]; |
|
|
|
$request = $this->request; |
|
|
|
$granularity = $request['granularity']; |
|
|
|
if (empty($granularity)) return json_encode(['code' => 403, 'date参数不能为空']); |
|
|
|
|
|
|
|
$dateData = getTargetDate(); |
|
|
|
$returnData = []; |
|
|
|
foreach ($dateArr as $date => $statTime) { |
|
|
|
|
|
|
|
$url = $config['host_url'] . "/api/cfas/v2/passengerFlow/allGroup"; |
|
|
|
if ($granularity == 'daily') { |
|
|
|
$list = $this->getGroupData('hourly',$dateData['day']['c_start_time'],$dateData['day']['c_end_time']); |
|
|
|
$returnData = $this->handleGroupData($list); |
|
|
|
} elseif ($granularity == 'monthly') { |
|
|
|
$list = $this->getGroupData('daily',$dateData['month']['c_start_time'],$dateData['month']['c_end_time']); |
|
|
|
$returnData = $this->handleGroupData($list,'d'); |
|
|
|
} elseif ($granularity == 'yearly') { |
|
|
|
$list = $this->getGroupData('monthly',$dateData['year']['c_start_time'],date('c')); |
|
|
|
$returnData = $this->handleGroupData($list,'m'); |
|
|
|
} |
|
|
|
|
|
|
|
$granularity = $date == 'month' ? 'monthly' : 'daily'; |
|
|
|
return json_encode(['code' => 0, 'data' => $returnData]); |
|
|
|
} |
|
|
|
|
|
|
|
$data = [ |
|
|
|
'granularity' => $granularity, |
|
|
|
'statTime' => $statTime |
|
|
|
]; |
|
|
|
/** |
|
|
|
* 查询时间范围内的多个统计组的客流统计数据 |
|
|
|
* @param $granularity // 可选 hourly | daily | monthly | yearly,分别为按小时、按天、按月和按年统计 |
|
|
|
* @param $s_time // 开始时间 |
|
|
|
* @param $e_time // 结束时间 |
|
|
|
* @return false|mixed|string |
|
|
|
*/ |
|
|
|
protected function getGroupData($granularity,$s_time,$e_time) { |
|
|
|
$config = config('app'); |
|
|
|
$url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups"; |
|
|
|
$dataArr = [ |
|
|
|
'granularity' => $granularity, |
|
|
|
'startTime' => $s_time, |
|
|
|
'endTime' => $e_time, |
|
|
|
'ids' => '01' // --- <replace> --- // |
|
|
|
]; |
|
|
|
|
|
|
|
$json_data = json_encode($data); |
|
|
|
$result = postToken($url,$json_data,false,[],'60NDtZnTUiPtXEFC2MAszjZ9fbedfBTQ'); |
|
|
|
$res_data = json_decode($result,true); |
|
|
|
$json_data = json_encode($dataArr); |
|
|
|
$result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); |
|
|
|
|
|
|
|
if ($res_data['code'] != 0) { |
|
|
|
return ['code' => 404, 'msg' => $res_data['msg']]; |
|
|
|
} |
|
|
|
$res_data = json_decode($result,true); |
|
|
|
if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); |
|
|
|
|
|
|
|
$list = $res_data['data']['list']; |
|
|
|
return $res_data['data']['list']; |
|
|
|
} |
|
|
|
|
|
|
|
$returnData[$date]['flowInNum'] = 0; |
|
|
|
foreach ($list as $value) { |
|
|
|
$returnData[$date]['flowInNum'] += $value['flowInNum']; |
|
|
|
/** |
|
|
|
* 特殊处理 |
|
|
|
* @param $list |
|
|
|
* @param $date_str |
|
|
|
* @return array |
|
|
|
*/ |
|
|
|
protected function handleGroupData($list,$date_str = 'H:00') { |
|
|
|
$returnData = []; |
|
|
|
if ($date_str == 'H:00') { |
|
|
|
for ($i = 9; $i < 23; $i++) { |
|
|
|
$str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; |
|
|
|
$returnData[$str] = 0; |
|
|
|
} |
|
|
|
} elseif ($date_str == 'd') { |
|
|
|
$d = date('d') * 1; |
|
|
|
$date = $d - 12 > 0 ? $d - 12 : 1; |
|
|
|
for ($i = $date; $i <= $d; $i++) { |
|
|
|
$str = strlen($i) == 1 ? '0'.$i : $i; |
|
|
|
$returnData[$str] = 0; |
|
|
|
} |
|
|
|
} elseif ($date_str == 'm') { |
|
|
|
$m = date('m') * 1; |
|
|
|
$date = $m - 12 > 0 ? $m - 12 : 1; |
|
|
|
for ($i = $date; $i <= $m; $i++) { |
|
|
|
$str = strlen($i) == 1 ? '0'.$i : $i; |
|
|
|
$returnData[$str] = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return ['code' => 0, 'data' => $returnData]; |
|
|
|
foreach ($list as $value) { |
|
|
|
$date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); |
|
|
|
if (!isset($returnData[$date])) continue; |
|
|
|
$returnData[$date] = $value['flowInNum']; |
|
|
|
} |
|
|
|
ksort($returnData); |
|
|
|
return $returnData; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 进馆人数趋势 |
|
|
|
* 总览总数据接口 |
|
|
|
* @return array|void |
|
|
|
*/ |
|
|
|
public function groups() { |
|
|
|
public function allGroupNum() { |
|
|
|
|
|
|
|
$config = config('app'); |
|
|
|
|
|
|
|
$dayStatTime = date('c',strtotime(date("Y-m-d 00:00:00"))); |
|
|
|
$monday = date('Y-m-d 00:00:00', strtotime("last Monday", strtotime(date('Y-m-d')))); |
|
|
|
$weekStatTime = date('c',strtotime($monday)); |
|
|
|
$monthStatTime = date('c',strtotime(date("Y-m-01 00:00:00"))); |
|
|
|
$dateData = getTargetDate(); |
|
|
|
|
|
|
|
$dateArr = [ |
|
|
|
'day' => [ |
|
|
|
'startTime' => $dayStatTime,// 当天开始时间 |
|
|
|
'endTime' => date('c',strtotime(date("Y-m-d 23:59:59"))),// 当天结束时间 |
|
|
|
'startTime' => $dateData['day']['c_start_time'],// 当天开始时间 |
|
|
|
'endTime' => $dateData['day']['c_end_time'],// 当天结束时间 |
|
|
|
'granularity' => 'daily' |
|
|
|
], |
|
|
|
'week' => [ |
|
|
|
'startTime' => $weekStatTime, |
|
|
|
'endTime' => date('c',strtotime(date("Y-m-d 23:59:59"))), |
|
|
|
'startTime' => $dateData['week']['c_start_time'], |
|
|
|
'endTime' => $dateData['week']['c_end_time'], |
|
|
|
'granularity' => 'daily' |
|
|
|
], |
|
|
|
'month' =>[ |
|
|
|
'startTime' => $monthStatTime, |
|
|
|
'endTime' => date('c',strtotime(date("Y-m-t 23:59:59"))) |
|
|
|
] |
|
|
|
'startTime' => $dateData['month']['c_start_time'], |
|
|
|
'endTime' => $dateData['month']['c_end_time'], |
|
|
|
'granularity' => 'monthly' |
|
|
|
], |
|
|
|
'year' =>[ |
|
|
|
'startTime' => $dateData['year']['c_start_time'], |
|
|
|
'endTime' => $dateData['year']['c_end_time'], |
|
|
|
'granularity' => 'yearly' |
|
|
|
], |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
$returnData = []; |
|
|
|
foreach ($dateArr as $date => $dateTime) { |
|
|
|
$groupIds = []; |
|
|
|
foreach ($dateArr as $date => $dateRow) { |
|
|
|
|
|
|
|
$url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups"; |
|
|
|
|
|
|
|
$granularity = $date == 'month' ? 'monthly' :'daily'; |
|
|
|
$granularity = $dateRow['granularity']; |
|
|
|
|
|
|
|
$data = [ |
|
|
|
'granularity' => $granularity, |
|
|
|
'startTime' => $dateTime['startTime'], |
|
|
|
'endTime' => $dateTime['endTime'], |
|
|
|
'ids' => '01' |
|
|
|
'startTime' => $dateRow['startTime'], |
|
|
|
'endTime' => $dateRow['endTime'], |
|
|
|
'ids' => '01' // --- <replace> --- // |
|
|
|
]; |
|
|
|
|
|
|
|
$json_data = json_encode($data); |
|
|
|
$result = postToken($url,$json_data,false,[],'60NDtZnTUiPtXEFC2MAszjZ9fbedfBTQ'); |
|
|
|
$result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); |
|
|
|
|
|
|
|
$res_data = json_decode($result,true); |
|
|
|
if ($res_data['code'] != 0) { |
|
|
|
return ['code' => 404, 'msg' => $res_data['msg']]; |
|
|
|
return ['code' => 403, 'msg' => $res_data['msg']]; |
|
|
|
} |
|
|
|
|
|
|
|
$list = $res_data['data']['list']; |
|
|
|
@ -127,11 +179,23 @@ class Index extends BaseController |
|
|
|
foreach ($list as $value) { |
|
|
|
// $createTime = date("H",$value['createTime'] /1000 + (3600*8)); |
|
|
|
$returnData[$date]['flowInNum'] += $value['flowInNum']; |
|
|
|
$groupIds[] = $value['groupId']; |
|
|
|
} |
|
|
|
$returnData['sumNum'] += $returnData[$date]['flowInNum']; |
|
|
|
} |
|
|
|
|
|
|
|
return $returnData; |
|
|
|
foreach ($returnData as &$val) { |
|
|
|
$val['flowInNum'] = formatNumber($val['flowInNum']); |
|
|
|
} |
|
|
|
|
|
|
|
$returnArr = [ |
|
|
|
'code' => 0, |
|
|
|
'msg' => '成功', |
|
|
|
'data' => [ |
|
|
|
'dataAll' => $returnData, |
|
|
|
'groupIds' => array_unique($groupIds) |
|
|
|
] |
|
|
|
]; |
|
|
|
return json_encode(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|