Browse Source

Merge remote-tracking branch 'origin/master'

master
453530270@qq.com 3 years ago
parent
commit
8a9c7febfe
  1. 71
      app/common.php
  2. 168
      app/controller/Index.php
  3. 2
      route/app.php

71
app/common.php

@ -138,4 +138,75 @@ function base_url()
$baseUrl = $request->scheme() . '://' . $request->host() . $subDir . ($subDir === '/' ? '' : '/');
}
return $baseUrl;
}
/**
* 获取 天,周,月,年 开始时间~结束时间
* @param $granularity
* @return array
*/
function getTargetDate($granularity = 'all') {
$data = [];
if ($granularity === 'day' || $granularity === 'all') {
$date = $granularity !== 'all' ? $granularity : 'day';
$data[$date] = [
'start_time' => strtotime('today'),
'end_time' => strtotime('tomorrow - 1 second'),
];
}
if ($granularity === 'week' || $granularity === 'all') {
$date = $granularity !== 'all' ? $granularity : 'week';
$data[$date] = [
'start_time' => strtotime('this week midnight'),
'end_time' => strtotime('next week midnight - 1 second'),
];
}
if ($granularity === 'month' || $granularity === 'all') {
$date = $granularity !== 'all' ? $granularity : 'month';
$data[$date] = [
'start_time' => strtotime(date('Y-m-01 00:00:00')),
'end_time' => strtotime(date('Y-m-t 23:59:59')),
];
}
if ($granularity === 'year' || $granularity === 'all') {
$date = $granularity !== 'all' ? $granularity : 'year';
$data[$date] = [
'start_time' => strtotime('first day of January this year'),
'end_time' => strtotime('first day of January next year - 1 second'),
];
}
foreach ($data as &$val) {
$val['c_start_time'] = date("c",$val['start_time']);
$val['c_end_time'] = date("c",$val['end_time']);
$val['start_time'] = date("Y-m-d H:i:s",$val['start_time']);
$val['end_time'] = date("Y-m-d H:i:s",$val['end_time']);
}
return $data;
}
/**
* 特殊处理数字
* @param $number
* @return string
*/
function formatNumber($number)
{
if ($number < 10000) {
return number_format($number);
} else if ($number < 100000000) {
if ($number % 10000 == 0) {
return number_format($number / 10000) . '万';
} else {
return number_format($number);
}
} else {
if ($number % 100000000 == 0) {
return number_format($number / 100000000) . '亿';
} else {
return number_format($number);
}
}
}

168
app/controller/Index.php

@ -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();
}
}

2
route/app.php

@ -16,5 +16,5 @@ Route::get('think', function () {
Route::get('hello/:name', 'index/hello');
Route::get('getAccessToken', 'index/getAccessToken');
Route::get('allGroupTimeNum', 'index/allGroupTimeNum');
Route::get('allGroupNum', 'index/allGroupNum');
Route::get('groups', 'index/groups');

Loading…
Cancel
Save