queue.logic.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. $token = $this->login($params['req_url'],$params['key']);
  31. if(empty($token)) {
  32. $ret = ['code'=> 1,'msg' => '柜体服务器错误'];
  33. $this->sync_return($params['ret_queue'],$params['method'],$ret);
  34. return $ret;
  35. }
  36. $resp = $this->reqest($params['req_url'] ,'/open_box', $postData,$token);
  37. if(empty($resp)) {
  38. $ret = ['state'=> 1,'msg' => 'openbox fail.'];
  39. $this->sync_return($params['ret_queue'],$params['method'],$ret);
  40. return $ret;
  41. }
  42. $resp = $this->sync_return($params['ret_queue'],$params['method'],$resp);
  43. return $resp;
  44. }
  45. public function LockCabinet($params) {
  46. $box_list[] = $params['box_number'];
  47. $postData['cabinet_code'] = $params['cabinet_number'];
  48. $postData['box_position_list'] = $box_list;
  49. $postData['delay_time'] = 0;
  50. $token = $this->login($params['req_url'],$params['key']);
  51. $resp = $this->reqest($params['req_url'] ,'/open_box', $postData,$token);
  52. $this->sync_return($params['ret_queue'],$params['method'],$resp);
  53. }
  54. private function sync_return($queue_name,$key,$params){
  55. global $config;
  56. $host = $config['net_queue']['host'];
  57. $port = $config['net_queue']['port'];
  58. try {
  59. QueueClient::push($queue_name,$host ,$port ,$key,$params);
  60. return ['code'=>0 , 'msg' => 'ok'];
  61. } catch (Exception $ex) {
  62. return ['code'=>1 , 'msg' => 'cabinet redis connect error'];
  63. }
  64. }
  65. }