| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | <?phpdefined('BASEPATH') or exit('No direct script access allowed');/** * 此类是为了解决erp没有队列的问题,为了解决这个问题,先写一下这个类,避免后期写那么多定时任务类   这里只能解决每间隔多少时间执行一会的 *  */class Zzjobs extends Start_Controller{    private $serect_str = "erpjob";    private $user_agent = 'Xcly251618/Job (Erp)';    private $api = "ly202508160727";    private $ip = ['127.0.0.1','47.105.156.18'];    public function __construct()    {        parent::__construct();        $this->load->_model("Model_zzjobs","zzjobs");        $this->load->_model("Model_logic_tools",'logic_tools');        $this->load->_model("Model_fullordererrors","fullordererrors");        $this->load->_model("Model_logic_order","logic_order");        $this->load->_model("Model_job_get3pewaybillid",'job_get3pewaybillid');        $this->load->_model("Model_job_getyuntuwaybillid",'job_getyuntuwaybillid');        $this->load->_model("Model_job_gethualeiwaybillid",'job_gethualeiwaybillid');    }    public function _remap($arg, $arg_array)    {        $ip = $_SERVER['REMOTE_ADDR'];               if(!in_array($ip,$this->ip)){            exit("Unauthorized access");        }        $user_agent = empty($_SERVER['HTTP_USER_AGENT'])?"":$_SERVER['HTTP_USER_AGENT'];        $token = empty($_SERVER['HTTP_X_AUTH_TOKEN'])?"":$_SERVER['HTTP_X_AUTH_TOKEN'];        $time =  $this->input->get('time',true);        $api = $this->input->get('api',true);        $this->checkAuth($user_agent,$token,$time,$api);        if ($arg == 'jobs') //调出单        {            $this->_jobs();        } elseif($arg == '3peWaybillid'){            $this->_get3peWaybillid();        }elseif($arg == 'yuntuWaybillid'){            $this->_getyunTuWaybillid();        }elseif($arg == 'hualeiWaybillid'){            $this->_getHualeiWaybillid();        }else {            $this->_index();        }            }    /**     * 校验是否有权限可以执行     * $user_agent   自定义的请求客户端名称     * $token        自定义的清华客户端的token     * $time         请求的时间     *      */    private function checkAuth($user_agent,$token,$time,$api){        if($api != $this->api){            exit("Access denied due to insufficient permissions");        }        $check_str = date("Ymd")."¥_".$this->serect_str."_¥".$time;        if(empty($user_agent)){            exit('No direct script access allowed');        }        if($user_agent != $this->user_agent){            exit('Illegal request');        }        if(empty($token)){            exit('No access permission');        }                $sercet_str = md5($check_str);                if($sercet_str != $token){            exit("Request permission is illegal");        }                   }    private function _index() {}     //一般每一分钟都执行的 每分钟就执行10条        //每五分钟 就执行100条          //其他的就不限制了    private function _jobs() {        $this->db->query("DELETE from crowd_zzjobs where status = 30");                $final_list = $this->zzjobs->find_all("status = 0","*",null,0,100);        if(empty($final_list)){            return ;        }        $do_list_ids = array_column($final_list,'id');        $this->db->query("update crowd_zzjobs set status = 10 where id  in (".implode(",",$do_list_ids).")");        foreach($final_list as $v){            $this->tasksAssign($v);        }            }    private function tasksAssign($info){        switch($info['quque']){            case 'outtime_order':                $params = json_decode($info['payload'],true);                 $order_info = $this->logic_order->getInfo("number = '".$params['number']."'","*");                if(!empty($order_info)){                    $this->fullordererrors->insert([                        'number'=>$order_info['number'],                        'shop'=>$order_info['shop'],                        'plat'=>$order_info['lv_platform'],                        'error_type'=>1,//订单超时15秒                        'error_msg'=>"订单打印超时,请核对订单是否核对",                        'error_time'=>$info['create_time'],                        'create_time'=>time()                    ]);                }                $this->zzjobs->save([                    'status'=>30,                    'result'=>$this->logic_tools->ret_json(1,"执行完毕"),                    'last_time'=>time()                ],$info['id']);                break;            default:                    $this->zzjobs->save([                        'status'=>20,                        'result'=>$this->logic_tools->ret_json(-1,"没有对应发方法执行任务"),                        'last_time'=>time()                    ],$info['id']);                break;        }    }     //获取3pe的转单号    private function  _get3peWaybillid(){                if(date("H",time()) == 7){            var_dump("Allowed to run");            $this->job_get3pewaybillid->do_job();        }else{            var_dump("Not allowed to run");            exit("Not allowed to run");        }            }    //获取云途的转单号    private function  _getyunTuWaybillid(){        if(date("H",time()) == 7){            var_dump("Allowed to run yuntu");            $this->job_getyuntuwaybillid->do_job();        }else{            var_dump("Not allowed to run yuntu");            exit("Not allowed to run");        }    }    //获取华磊的转单号    private function  _getHualeiWaybillid(){        if(date("H",time()) == 7){            var_dump("Allowed to run hualei");            $this->job_gethualeiwaybillid->do_job();        }else{            var_dump("Not allowed to run hualei");            exit("Not allowed to run");        }    }}
 |