From bc546a2bd06818f207fa9073da8e2253552a54b7 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq,com> Date: Mon, 19 Jun 2023 16:09:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/Index.php | 123 ++++++++++++++++++++++++++++----------- route/app.php | 2 +- 2 files changed, 89 insertions(+), 36 deletions(-) diff --git a/app/controller/Index.php b/app/controller/Index.php index 0f0579f..0606e96 100644 --- a/app/controller/Index.php +++ b/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' // --- --- // + ]; - $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' // --- --- // ]; $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(); } } diff --git a/route/app.php b/route/app.php index 260979d..3a3b9e2 100644 --- a/route/app.php +++ b/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');