| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | <?phpnamespace app\cron;use app\common\model\PatrolTask;use app\common\util\AppMsg;use think\Db;use yunwuxin\cron\Task;class PatrolPlan extends Task{    public function configure()    {        $this->everyMinute(); //每分钟执行一次    }    /**     * 执行任务     * @return mixed     */    protected function execute()    {        try {            $this->patrol();            $this->addPatrolTask();            $this->patrolStart();            $this->patrolPlan();        } catch (\Exception $e) {            trace($e->getMessage());        }    }    public function patrol(){        set_time_limit(0);        ini_set("memory_limit","1024M");        (new PatrolTask())->timer_action();    }    //近12个小时的巡更任务加入到任务栏    public function addPatrolTask(){        (new PatrolTask())->addPatrolTask();    }    // 巡更任务将要开始提醒 每分钟执行一次    public function patrolStart(){        $curTime = date('Y-m-d H:i').':00';        $users = Db::name('patrol_task_user')            ->alias('ptu')            ->join('patrol_task pt','pt.id = ptu.patrol_task_id')            ->where('pt.del',0)            ->where('pt.status',0)            ->where('pt.start_time',$curTime)            ->field('ptu.user_id,patrol_mode')            ->select();        $userids1 = $userids2 = $userids3 = $userids4 = [];        foreach ($users as $k=>$v){            if($v['patrol_mode'] == 1 && !in_array($v['user_id'],$userids1)){                $userids1[] = $v['user_id'];            }else if($v['patrol_mode'] == 2 && !in_array($v['user_id'],$userids2)){                $userids2[] = $v['user_id'];            }else if($v['patrol_mode'] == 3 && !in_array($v['user_id'],$userids3)){                $userids3[] = $v['user_id'];            }else if($v['patrol_mode'] == 4 && !in_array($v['user_id'],$userids4)){                $userids4[] = $v['user_id'];            }        }        if($userids1){            send_jpush($userids1,AppMsg::PUSH_PATROL,'您有新的巡更任务将要开始,请及时执行。');        }        if($userids2){            send_jpush($userids2,AppMsg::PUSH_PATROL,'您有新的巡视任务将要开始,请及时执行。');        }        if($userids3){            send_jpush($userids3,AppMsg::PUSH_PATROL,'您有新的巡查任务将要开始,请及时执行。');        }        if($userids4){            send_jpush($userids4,AppMsg::PUSH_PATROL,'您有新的巡检任务将要开始,请及时执行。');        }    }    // 修改巡更计划状态 1分钟执行一次    public function patrolPlan(){        $curDay = date('Y-m-d');        Db::name('patrol_plan')            ->where('del',0)            ->where('status',0)            ->where('start_time','<=',$curDay)            ->update(['status'=>1,'update_time'=>date('Y-m-d H:i:s')]);        Db::name('patrol_plan')            ->where('del',0)            ->where('status','in',[0,1])            ->where('end_time','<',$curDay)            ->update(['status'=>2,'update_time'=>date('Y-m-d H:i:s')]);    }}
 |