Browse Source

优化接口数据

master
wanghongjun 3 years ago
parent
commit
0b07f142de
  1. 17
      source/application/api/controller/pass/Passcc.php

17
source/application/api/controller/pass/Passcc.php

@ -30,27 +30,31 @@ class Passcc extends Controller
if (!empty($groupsId)) $where['groups_id'] = implode(",",$groupsId); if (!empty($groupsId)) $where['groups_id'] = implode(",",$groupsId);
$allTimeData = []; $allTimeData = [];
$groupsData = []; $groupsData = [];
$dkeys=[];
if ($granularity == 'daily') { if ($granularity == 'daily') {
$where['granularity'] = 'hourly'; $where['granularity'] = 'hourly';
$list = Db::table('bt_passenger_flow')->where($where)->select()->toArray(); $list = Db::table('bt_passenger_flow')->where($where)->select()->toArray();
$data = $this->handleGroupData($list); $data = $this->handleGroupData($list);
$allTimeData = $data['allTimeData']; $allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData']; $groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
} elseif ($granularity == 'monthly') { } elseif ($granularity == 'monthly') {
$where['granularity'] = 'daily'; $where['granularity'] = 'daily';
$list = Db::table('bt_passenger_flow')->where($where)->select()->toArray(); $list = Db::table('bt_passenger_flow')->where($where)->select()->toArray();
$data = $this->handleGroupData($list,'d'); $data = $this->handleGroupData($list,'d');
$allTimeData = $data['allTimeData']; $allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData']; $groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
} elseif ($granularity == 'yearly') { } elseif ($granularity == 'yearly') {
$where['granularity'] = 'monthly'; $where['granularity'] = 'monthly';
$list = Db::table('bt_passenger_flow')->where($where)->select()->toArray(); $list = Db::table('bt_passenger_flow')->where($where)->select()->toArray();
$data = $this->handleGroupData($list,'m'); $data = $this->handleGroupData($list,'m');
$allTimeData = $data['allTimeData']; $allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData']; $groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
} }
$data = ['allTimeData' => $allTimeData, 'groupsData' => $groupsData]; $data = ['allTimeData' => $allTimeData, 'groupsData' => $groupsData, 'dkeys' => $dkeys];
return $this->renderSuccess(compact('data')); return $this->renderSuccess(compact('data'));
} }
@ -63,11 +67,13 @@ class Passcc extends Controller
protected function handleGroupData($list,$date_str = 'H:00') { protected function handleGroupData($list,$date_str = 'H:00') {
$allTimeData = []; $allTimeData = [];
$groupsData = []; $groupsData = [];
$dkey=[];
if ($date_str == 'H:00') { if ($date_str == 'H:00') {
for ($i = 9; $i < 23; $i++) { for ($i = 9; $i < 23; $i++) {
$str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; $str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00';
$allTimeData[$str]['num'] = 0; $allTimeData[$str]['num'] = 0;
$allTimeData[$str]['title'] = $str; $allTimeData[$str]['title'] = $str;
$dkey[]=$str;
} }
} elseif ($date_str == 'd') { } elseif ($date_str == 'd') {
$d = date('d') * 1; $d = date('d') * 1;
@ -76,6 +82,7 @@ class Passcc extends Controller
$str = strlen($i) == 1 ? '0'.$i : $i; $str = strlen($i) == 1 ? '0'.$i : $i;
$allTimeData[$str]['num'] = 0; $allTimeData[$str]['num'] = 0;
$allTimeData[$str]['title'] = $str; $allTimeData[$str]['title'] = $str;
$dkey[]=$str;
} }
} elseif ($date_str == 'm') { } elseif ($date_str == 'm') {
$m = date('m') * 1; $m = date('m') * 1;
@ -84,6 +91,7 @@ class Passcc extends Controller
$str = strlen($i) == 1 ? '0'.$i : $i; $str = strlen($i) == 1 ? '0'.$i : $i;
$allTimeData[$str]['num'] = 0; $allTimeData[$str]['num'] = 0;
$allTimeData[$str]['title'] = $str; $allTimeData[$str]['title'] = $str;
$dkey[]=$str;
} }
} }
$sumNoRepeatInNum = 0; $sumNoRepeatInNum = 0;
@ -99,12 +107,13 @@ class Passcc extends Controller
// 计算各组占比 // 计算各组占比
foreach ($groupsData as &$val) { foreach ($groupsData as &$val) {
$val['proportion'] = (round($val['noRepeatInNum']/$sumNoRepeatInNum,2) * 100) ."%"; $val['proportion'] = $val['noRepeatInNum'] > 0 ? (round($val['noRepeatInNum']/$sumNoRepeatInNum,2) * 100) ."%" : '0%';
} }
return [ return [
'allTimeData' => $allTimeData, // 总客流趋势时间段 'allTimeData' => $allTimeData, // 总客流趋势时间段
'groupsData' => $groupsData // 各组总数及占比 'groupsData' => $groupsData, // 各组总数及占比
'dkeys' =>$dkey
]; ];
} }
@ -168,7 +177,7 @@ class Passcc extends Controller
} }
foreach ($returnData as &$val) { foreach ($returnData as &$val) {
$val['proportion'] = (round($val['allEnter']/$sumAllEnter,2) * 100) ."%"; $val['proportion'] = $val['allEnter'] > 0 ? (round($val['allEnter']/$sumAllEnter,2) * 100) ."%" : '0%';
} }
return $this->renderSuccess(compact('returnData')); return $this->renderSuccess(compact('returnData'));

Loading…
Cancel
Save