123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- <?php
- class queue_logic
- {
- public function login($req_url,$key)
- {
- $resp = $this->reqest($req_url,'/login',['key' => $key]);
- if(!empty($resp) && $resp['code'] == 0) {
- return $resp['data']['token'];
- } else {
- Log::record("Login Error,{$resp['msg']}",Log::ERR);
- return false;
- }
- }
- private function reqest($url,$api,$params,$token='')
- {
- if(empty($token)) {
- $url = "{$url}{$api}";
- }
- else {
- $url = "{$url}{$api}?token={$token}";
- }
- $resp = http_post_data($url,json_encode($params));
- $resp = json_decode($resp,true);
- return $resp;
- }
- public function OpenBox($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['box_position_list'] = $params['box_position_list'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/open_box',$postData);
- }
- public function LockCabinet($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/lock_cabinet',$postData);
- }
- public function UnLockCabinet($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/unlock_cabinet',$postData);
- }
- public function ReleaseAlarm($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/release_alarm',$postData);
- }
- public function Reboot($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/reboot',$postData);
- }
- public function QueryState($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/query_state',$postData);
- }
- public function QueryBoxState($params) {
- $postData['cabinet_code'] = $params['cabinet_code'];
- $postData['box_position_list'] = $params['box_position_list'];
- $postData['delay_time'] = $params['delay_time'];
- $postData['id'] = $params['id'];
- return $this->proc_request($params,'/query_box_state',$postData);
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- private function proc_request($params,$api,$postData)
- {
- $token = $this->login($params['req_url'],$params['key']);
- if(empty($token)) {
- $ret = ['code'=> 1,'msg' => '柜体服务器错误'];
- $this->sync_result($params['ret_queue'],$params['method'],$ret);
- return $ret;
- }
- $resp = $this->reqest($params['req_url'] ,$api, $postData,$token);
- if(empty($resp)) {
- $ret = ['code'=> 1,'msg' => "{$api} fail."];
- $this->sync_result($params['ret_queue'],$params['method'],$ret);
- return $ret;
- }
- $resp = $this->sync_result($params['ret_queue'],$params['method'],$resp);
- return $resp;
- }
- private function sync_result($queue_name, $key, $params) {
- global $config;
- $host = $config['net_queue']['host'];
- $port = $config['net_queue']['port'];
- try {
- $queuedb = new QueueDB($queue_name,$host,$port);
- $queuedb->push(serialize([$key=>$params]));
- return ['code'=>0 , 'msg' => 'ok'];
- } catch (Exception $ex) {
- return ['code'=>1 , 'msg' => 'cabinet redis connect error'];
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public function UpdateAllBoxState()
- {
- global $config;
- $admin_url = $config['admin_url'];
- $result = $this->getCabinets("{$admin_url}/GetCabinetsBoxs");
- if(empty($result) || $result['code'] != 0) {
- return false;
- }
- $cabinets = $result['data'];
- foreach ($cabinets as $cabinet)
- {
- $params['req_url'] = $cabinet['req_url'];
- $params['key'] = $cabinet['login_key'];
- $token = $this->login($params['req_url'],$params['key']);
- if(empty($token)) {
- return false;
- }
- $boxes = $cabinet['box_data'];
- $i = 1;
- foreach ($boxes as $box)
- {
- $data['id'] = "{$i}";
- $data['cabinet_code'] = $cabinet['cabinet_code'];
- $data['box_position_list'] = [$box['box_number']];
- $data['delay_time'] = 0;
- $resp = $this->reqest($params['req_url'],'/query_box_state',$data,$token);
- if($resp['code'] == 0)
- {
- $update_url = $admin_url . "/BoxChangeStatus";
- foreach ($resp['data']['result_list'] as $value) {
- $data = [];
- $data['cabinet_code'] = $cabinet['cabinet_code'];
- $data['box_number'] = $value['box_position'];
- $data['box_status'] = $value['result'];
- $ret = http_request($update_url,$resp,'POST');
- if($ret == false || $ret['code'] != 0) {
- Log::record("update box state error: cabinet={$cabinet['cabinet_code']},box={$box['box_number']}",log::DEBUG);
- }
- }
- }
- else {
- Log::record("query state err: cabinet={$cabinet['cabinet_code']},box={$box['box_number']}",log::DEBUG);
- }
- $i++;
- }
- }
- }
- public function getCabinets($url) {
- $resp = http_request($url,[]);
- if($resp) {
- $result = json_decode($resp,true);
- return $result;
- }
- else {
- return false;
- }
- }
- }
|