[ # 调用网址地址 'host' => '192.168.1.253', # 端口号 'port' => '443', # 请求key 'cid' => '27268113', # 请求密钥 'cskey' => 'Y9NWZJw9cF3cw3J476Ru', # 请求智慧景区接口地址 'host_url' => 'https://192.168.1.253:443/artemis', # 脚本数据推送创建数据地址 //'host_path' => 'http://btgym.xingtongworld.com/index.php?s=', 'host_path' => 'http://10.97.121.2:8442/index.php?s=', # 允许跨域 请求的IP地址 'access_control_allow_origin' => [ 'http://10.97.121.2:8443', ] ] ]; /** * 获取 接口 accessToken * @return mixed */ function get_access_token(){ // 记录缓存, 时效2小时分钟 $token = $this->get_cache('api_access_token'); if (empty($token)) { $config = $this->config('api_config'); // $url = $config['host_url']."/oauth/token?client_id=".$config['cid']."&client_secret=".$config['cskey']; // do post $ret = $this->curl_post($url); $res = json_decode($ret,true); if ($res['access_token']) { $this->set_cache('api_access_token', $res['access_token'], 7200); $token = $res['access_token']; } } return $token; } /** * 获取当前时间日期 * @param $granularity // 返回当前日期 all = 所有 * @return array */ function get_target_date($granularity = 'all') { date_default_timezone_set('Asia/Shanghai'); $data = []; if ($granularity === 'day' || $granularity === 'all') { $date = $granularity !== 'all' ? $granularity : 'day'; $data[$date] = [ 'start_time' => strtotime('today'), 'end_time' => strtotime('tomorrow - 1 second'), ]; } if ($granularity === 'week' || $granularity === 'all') { $date = $granularity !== 'all' ? $granularity : 'week'; $data[$date] = [ 'start_time' => strtotime('this week midnight'), 'end_time' => strtotime('next week midnight - 1 second'), ]; } if ($granularity === 'month' || $granularity === 'all') { $date = $granularity !== 'all' ? $granularity : 'month'; $data[$date] = [ 'start_time' => strtotime(date('Y-m-01 00:00:00')), 'end_time' => strtotime(date('Y-m-t 23:59:59')), ]; } if ($granularity === 'year' || $granularity === 'all') { $date = $granularity !== 'all' ? $granularity : 'year'; $data[$date] = [ 'start_time' => strtotime('first day of January this year'), 'end_time' => strtotime('first day of January next year - 1 second'), ]; } foreach ($data as &$val) { $val['c_start_time'] = date("c",$val['start_time']); $val['c_end_time'] = date("c",$val['end_time']); $val['start_time'] = date("Y-m-d H:i:s",$val['start_time']); $val['end_time'] = date("Y-m-d H:i:s",$val['end_time']); } return $data; } function get_cache($key){ return ''; } function set_cache($key, $value,$expire_time = 0) { } /** * 获取配置数据 * @param $key * @return array|mixed */ function config($key = 'all') { $config = $this->api_config; if ($key == 'all') { return $config; } else { return isset($config[$key]) ? $config[$key] : []; } } /** * curl请求指定url (post) * @param $url * @param array $data * @return mixed */ function curl_post($url, $data = []) { $header = [ 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12' ]; $curl = curl_init(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); return $result; } /** * 模拟POST请求 * @param string $url 请求地址 * @param mixed $data 请求数据 * @param false $useCert 是否引入微信支付证书 * @param array $sslCert 证书路径 * @param string $token 请求token * @return bool|mixed|string */ function post_token($url, $data = [], $useCert = false, $sslCert = [], $token = '') { $header = [ 'Content-type: application/json;', "access_token: {$token}" ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); if ($useCert == true) { // 设置证书:cert 与 key 分别属于两个.pem文件 curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSLCERT, $sslCert['certPem']); curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSLKEY, $sslCert['keyPem']); } $result = curl_exec($curl); if ($result === false) { curl_error($curl); } curl_close($curl); return $result; } /** * Authorization 信息传输请求 * @param $url * @param $user * @param $password * @param $data * @return bool|mixed|string */ function get_data($url,$user,$password,$data = []) { $header = [ 'Content-type: application/json;', "Authorization: Basic " . base64_encode("{$user}:{$password}") ]; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); $result = curl_exec($curl); if ($result === false) { curl_error($curl); } curl_close($curl); return $result; } /** * 输出数据 * @param $data // 待数据 * @param $is_die // 是否停止运行 * @return void */ function dump($data, $is_die = true) { var_dump($data); if ($is_die) die; } /** * @param $requestData * @param $url * @param $host_path * @return array|void */ function request_create_data($requestData,$url,$host_path = '',$encrypt = false) { # 验证传输数据 if (empty($requestData) && is_array($requestData)) return ['status' => 0, 'msg' => 'requestData不能为空,且必须是数组']; if (empty($url)) return ['status' => 0, 'msg' => 'url不能为空']; # 获取请求路径 if (empty($host_path)) { $config = $this->config('api_config'); $host_path = $config['host_path']; } # 验证令牌 $token = '9c4cb25665cf08667c815420ab383cb5'; # 请求接口数据 $data = [ 'data' => $encrypt ? json_encode($requestData) : base64_encode(json_encode($requestData)), 'encrypt' => $encrypt ? 1 : 0 ]; $date = (int)date("d"); $data['signature'] = md5($token . ($date % 2) . md5($data['data'])); $json_data = json_encode($data); $createUrl = $host_path . $url; # 发起请求 $result = $this->post_token($createUrl,$json_data,false,[],$token); var_dump($result); $result = json_decode($result,true); var_dump($result); # 判断返回信息 if ($result['code'] != 1) return ['status' => 0, 'msg' => $result['msg']]; return ['status' => 1]; } function get_real_group_ids($config,$token,$dataType) { $url = $config['host_url'] . "/api/cfas/v2/countGroup/groups/page"; $pageNo = 1; $pageSize = 1; $groupIdArr = []; while (1) { $dataArr = [ "regionId" => "root000000", "isCascade" => 1, "groupType" => 0, "statType" => 0, "pageNo" => $pageNo, "pageSize" => $pageSize ]; $json_data = json_encode($dataArr); $result = $this->post_token($url, $json_data, false, [], $token); $res_data = json_decode($result, true); # 存在错误结束循环 if ($res_data['code'] != 0) break; # 数据不存在结束循环 $list = (array)$res_data['data']['list']; if (empty($list)) break; foreach ($list as $value) { $groupIdArr[] = $value['groupId']; } # 总条数不够结束循环 if (count($list) < $pageSize) break; ++$pageNo; } return $dataType == 2 ? $groupIdArr : implode(",", $groupIdArr); } }