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'] = 0; return $this->proc_request($params,'/open_box',$postData); } public function LockCabinet($params) { $postData['cabinet_code'] = $params['cabinet_code']; $postData['delay_time'] = $params['delay_time']; return $this->proc_request($params,'/lock_cabinet',$postData); } public function UnLockCabinet($params) { $postData['cabinet_code'] = $params['cabinet_code']; $postData['delay_time'] = $params['delay_time']; return $this->proc_request($params,'/unlock_cabinet',$postData); } public function ReleaseAlarm($params) { $postData['cabinet_code'] = $params['cabinet_code']; $postData['delay_time'] = $params['delay_time']; return $this->proc_request($params,'/release_alarm',$postData); } public function Reboot($params) { $postData['cabinet_code'] = $params['cabinet_code']; $postData['delay_time'] = $params['delay_time']; return $this->proc_request($params,'/reboot',$postData); } public function QueryState($params) { $postData['cabinet_code'] = $params['cabinet_code']; $postData['delay_time'] = $params['delay_time']; return $this->proc_request($params,'/query_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 = ['state'=> 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 { QueueClient::push($queue_name,$host ,$port ,$key,$params); return ['code'=>0 , 'msg' => 'ok']; } catch (Exception $ex) { return ['code'=>1 , 'msg' => 'cabinet redis connect error']; } } }