where('status', 1)->with('company_info')->select()->toArray(); $plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 18)->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 $kk => $vv) { queue(TaskAdd::class,['data'=>$vv,'data_two'=>$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::info('小组服务公司定时任务下发执行成功' . date('Y-m-d H:i:s')); return $this->success('定时任务下发执行成功'); } /** * 小组服务公司任务结算 */ public function settlement(){ // $all=TaskSchedulingPlan::where('is_pay',0)->with(['template_info','scheduling'])->select()->toArray(); $all = TaskSchedulingPlan::whereDay('end_time','today') ->withJoin(['scheduling'], 'left') ->where('scheduling.company_type', 18) ->where('is_pay',0) ->with(['template_info']) ->select() ->toArray(); foreach($all as $k=>$v){ // 任务运行中,后台删除了任务模板 if (empty($v['template_info'])) { continue; } queue(TaskInformationJob::class,$v); } Log::info('小组服务公司定时任务结算执行成功'.date('Y-m-d H:i:s')); return $this->success('小组服务公司定时任务结算执行成功'); } /** * 村管理公司任务下发 */ public function village_task_add() { //任务下发 $time = strtotime(date('Y-m-d')); // 查询系统 所有镇农科公司 未下发 的 任务安排 $taskSchedulingList = TaskScheduling::where('cron_time', '<', $time) ->where('status', 1) ->where('company_type', 17) ->with('company_info') ->select() ->toArray(); $taskSchedulingIds = []; $companyIds = []; foreach ($taskSchedulingList as $k => $taskScheduling) { $templateList = TaskTemplate::where('status', 1)->where('task_scheduling', $taskScheduling['id'])->limit(30)->select()->toArray(); $taskSchedulingIds[] = $taskScheduling['id']; $companyIds[] = $taskScheduling['company_id']; foreach ($templateList as $template) { queue(VillageTaskAdd::class, $template); // TaskLogic::TownCronAdd($template); // 手动下发用 } if (empty($templateList)) { unset($taskSchedulingList[$k]); } } Company::where('id', 'in', $companyIds)->inc('day_count')->update(); TaskScheduling::where('id', 'in', $taskSchedulingIds)->update(['cron_time' => time()]); Log::info('村管理公司定时任务下发执行成功' . date('Y-m-d H:i:s')); return $this->success('村管理公司定时任务下发执行成功'); } /** * 村管理公司任务结算 */ public function village_task_settlement() { Log::info('村管理公司定时任务结算执行-开始'.date('Y-m-d H:i:s')); //today 今日未结算的任务计划 $taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','today') ->withJoin(['scheduling'], 'left') ->where('scheduling.company_type', 17) ->where('is_pay',0) ->with(['template_info']) ->select() ->toArray(); foreach($taskSchedulingPlanList as $taskSchedulingPlan){ // 任务运行中,后台删除了任务模板 if (empty($taskSchedulingPlan['template_info'])) { continue; } queue(VillageTaskSettlementJob::class, $taskSchedulingPlan); } Log::info('村管理公司定时任务结算执行-结束'.date('Y-m-d H:i:s')); return $this->success('村管理公司定时任务结算执行成功'); } /** * 镇合伙人公司任务下发 */ public function town_task_add() { //任务下发 $time = strtotime(date('Y-m-d')); // 查询系统 所有镇农科公司 未下发 的 任务安排 $taskSchedulingList = TaskScheduling::where('cron_time', '<', $time) ->where('status', 1) ->where('company_type', 16) ->with('company_info') ->select() ->toArray(); $taskSchedulingIds = []; $companyIds = []; foreach ($taskSchedulingList as $k => $taskScheduling) { $templateList = TaskTemplate::where('status', 1)->where('task_scheduling', $taskScheduling['id'])->limit(30)->select()->toArray(); $taskSchedulingIds[] = $taskScheduling['id']; $companyIds[] = $taskScheduling['company_id']; foreach ($templateList as $template) { queue(TownTaskAdd::class, $template); // TaskLogic::TownCronAdd($template); // 手动下发用 } if (empty($templateList)) { unset($taskSchedulingList[$k]); } } Company::where('id', 'in', $companyIds)->inc('day_count')->update(); TaskScheduling::where('id', 'in', $taskSchedulingIds)->update(['cron_time' => time()]); Log::info('镇农科公司定时任务下发执行成功' . date('Y-m-d H:i:s')); return $this->success('镇农科公司定时任务下发执行成功'); } /** * 镇农科公司任务结算 */ public function town_task_settlement() { Log::info('镇合伙人公司定时任务结算执行-开始'.date('Y-m-d H:i:s')); //today 今日未结算的任务计划 $taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','today') ->withJoin(['scheduling'], 'left') ->where('scheduling.company_type', 16) ->where('is_pay',0) ->with(['template_info']) ->select() ->toArray(); foreach($taskSchedulingPlanList as $taskSchedulingPlan){ // 任务运行中,后台删除了任务模板 if (empty($taskSchedulingPlan['template_info'])) { continue; } // 解耦 三个角色分开结算,避免某个角色的结算逻辑出现异常,导致整个镇农科公司的任务结算都终止 $taskTemplateInfo = $taskSchedulingPlan['template_info']; // 负责人任务结算 if ($taskTemplateInfo['extend']['task_role'] == 1) { queue(TownTaskSettlementJob::class, $taskSchedulingPlan); } // 市场部长任务结算 if ($taskTemplateInfo['extend']['task_role'] == 2) { queue(TownTaskSettlementJob::class, $taskSchedulingPlan); } // 服务部长任务结算 if ($taskTemplateInfo['extend']['task_role'] == 3) { queue(TownTaskSettlementJob::class, $taskSchedulingPlan); } } Log::info('镇镇合伙人公司定时任务结算执行-结束'.date('Y-m-d H:i:s')); return $this->success('镇农科公司定时任务结算执行成功'); } // 记录每个用户每天的交易任务结算记录 public function settlementRecord() { // 记录用户每日的交易任务完成进度 } }