From 412749dffa84f76d8c1e68995b48d870917db24d Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq,com> Date: Fri, 10 Nov 2023 15:20:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E6=97=A5=E5=90=84=E9=A6=86=E7=9A=84?= =?UTF-8?q?=E5=80=9F=E8=BF=98=E9=87=8F=E5=92=8C=E5=8A=9E=E8=AF=81=E9=87=8F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/LibLease.php | 95 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 86 insertions(+), 9 deletions(-) diff --git a/tasks/LibLease.php b/tasks/LibLease.php index 0d0bb16..82ef01a 100644 --- a/tasks/LibLease.php +++ b/tasks/LibLease.php @@ -4,24 +4,46 @@ namespace task\tasks; include 'Base.php'; class LibLease extends Base { + + # 获取token url + protected $accessTokenUrl = 'https://ulas1.szlib.org.cn/auth/oauth/token?grant_type=password&scope=app'; + # 获取数据 url + protected $dataUrl = 'https://api.szlib.org.cn/monitor/getLibraryServiceData?access_token='; + # client_id + protected $client_id = 'baapi'; + # client_secret + protected $client_secret = 'Ba2020api'; + protected $username = 'balib'; + protected $password = 'Ba2015lib'; + protected $accessTokenFilename = 'lib_lease_access_token.txt'; + + public function run() { - + $fileData = @file_get_contents($this->accessTokenFilename); + $assess_token = $fileData ?: $this->getAccessToken(); + $config = $this->config('api_config'); - $url = 'http://10.99.57.79:9999/SSBusiness/monitor/getLibraryService?library=044007'; - $result = $this->get_data($url,'balib','Ba2015lib'); + $url = $this->dataUrl . $assess_token; + $result = $this->sendGetCurl($url); $result_data = json_decode($result,true); - if ($result_data['success'] != 1) return '失败'; - $content = $result_data['content']; - if (!$content) return '数据不存在'; + # token过期重新获取 + if (isset($result_data['error']) && $result_data['error'] == 'invalid_token') { + $assess_token = $this->getAccessToken(); + $url = $this->dataUrl . $assess_token; + $result = $this->sendGetCurl($url); + $result_data = json_decode($result,true); + } + + if ($result_data['result'] != 'success') return '失败'; $requestData = [ [ 'library' => $result_data['library'], - 'newreader' => $content['newreader'], - 'servcount' => $content['servcount'], - 'returncount' => $content['returncount'] + 'newreader' => $result_data['newreader'], + 'servcount' => $result_data['servcount'], + 'returncount' => $result_data['returncount'] ] ]; $requestRes = $this->request_create_data($requestData,'/api/library.pass/createLibraryLease',$config['host_path'],true); @@ -31,6 +53,61 @@ class LibLease extends Base return true; } + /** + * 获取登陆token + */ + protected function getAccessToken() + { + + $url = $this->accessTokenUrl; + $url .= "&client_id=".$this->client_id; + $url .= "&client_secret=".$this->client_secret; + $url .= "&username=".$this->username; + $url .= "&password=".md5($this->password); + + $result = $this->curl_post($url); + $deResult = json_decode($result,true); + if (isset($deResult['error'])) { + exit($deResult['error_description']); + } + $access_token = $deResult['access_token']; + + file_put_contents($this->accessTokenFilename,$access_token); + + return $access_token; + } + + /** + * 发送get请求 + * @param $url + * @return bool|string|void + */ + protected function sendGetCurl($url) + { + $curl = curl_init(); + curl_setopt_array($curl, [ + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "GET", + ]); + + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + exit("cURL Error #:" . $err); + } + + return $response; + } } $lib = new LibLease(); echo $lib->run();