queue.logic.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. class queue_logic
  3. {
  4. public function login($req_url,$key)
  5. {
  6. $resp = $this->reqest($req_url,'/login',['key' => $key]);
  7. if(!empty($resp) && $resp['code'] == 0) {
  8. return $resp['data']['token'];
  9. } else {
  10. Log::record("Login Error,{$resp['msg']}",Log::ERR);
  11. return false;
  12. }
  13. }
  14. private function reqest($url,$api,$params,$token='')
  15. {
  16. if(empty($token)) {
  17. $url = "{$url}{$api}";
  18. }
  19. else {
  20. $url = "{$url}{$api}?token={$token}";
  21. }
  22. $resp = http_post_data($url,json_encode($params));
  23. $resp = json_decode($resp,true);
  24. return $resp;
  25. }
  26. public function OpenBox($params) {
  27. $postData['cabinet_code'] = $params['cabinet_code'];
  28. $postData['box_position_list'] = $params['box_position_list'];
  29. $postData['delay_time'] = 0;
  30. return $this->proc_request($params,'/open_box',$postData);
  31. }
  32. public function LockCabinet($params) {
  33. $postData['cabinet_code'] = $params['cabinet_code'];
  34. $postData['delay_time'] = $params['delay_time'];
  35. return $this->proc_request($params,'/lock_cabinet',$postData);
  36. }
  37. public function UnLockCabinet($params) {
  38. $postData['cabinet_code'] = $params['cabinet_code'];
  39. $postData['delay_time'] = $params['delay_time'];
  40. return $this->proc_request($params,'/unlock_cabinet',$postData);
  41. }
  42. public function ReleaseAlarm($params) {
  43. $postData['cabinet_code'] = $params['cabinet_code'];
  44. $postData['delay_time'] = $params['delay_time'];
  45. return $this->proc_request($params,'/release_alarm',$postData);
  46. }
  47. public function Reboot($params) {
  48. $postData['cabinet_code'] = $params['cabinet_code'];
  49. $postData['delay_time'] = $params['delay_time'];
  50. return $this->proc_request($params,'/reboot',$postData);
  51. }
  52. public function QueryState($params) {
  53. $postData['cabinet_code'] = $params['cabinet_code'];
  54. $postData['delay_time'] = $params['delay_time'];
  55. return $this->proc_request($params,'/query_state',$postData);
  56. }
  57. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  58. private function proc_request($params,$api,$postData)
  59. {
  60. $token = $this->login($params['req_url'],$params['key']);
  61. if(empty($token)) {
  62. $ret = ['code'=> 1,'msg' => '柜体服务器错误'];
  63. $this->sync_result($params['ret_queue'],$params['method'],$ret);
  64. return $ret;
  65. }
  66. $resp = $this->reqest($params['req_url'] ,$api, $postData,$token);
  67. if(empty($resp)) {
  68. $ret = ['state'=> 1,'msg' => "{$api} fail."];
  69. $this->sync_result($params['ret_queue'],$params['method'],$ret);
  70. return $ret;
  71. }
  72. $resp = $this->sync_result($params['ret_queue'],$params['method'],$resp);
  73. return $resp;
  74. }
  75. private function sync_result($queue_name, $key, $params){
  76. global $config;
  77. $host = $config['net_queue']['host'];
  78. $port = $config['net_queue']['port'];
  79. try {
  80. QueueClient::push($queue_name,$host ,$port ,$key,$params);
  81. return ['code'=>0 , 'msg' => 'ok'];
  82. } catch (Exception $ex) {
  83. return ['code'=>1 , 'msg' => 'cabinet redis connect error'];
  84. }
  85. }
  86. }