This commit is contained in:
mkm 2023-08-28 11:13:03 +08:00
parent fa520f572d
commit 9669673fec
3 changed files with 82 additions and 77 deletions

View File

@ -4,10 +4,6 @@ namespace app\job;
use app\common\logic\task\TaskLogic; use app\common\logic\task\TaskLogic;
use think\queue\Job; use think\queue\Job;
use app\common\model\Company;
use app\common\model\task\Task;
use app\common\model\task_scheduling\TaskScheduling;
use app\common\model\task_template\TaskTemplate;
/** /**
* 任务下发执行的具体逻辑 * 任务下发执行的具体逻辑
@ -15,12 +11,12 @@ use app\common\model\task_template\TaskTemplate;
class TaskAdd class TaskAdd
{ {
public function fire(Job $job, $v) public function fire(Job $job, $data)
{ {
if ($job->attempts() > 3) { if ($job->attempts() > 3) {
//通过这个方法可以检查这个任务已经重试了几次了 //通过这个方法可以检查这个任务已经重试了几次了
} }
// TaskLogic::CronAdd($v); TaskLogic::CronAdd($data['data'],$data['data_two']);
//如果任务执行成功后 记得删除任务不然这个任务会重复执行直到达到最大重试次数后失败后执行failed方法 //如果任务执行成功后 记得删除任务不然这个任务会重复执行直到达到最大重试次数后失败后执行failed方法
$job->delete(); $job->delete();
} }

View File

@ -10,12 +10,14 @@ use app\common\model\Company;
use app\common\model\task_template\TaskTemplate; use app\common\model\task_template\TaskTemplate;
use app\common\logic\task\TaskLogic; use app\common\logic\task\TaskLogic;
use app\common\model\task_scheduling\TaskScheduling; use app\common\model\task_scheduling\TaskScheduling;
class TaskCron extends Task{
class TaskCron extends Task
{
public function configure() public function configure()
{ {
$this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释 $this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
// $this->everyMinute(); // $this->everyMinute();//每分钟
} }
/** /**
* 执行任务 * 执行任务
@ -25,85 +27,92 @@ class TaskCron extends Task{
{ {
//任务下发 //任务下发
// $time=strtotime(date('Y-m-d',strtotime('-1 day'))); // $time=strtotime(date('Y-m-d',strtotime('-1 day')));
$time=strtotime(date('Y-m-d')); $time = strtotime(date('Y-m-d'));
// $tiem_end=$time+86399; // $tiem_end=$time+86399;
$plan_all=TaskScheduling::where('cron_time','<',$time)->where('status',1)->with('company_info')->select()->toArray(); $plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->with('company_info')->select()->toArray();
$plan_ids=[]; $plan_ids = [];
foreach($plan_all as $k=>$v){ foreach ($plan_all as $k => $v) {
$all=TaskTemplate::where('status',1)->where('task_scheduling',$v['id'])->limit(30)->select()->toArray(); $all = TaskTemplate::where('status', 1)->where('task_scheduling', $v['id'])->limit(30)->select()->toArray();
$plan_ids[]=$v['id']; $plan_ids[] = $v['id'];
if($all){ if ($all) {
$plan_all[$k]['template']=$all; $plan_all[$k]['template'] = $all;
}else{ } else {
unset($plan_all[$k]); unset($plan_all[$k]);
} }
} }
$company_id=[]; $company_id = [];
foreach($plan_all as $k=>$v){ foreach ($plan_all as $k => $v) {
foreach($v['template'] as $kkk=>$vvv){ foreach ($v['template'] as $kk => $vv) {
if ($v['types'] == 1 ||$vvv['types'] == 3) { queue(TaskAdd::class,['data'=>$vv,'data_two'=>$v]);
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) { $company_id[] = $v['company_id'];
if ($v['company_info']['day_count'] <=$vvv['stage_day_one']) { Company::where('id', 'in', $company_id)->inc('day_count')->update();
$res=$this->stage_inspection($v['template'],'moeny','一'); TaskScheduling::where('id', 'in', $plan_ids)->update(['cron_time' => time()]);
if($res==false){ Log::error('定时任务下发执行成功' . date('Y-m-d H:i:s'));
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='一'){ public function stage_inspection($v, $moeny_type = 'moeny', $title = '一')
$count_moeny=0; {
foreach($v['template'] as $kkkk=>$vvvv){ $count_moeny = 0;
$count_moeny+=$vvvv[$moeny_type]; foreach ($v['template'] as $kkkk => $vvvv) {
$count_moeny += $vvvv[$moeny_type];
} }
if($count_moeny>200){ if ($count_moeny > 200) {
Log::info($title.'阶段金额大于200无法下达'.json_encode($v['company_info'])); Log::info($title . '阶段金额大于200无法下达' . json_encode($v['company_info']));
return false; return false;
} }
return true; return true;
} }
} }
// 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'];
// }

View File

@ -12,7 +12,7 @@ class TaskSettlementCron extends Task{
public function configure() public function configure()
{ {
$this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释 $this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
// $this->everyMinute(); // $this->everyMinute();//每分钟
} }
/** /**
* 任务结算 * 任务结算