123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- <?php
- namespace App\Console\Commands;
- use App\Models\JuxingAdAccount;
- use App\Support\Log;
- use App\Support\RedisModel;
- use Illuminate\Console\Command;
- class AssignJuxingAdToRds extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'AssignJuxingAdToRds';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '分配广告主爬取数据';
- protected $advertiserIds = null;
- protected $liveDayAgo = 14;
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- $this->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');
- }
- }
- }
|