体育管项目脚本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
5.0 KiB

<?php
namespace task\tasks;
include 'Base.php';
class Passreal extends Base
{
public function run()
{
$config = $this->config('api_config');
$requestData = [];
try{
date_default_timezone_set('Asia/Shanghai');
# $url = $config['host_url'] . "/api/cfas/v3/passenger/realTime";
$url = $config['host_url'] . "/api/cfas/v2/passengerFlow/groups";
$token = $this->get_access_token();
$dataArr = [
'ids' => $this->get_real_group_ids($config,$token,1),
'granularity' => 'hourly',
'startTime' => date("c",strtotime('today')),
'endTime' => date('c',time())
];
$json_data = json_encode($dataArr);
$result = $this->post_token($url,$json_data,false,[],$token);
$res_data = json_decode($result,true);
$list = (array) $res_data['data'];
$existsArr = [];
$resultList = [];
foreach ($list['list'] as $value) {
$value['netValue'] = $value['netValue'] > 0 ? $value['netValue'] : 0;
$groupId = $value['groupId'];
# 统计时间
if (!isset($resultList[$groupId]['statisticsTime'])) {
$resultList[$groupId]['statisticsTime'] = $value['statTime'];
}
# 去重后进客流
if (!isset($resultList[$groupId]['enter'])) {
$resultList[$groupId]['enter'] = $value['noRepeatOutNum'];
} else {
$resultList[$groupId]['enter'] += $value['noRepeatOutNum'];
}
# 去重后出客流
if (!isset($resultList[$groupId]['exit'])) {
$resultList[$groupId]['exit'] = $value['flowOutNum'];
} else {
$resultList[$groupId]['exit'] += $value['flowOutNum'];
}
# 总经过人数
if (!isset($resultList[$groupId]['pass'])) {
$resultList[$groupId]['pass'] = $value['holdValue'] ?: 0;
} else {
$resultList[$groupId]['pass'] += $value['holdValue'] ?: 0;
}
# 保有量
if (!isset($resultList[$groupId]['holdValue'])) {
$resultList[$groupId]['holdValue'] = $value['netValue'];
} else {
$resultList[$groupId]['holdValue'] += $value['netValue'];
}
# 去重前进入人数
if (!isset($resultList[$groupId]['allEnter'])) {
$resultList[$groupId]['allEnter'] = $value['flowInNum'];
} else {
$resultList[$groupId]['allEnter'] += $value['flowInNum'];
}
# 去重前离开人数
if (!isset($resultList[$groupId]['allExit'])) {
$resultList[$groupId]['allExit'] = $value['noRepeatInNum'];
} else {
$resultList[$groupId]['allExit'] += $value['noRepeatInNum'];
}
}
# 总和数据发送,存储
foreach ($resultList as $groupId => $insert_arr) {
$existsArr[] = $groupId;
$insert_arr['groupId'] = $groupId;
$insert_arr['regionId'] = '0';
$requestData[] = $insert_arr;
}
# 如果数据不存在,传输数据全部为0
$idsArr = explode(",",$dataArr['ids']);
foreach ($idsArr as $id) {
$is_continue = true;
if (empty($id)) {
continue;
}
if (in_array($id,$existsArr)) {
$is_continue = false;
}
if ($is_continue) {
$requestData[] = [
'groupId' => $id,
'regionId' => '0',
'statisticsTime' => date("Y-m-d\TH") . ':00:00.000+08:00',
'enter' => 0,
'exit' => 0,
'pass' => 0,
'holdValue' => 0,
'allEnter' => 0,
'allExit' => 0
];
}
}
} catch (\Exception $e) {
return $e->getMessage();
}
$requestRes = $this->request_create_data($requestData,'/api/pass.create/createPassengerFlowReal', $config['host_path'],true);
if (!$requestRes['status']) {
return $requestRes['msg'];
}
#$file = fopen('/tmp/passreal.txt','a');
#$file_msg = '['.date('Y-m-d H:i:s',time()).']';
#fwrite($file,$file_msg . PHP_EOL);
#fclose($file);
# file_put_contents('/tmp/passreal.txt','['.date('Y-m-d H:i:s',time()).']'.PHP_EOL,FILE_APPEND);
return true;
}
}
$Passall = new Passreal();
echo $Passall->run();