startOfDay()->getTimestamp(); // 今天开始时间 00:00:00 $todayEnd = Carbon::today()->endOfDay()->getTimestamp(); // 今天结束时间 23:59:59 // 查询数据 $result = $CompanyModel->query()->get()->toArray(); // 分配数据 if (!$result) return 5; $key_index = 0; foreach ($result as $key => $item) { $second = 60 * $key_index; // 每个商户延迟 60 秒 //查询低价商品清洗清洗情况 $action1 = $ExecuteLogModel->query()->where([['code', '=', 'LowPriceGoodsJobs'], ['company_id', '=', $item['id']], ['status', '=', '0'], ['insert_time', '>=', $todayStart], ['insert_time', '<=', $todayEnd]])->count(); if ($action1 < 1) continue; //查询违规产品清洗清洗情况 $action2 = $ExecuteLogModel->query()->where([['code', '=', 'ViolationProductJobs'], ['company_id', '=', $item['id']], ['status', '=', '0'], ['insert_time', '>=', $todayStart], ['insert_time', '<=', $todayEnd]])->count(); if ($action2 < 1) continue; //查询违规门店清洗清洗情况 $action3 = $ExecuteLogModel->query()->where([['code', '=', 'ViolationStoreJobs'], ['company_id', '=', $item['id']], ['status', '=', '0'], ['insert_time', '>=', $todayStart], ['insert_time', '<=', $todayEnd]])->count(); if ($action3 < 1) continue; // 准备数据 $message_data = ['company_id' => $item['id']]; //如果今日存在通知推送记录,则跳过统计 $sub_notice_count = $SubNoticeLogModel->query()->where([['company_id', '=', $item['id']], ['insert_time', '>=', $todayStart], ['insert_time', '<=', $todayEnd]])->count(); if ($sub_notice_count > 0) { //执行发送通知任务 SendNoticeJobs::dispatch($message_data); // SendNoticeJobs::dispatchSync($message_data); } else { $key_name = 'SubNoticeJobs_company_id_' . $item['id']; $sub_noticeJobs_data_info = Cache::get($key_name); if ($sub_noticeJobs_data_info) continue; //创建缓存 Cache::put($key_name,'1', 86400); // 每个商户每天只统计执行一次 //执行统计任务 SubNoticeJobs::dispatch($message_data)->delay($second); // SubNoticeJobs::dispatchSync($message_data)->delay($second);; } $key_index++; } // 告知结果 return 6; } }