Zzjobs.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. defined('BASEPATH') or exit('No direct script access allowed');
  3. /**
  4. * 此类是为了解决erp没有队列的问题,为了解决这个问题,先写一下这个类,避免后期写那么多定时任务类 这里只能解决每间隔多少时间执行一会的
  5. *
  6. */
  7. class Zzjobs extends Start_Controller
  8. {
  9. private $serect_str = "erpjob";
  10. private $user_agent = 'Xcly251618/Job (Erp)';
  11. private $api = "ly202508160727";
  12. private $ip = ['127.0.0.1','47.105.156.18'];
  13. public function __construct()
  14. {
  15. parent::__construct();
  16. $this->load->_model("Model_zzjobs","zzjobs");
  17. $this->load->_model("Model_logic_tools",'logic_tools');
  18. $this->load->_model("Model_fullordererrors","fullordererrors");
  19. $this->load->_model("Model_logic_order","logic_order");
  20. $this->load->_model("Model_job_get3pewaybillid",'job_get3pewaybillid');
  21. $this->load->_model("Model_job_getyuntuwaybillid",'job_getyuntuwaybillid');
  22. $this->load->_model("Model_job_gethualeiwaybillid",'job_gethualeiwaybillid');
  23. $this->load->_model("Model_job_getcbtwaybillid","job_getcbtwaybillid");
  24. }
  25. public function _remap($arg, $arg_array)
  26. {
  27. $ip = $_SERVER['REMOTE_ADDR'];
  28. if(!in_array($ip,$this->ip)){
  29. exit("Unauthorized access");
  30. }
  31. $user_agent = empty($_SERVER['HTTP_USER_AGENT'])?"":$_SERVER['HTTP_USER_AGENT'];
  32. $token = empty($_SERVER['HTTP_X_AUTH_TOKEN'])?"":$_SERVER['HTTP_X_AUTH_TOKEN'];
  33. $time = $this->input->get('time',true);
  34. $api = $this->input->get('api',true);
  35. $this->checkAuth($user_agent,$token,$time,$api);
  36. var_dump("zzjob do action...");
  37. if ($arg == 'jobs') //调出单
  38. {
  39. $this->_jobs();
  40. } elseif($arg == '3peWaybillid'){
  41. $this->_get3peWaybillid();
  42. }elseif($arg == 'yuntuWaybillid'){
  43. $this->_getyunTuWaybillid();
  44. }elseif($arg == 'hualeiWaybillid'){
  45. $this->_getHualeiWaybillid();
  46. }else {
  47. $this->_index();
  48. }
  49. }
  50. /**
  51. * 校验是否有权限可以执行
  52. * $user_agent 自定义的请求客户端名称
  53. * $token 自定义的清华客户端的token
  54. * $time 请求的时间
  55. *
  56. */
  57. private function checkAuth($user_agent,$token,$time,$api){
  58. if($api != $this->api){
  59. exit("Access denied due to insufficient permissions");
  60. }
  61. $check_str = date("Ymd")."¥_".$this->serect_str."_¥".$time;
  62. if(empty($user_agent)){
  63. exit('No direct script access allowed');
  64. }
  65. if($user_agent != $this->user_agent){
  66. exit('Illegal request');
  67. }
  68. if(empty($token)){
  69. exit('No access permission');
  70. }
  71. $sercet_str = md5($check_str);
  72. if($sercet_str != $token){
  73. exit("Request permission is illegal");
  74. }
  75. }
  76. private function _index() {}
  77. //一般每一分钟都执行的 每分钟就执行10条
  78. //每五分钟 就执行100条
  79. //其他的就不限制了
  80. private function _jobs() {
  81. $this->db->query("DELETE from crowd_zzjobs where status = 30");
  82. $final_list = $this->zzjobs->find_all("status = 0","*",null,0,100);
  83. if(empty($final_list)){
  84. return ;
  85. }
  86. $do_list_ids = array_column($final_list,'id');
  87. $this->db->query("update crowd_zzjobs set status = 10 where id in (".implode(",",$do_list_ids).")");
  88. foreach($final_list as $v){
  89. $this->tasksAssign($v);
  90. }
  91. }
  92. private function tasksAssign($info){
  93. switch($info['quque']){
  94. case 'outtime_order':
  95. $params = json_decode($info['payload'],true);
  96. $order_info = $this->logic_order->getInfo("number = '".$params['number']."'","*");
  97. if(!empty($order_info)){
  98. $this->fullordererrors->insert([
  99. 'number'=>$order_info['number'],
  100. 'shop'=>$order_info['shop'],
  101. 'plat'=>$order_info['lv_platform'],
  102. 'error_type'=>1,//订单超时15秒
  103. 'error_msg'=>"订单打印超时,请核对订单是否核对",
  104. 'error_time'=>$info['create_time'],
  105. 'create_time'=>time()
  106. ]);
  107. }
  108. $this->zzjobs->save([
  109. 'status'=>30,
  110. 'result'=>$this->logic_tools->ret_json(1,"执行完毕"),
  111. 'last_time'=>time()
  112. ],$info['id']);
  113. break;
  114. default:
  115. $this->zzjobs->save([
  116. 'status'=>20,
  117. 'result'=>$this->logic_tools->ret_json(-1,"没有对应发方法执行任务"),
  118. 'last_time'=>time()
  119. ],$info['id']);
  120. break;
  121. }
  122. }
  123. //获取3pe的转单号
  124. private function _get3peWaybillid(){
  125. // if(date("H",time()) == 7 ||date("H",time()) == 9 || date("H",time()) == 12 || date("H",time()) == 19){
  126. // var_dump("Allowed to run");
  127. // $this->job_get3pewaybillid->do_job();
  128. // }else{
  129. // var_dump("Not allowed to run");
  130. // }
  131. //获取cbt的快递单号
  132. $this->job_getcbtwaybillid->doAction();
  133. exit("3pe to run");
  134. }
  135. //获取云途的转单号
  136. private function _getyunTuWaybillid(){
  137. if(date("H",time()) == 7){
  138. var_dump("Allowed to run yuntu");
  139. $this->job_getyuntuwaybillid->do_job();
  140. }else{
  141. var_dump("Not allowed to run yuntu");
  142. exit("Not allowed to run");
  143. }
  144. }
  145. //获取华磊的转单号
  146. private function _getHualeiWaybillid(){
  147. if(date("H",time()) == 7){
  148. var_dump("Allowed to run hualei");
  149. $this->job_gethualeiwaybillid->do_job();
  150. }else{
  151. var_dump("Not allowed to run hualei");
  152. exit("Not allowed to run");
  153. }
  154. }
  155. }