Browse Source

优化布局增加占比

master
wanghongjun 3 years ago
parent
commit
2490084378
  1. 69
      app/controller/Index.php

69
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]);

Loading…
Cancel
Save