Browse Source

优化接口

master
wanghongjun 3 years ago
parent
commit
bc546a2bd0
  1. 123
      app/controller/Index.php
  2. 2
      route/app.php

123
app/controller/Index.php

@ -28,56 +28,99 @@ class Index extends BaseController
}
/**
* 总览总数据接口
* 分时时间段接口
* @return array
*/
public function allGroupNum() {
public function allGroupTimeNum() {
$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")));
$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');
@ -108,6 +151,7 @@ class Index extends BaseController
];
$returnData = [];
$groupIds = [];
foreach ($dateArr as $date => $dateRow) {
$url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups";
@ -118,7 +162,7 @@ class Index extends BaseController
'granularity' => $granularity,
'startTime' => $dateRow['startTime'],
'endTime' => $dateRow['endTime'],
'ids' => '01'
'ids' => '01' // --- <replace> --- //
];
$json_data = json_encode($data);
@ -126,7 +170,7 @@ class Index extends BaseController
$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'];
@ -135,6 +179,7 @@ class Index extends BaseController
foreach ($list as $value) {
// $createTime = date("H",$value['createTime'] /1000 + (3600*8));
$returnData[$date]['flowInNum'] += $value['flowInNum'];
$groupIds[] = $value['groupId'];
}
}
@ -142,7 +187,15 @@ class Index extends BaseController
$val['flowInNum'] = formatNumber($val['flowInNum']);
}
return json_encode($returnData);
$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