*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }

:)

ThinkPHP V' . \think\facade\App::version() . '
14载初心不改 - 你值得信赖的PHP框架

[ V6.0 版本由 亿速云 独家赞助发布 ]
'; } public function hello($name = 'ThinkPHP6') { return 'hello,' . $name; } public function getAccessToken(){ $config = config('app'); // $url = $config['host_url']."/oauth/token?client_id=".$config['cid']."&client_secret=".$config['cskey']; // do post $ret = post($url); return $ret; } protected $token = 'y871T5okLEegC6WrcKN259Mhy4AGDcjm'; /** * 分时时间段接口 <首页-客流趋势> * @return false|string * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function allGroupTimeNum() { $request = $this->request; $granularity = $request['granularity']; if (empty($granularity)) return json_encode(['code' => 403, 'date参数不能为空']); $dateData = getTargetDate(); $allTimeData = []; $groupsData = []; if ($granularity == 'daily') { $list = Db::table('tp_passenger_flow')->where(['granularity' => 'hourly'])->select()->toArray(); $data = $this->handleGroupData($list); $allTimeData = $data['allTimeData']; $groupsData = $data['groupsData']; } elseif ($granularity == 'monthly') { $list = Db::table('tp_passenger_flow')->where(['granularity' => 'daily'])->select()->toArray(); $data = $this->handleGroupData($list,'d'); $allTimeData = $data['allTimeData']; $groupsData = $data['groupsData']; } elseif ($granularity == 'yearly') { $list = Db::table('tp_passenger_flow')->where(['granularity' => 'monthly'])->select()->toArray(); $data = $this->handleGroupData($list,'m'); $allTimeData = $data['allTimeData']; $groupsData = $data['groupsData']; } return json_encode(['code' => 0, 'msg' => '成功', 'data' => [ 'allTimeData' => $allTimeData, 'groupsData' => $groupsData ]]); } /** * 查询时间范围内的多个统计组的客流统计数据 * @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'); $token = getAccessToken(); $url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups"; $dataArr = [ 'granularity' => $granularity, 'startTime' => $s_time, 'endTime' => $e_time, 'ids' => '01' // --- --- // ]; $json_data = json_encode($dataArr); $result = postToken($url,$json_data,false,[],$token); $res_data = json_decode($result,true); if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); return $res_data['data']['list']; } /** * 特殊处理 * @param $list * @param $date_str * @return array */ protected function handleGroupData($list,$date_str = 'H:00') { $allTimeData = []; $groupsData = []; if ($date_str == 'H:00') { for ($i = 9; $i < 23; $i++) { $str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; $allTimeData[$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; $allTimeData[$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; $allTimeData[$str] = 0; } } $sumNoRepeatInNum = 0; foreach ($list as $value) { $sumNoRepeatInNum += $value['noRepeatInNum']; // 进馆总人数 if (!isset($groupsData[$value['groupName']]['noRepeatInNum'])) $groupsData[$value['groupName']]['noRepeatInNum'] = 0; $groupsData[$value['groupName']]['noRepeatInNum'] += $value['noRepeatInNum']; // 分租进馆人数 $date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); // 各时间端进馆人数 if (!isset($allTimeData[$date])) continue; $allTimeData[$date] += $value['noRepeatInNum']; } ksort($allTimeData); // 计算各组占比 foreach ($groupsData as &$val) { $val['proportion'] = (round($val['noRepeatInNum']/$sumNoRepeatInNum,2) * 100) ."%"; } return [ 'allTimeData' => $allTimeData, // 总客流趋势时间段 'groupsData' => $groupsData // 各组总数及占比 ]; } /** * 总览总数据接口 <首页-中间部分总览> * @return array|void */ public function allGroupNum() { $config = config('app'); $dateData = getTargetDate(); $token = getAccessToken(); $dateArr = [ 'day' => [ 'startTime' => $dateData['day']['c_start_time'],// 当天开始时间 'endTime' => $dateData['day']['c_end_time'],// 当天结束时间 'granularity' => 'daily' ], 'week' => [ 'startTime' => $dateData['week']['c_start_time'], 'endTime' => $dateData['week']['c_end_time'], 'granularity' => 'daily' ], 'month' =>[ '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 = []; $groupIds = []; foreach ($dateArr as $date => $dateRow) { $url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups"; $granularity = $dateRow['granularity']; $data = [ 'granularity' => $granularity, 'startTime' => $dateRow['startTime'], 'endTime' => $dateRow['endTime'], 'ids' => '01' // --- --- // ]; $json_data = json_encode($data); $result = postToken($url,$json_data,false,[],$token); $res_data = json_decode($result,true); if ($res_data['code'] != 0) { return ['code' => 403, 'msg' => $res_data['msg']]; } $list = $res_data['data']['list']; $returnData[$date]['noRepeatInNum'] = 0; foreach ($list as $value) { // $createTime = date("H",$value['createTime'] /1000 + (3600*8)); $returnData[$date]['noRepeatInNum'] += $value['noRepeatInNum']; $groupIds[] = $value['groupId']; } } foreach ($returnData as &$val) { $val['noRepeatInNum'] = formatNumber($val['noRepeatInNum']); } $returnArr = [ 'code' => 0, 'msg' => '成功', 'data' => [ 'dataAll' => $returnData, 'groupIds' => array_unique($groupIds) ] ]; return json_encode($returnArr); } /** * 查询最新客流统计组实时数据 <各场管实施实时进馆人数> * @return void */ public function realTimeData() { $config = config('app'); $url = $config['host_url'] . "/api/cfas/v3/passenger/realTime"; $dataArr = [ '01' // --- --- // ]; $token = getAccessToken(); $json_data = json_encode($dataArr); $result = postToken($url,$json_data,false,[],$token); $res_data = json_decode($result,true); if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); $returnData = []; $sumAllEnter = 0; foreach ($res_data['data'] as $value) { 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 void */ public function toDayGroupsEnterNum() { $dateData = getTargetDate(); $list = $this->getGroupData('hourly',$dateData['day']['c_start_time'],$dateData['day']['c_end_time']); $allTimeData = []; for ($i = 9; $i < 23; $i++) { $str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; $allTimeData[$str] = 0; } $returnData = []; foreach ($list as $value) { $date = date('H:00',ceil($value['createTime'] / 1000) + (8*3600)); // 各时间端进馆人数 if (!isset($allTimeData[$date])) continue; if (!isset($returnData[$value['groupName']][$allTimeData[$date]])) $returnData[$value['groupName']][$date] = 0; $returnData[$value['groupName']][$date] += $value['flowInNum']; } dump($returnData); } }