daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释 // $this->everyMinute(); } /** * 执行任务 * @return mixed */ protected function execute() { //任务下发 // $time=strtotime(date('Y-m-d',strtotime('-1 day'))); $time=strtotime(date('Y-m-d')); // $tiem_end=$time+86399; $plan_all=TaskScheduling::where('cron_time','<',$time)->where('status',1)->with('company_info')->select()->toArray(); $plan_ids=[]; foreach($plan_all as $k=>$v){ $all=TaskTemplate::where('status',1)->where('task_scheduling',$v['id'])->limit(30)->select()->toArray(); $plan_ids[]=$v['id']; if($all){ $plan_all[$k]['template']=$all; }else{ unset($plan_all[$k]); } } $company_id=[]; foreach($plan_all as $k=>$v){ foreach($v['template'] as $kkk=>$vvv){ if ($v['types'] == 1 ||$vvv['types'] == 3) { if ($v['company_info'] && $v['company_info']['day_count'] <=$vvv['stage_day_one']) { $res=$this->stage_inspection($v['template'],'moeny','一'); if($res==false){ return false; } } else { $res=$this->stage_inspection($v['template'],'money_two','二'); if($res==false){ return false; } } } elseif ($v['types'] == 2) { if ($v['company_info']['day_count'] <=$vvv['stage_day_one']) { $res=$this->stage_inspection($v['template'],'moeny','一'); if($res==false){ return false; } } elseif ($v['company_info']['day_count'] <=$vvv['stage_day_two']) { $res=$this->stage_inspection($v['template'],'money_two','二'); if($res==false){ return false; } } else { $res=$this->stage_inspection($v['template'],'money_three','三'); if($res==false){ return false; } } } else { if ( $v['company_info']['day_count'] <=$vvv['stage_day_one']) { $res=$this->stage_inspection($v['template'],'money_three','三'); if($res==false){ return false; } } else { $res=$this->stage_inspection($v['template'],'money_two','二'); if($res==false){ return false; } } } } foreach($v['template'] as $kk=>$vv){ TaskLogic::CronAdd($vv,$v); } $company_id[]=$v['company_id']; } Company::where('id','in',$company_id)->inc('day_count')->update(); TaskScheduling::where('id','in',$plan_ids)->update(['cron_time' => time()]); Log::error('定时任务下发执行成功'.date('Y-m-d H:i:s')); //...具体的任务执行 } public function stage_inspection($v,$moeny_type='moeny',$title='一'){ $count_moeny=0; foreach($v['template'] as $kkkk=>$vvvv){ $count_moeny+=$vvvv[$moeny_type]; } if($count_moeny>200){ Log::info($title.'阶段金额大于200无法下达'.json_encode($v['company_info'])); return false; } return true; } }