info(date('H:i') . ' 开始执行'); $this->start(); $this->info(date('H:i') . ' 结束执行'); return 0; } public function start($newAdvertiserId = null) { # 可以设置时间规则 list($H, $I) = explode(':', date('H:i')); if (!is_null($newAdvertiserId)) { $this->liveDayAgo = 90; $this->advertiserIds = [$newAdvertiserId]; } if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 5)) ||((($H % 6) == 5) && ($I == 0))) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getStarVideo($advertiserIds); } if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 10)) ||((($H % 6) == 5) && ($I == 5))) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getStarLive($advertiserIds); } if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 15)) ||((($H % 6) == 5) && ($I == 10))) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getQtaskVideo($advertiserIds); } if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 20)) ||((($H % 6) == 5) && ($I == 15))) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getQtaskLive($advertiserIds); } // if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 25)) ||((($H % 6) == 5) && ($I == 20))) { // $advertiserIds = $this->getAdvertiserIds(); // # 每6小时同步一次全部账户的所有助推订单 // if (!empty($advertiserIds)) $this->getFlowQtaskVideo($advertiserIds, 1); // } if (!is_null($newAdvertiserId) || ($I % 30 == 2)) { $advertiserIds = $this->getAdvertiserIds(); # 每30分钟同步一次全部账户的近90天助推订单 if (!empty($advertiserIds)) $this->getFlowQtaskVideo($advertiserIds, 2); } if (!is_null($newAdvertiserId) || ($I % 10 == 3)) { $advertiserIds = $this->getAdvertiserIds(); # 每10分钟同步一次全部账户的近14天助推订单 if (!empty($advertiserIds)) $this->getFlowQtaskVideo($advertiserIds, 3); } // if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 25)) ||((($H % 6) == 5) && ($I == 20))) { // $advertiserIds = $this->getAdvertiserIds(); // # 每6小时同步一次全部账户的所有助推订单 // if (!empty($advertiserIds)) $this->getFlowStarVideo($advertiserIds, 1); // } if (!is_null($newAdvertiserId) || ($I % 30 == 2)) { $advertiserIds = $this->getAdvertiserIds(); # 每30分钟同步一次全部账户的近90天助推订单 if (!empty($advertiserIds)) $this->getFlowStarVideo($advertiserIds, 2); } if (!is_null($newAdvertiserId) || ($I % 5 == 3)) { $advertiserIds = $this->getAdvertiserIds(); # 每5分钟同步一次全部账户的近14天助推订单 if (!empty($advertiserIds)) $this->getFlowStarVideo($advertiserIds, 3); } if (!is_null($newAdvertiserId) || (($H == 0) && ($I == 35)) ||((($H % 6) == 5) && ($I == 30))) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getFlowStarLive($advertiserIds); } if ((($I % 5) == 4)) { $advertiserIds = $this->getAdvertiserIds(); if (!empty($advertiserIds)) $this->getDailyFlowStarVideo($advertiserIds); } } public function getAdvertiserIds() { if (is_null($this->advertiserIds)) { $advertiserIds = JuxingAdAccount::query() ->where('enable', 1) ->pluck('advertiser_id') ->all(); $this->advertiserIds = $advertiserIds; } return $this->advertiserIds; } /** * 获取星视频数据 * @param $advertiserIds */ public function getStarVideo($advertiserIds) { # 设置时间 // $stTime = '2022-11-01'; $stTime = date('Y-m-d', strtotime("-{$this->liveDayAgo} day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRange' => $timeRange ]; RedisModel::lPush(JuxingAdAccount::JUXING_STAR_VIDEO_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取星视频数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取星直播数据 * @param $advertiserIds */ public function getStarLive($advertiserIds) { # 设置时间 $stTime = date('Y-m-d', strtotime("-{$this->liveDayAgo} day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'stTime' => $timeRange['st'], 'enTime' => $timeRange['en'] ]; RedisModel::lPush(JuxingAdAccount::JUXING_STAR_LIVE_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取星直播数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取星任务视频 * @param $advertiserIds */ public function getQtaskVideo($advertiserIds) { # 设置时间 // $stTime = '2022-11-01'; $stTime = date('Y-m-d', strtotime("-{$this->liveDayAgo} day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRange' => $timeRange ]; RedisModel::lPush(JuxingAdAccount::JUXING_QTASK_VIDEO_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取星任务视频数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取星任务直播 * @param $advertiserIds */ public function getQtaskLive($advertiserIds) { # 设置时间 $stTime = date('Y-m-d', strtotime("-{$this->liveDayAgo} day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'stTime' => $timeRange['st'], 'enTime' => $timeRange['en'] ]; RedisModel::lPush(JuxingAdAccount::JUXING_QTASK_LIVE_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取星任务直播数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取流量助推-星任务-视频数据 * @param $advertiserIds */ public function getFlowQtaskVideo($advertiserIds, $type) { switch($type) { case 2: $stTime = date('Y-m-d', strtotime('-90 days')); break; case 3: $stTime = date('Y-m-d', strtotime('-14 days')); break; default: $stTime = '2022-11-01'; break; } # 设置时间 $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRange' => $timeRange ]; RedisModel::lPush(JuxingAdAccount::JUXING_FLOW_QTASK_VIDEO_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取流量助推-星任务-视频数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取流量助推-星视频数据 * @param $advertiserIds */ public function getFlowStarVideo($advertiserIds, $type) { # 设置时间 switch($type) { case 2: $stTime = date('Y-m-d', strtotime('-90 days')); break; case 3: $stTime = date('Y-m-d', strtotime('-14 days')); break; default: $stTime = '2022-11-01'; break; } $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRange' => $timeRange ]; RedisModel::lPush(JuxingAdAccount::JUXING_FLOW_STAR_VIDEO_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取流量助推-星视频数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取流量助推-星直播数据 * @param $advertiserIds */ public function getFlowStarLive($advertiserIds) { # 设置时间 // $stTime = '2022-11-01'; $stTime = date('Y-m-d', strtotime("-{$this->liveDayAgo} day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { foreach ($timeRangeArr as $timeRange) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRange' => $timeRange ]; RedisModel::lPush(JuxingAdAccount::JUXING_FLOW_STAR_LIVE_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取流量助推-星直播数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } } /** * 获取流量助推-星视频每日数据 * @param $advertiserIds */ public function getDailyFlowStarVideo($advertiserIds) { # 设置时间 $stTime = date('Y-m-d', strtotime("-41 day")); $enTime = date('Y-m-d'); # 获取时间段数组 $timeRangeArr = getTimeRangeArr($stTime, $enTime); foreach ($advertiserIds as $advertiserId) { # 插入队列 $advertiserItem = [ 'advertiserId' => $advertiserId, 'timeRangeArr' => $timeRangeArr ]; RedisModel::lPush(JuxingAdAccount::JUXING_FLOW_STAR_VIDEO_DAILY_SYNC_ADVID_LIST, json_encode($advertiserItem)); # 输出日志 // Log::info('获取流量助推-星视频订单每日数据入队列成功', $advertiserItem, 'AssignJuxingAdToRds'); } } }