diff --git a/app/controller/Index.php b/app/controller/Index.php index d19ca40..9970822 100644 --- a/app/controller/Index.php +++ b/app/controller/Index.php @@ -27,6 +27,8 @@ class Index extends BaseController return $ret; } + protected $token = 'y871T5okLEegC6WrcKN259Mhy4AGDcjm'; + /** * 分时时间段接口 * @return array @@ -38,19 +40,29 @@ class Index extends BaseController if (empty($granularity)) return json_encode(['code' => 403, 'date参数不能为空']); $dateData = getTargetDate(); - $returnData = []; + $allTimeData = []; + $groupsData = []; if ($granularity == 'daily') { $list = $this->getGroupData('hourly',$dateData['day']['c_start_time'],$dateData['day']['c_end_time']); - $returnData = $this->handleGroupData($list); + $data = $this->handleGroupData($list); + $allTimeData = $data['allTimeData']; + $groupsData = $data['groupsData']; } elseif ($granularity == 'monthly') { $list = $this->getGroupData('daily',$dateData['month']['c_start_time'],$dateData['month']['c_end_time']); - $returnData = $this->handleGroupData($list,'d'); + $data = $this->handleGroupData($list,'d'); + $allTimeData = $data['allTimeData']; + $groupsData = $data['groupsData']; } elseif ($granularity == 'yearly') { $list = $this->getGroupData('monthly',$dateData['year']['c_start_time'],date('c')); - $returnData = $this->handleGroupData($list,'m'); + $data = $this->handleGroupData($list,'m'); + $allTimeData = $data['allTimeData']; + $groupsData = $data['groupsData']; } - return json_encode(['code' => 0, 'data' => $returnData]); + return json_encode(['code' => 0, 'msg' => '成功', 'data' => [ + 'allTimeData' => $allTimeData, + 'groupsData' => $groupsData + ]]); } /** @@ -71,7 +83,7 @@ class Index extends BaseController ]; $json_data = json_encode($dataArr); - $result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); + $result = postToken($url,$json_data,false,[],$this->token); $res_data = json_decode($result,true); if ($res_data['code'] != 0) return json_encode(['code' => 403, 'msg' => $res_data['msg']]); @@ -86,34 +98,48 @@ class Index extends BaseController * @return array */ protected function handleGroupData($list,$date_str = 'H:00') { - $returnData = []; + $allTimeData = []; + $groupsData = []; if ($date_str == 'H:00') { for ($i = 9; $i < 23; $i++) { $str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; - $returnData[$str] = 0; + $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; - $returnData[$str] = 0; + $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; - $returnData[$str] = 0; + $allTimeData[$str] = 0; } } + $sumFlowInNum = 0; foreach ($list as $value) { - $date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); - if (!isset($returnData[$date])) continue; - $returnData[$date] = $value['flowInNum']; + $sumFlowInNum += $value['flowInNum']; // 进馆总人数 + if (!isset($groupsData[$value['groupName']]['flowInNum'])) $groupsData[$value['groupName']]['flowInNum'] = 0; + $groupsData[$value['groupName']]['flowInNum'] += $value['flowInNum']; // 分租进馆人数 + $date = date($date_str,ceil($value['createTime'] / 1000) + (8*3600)); // 各时间端进馆人数 + if (!isset($allTimeData[$date])) continue; + $allTimeData[$date] += $value['flowInNum']; + } + ksort($allTimeData); + + // 计算各组占比 + foreach ($groupsData as &$val) { + $val['proportion'] = (round($val['flowInNum']/$sumFlowInNum,2) * 100) ."%"; } - ksort($returnData); - return $returnData; + + return [ + 'allTimeData' => $allTimeData, // 总客流趋势时间段 + 'groupsData' => $groupsData // 各组总数及占比 + ]; } /** @@ -166,7 +192,7 @@ class Index extends BaseController ]; $json_data = json_encode($data); - $result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); + $result = postToken($url,$json_data,false,[],$this->token); $res_data = json_decode($result,true); if ($res_data['code'] != 0) { @@ -210,15 +236,22 @@ class Index extends BaseController ]; $json_data = json_encode($dataArr); - $result = postToken($url,$json_data,false,[],'rqhzG171BROnwBhhcZJJDudZ4vdvC3nm'); + $result = postToken($url,$json_data,false,[],$this->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) { - $returnData[$value['regionId']] = $value['allEnter']; + 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]);