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 $other_config; $host = $other_config['net_queue']['host']; $port = $other_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 $other_config; $admin_url = $other_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; } } }