DailyTask.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Console\Commands;
  3. use Illuminate\Console\Command;
  4. use Illuminate\Support\Facades\Log;
  5. use App\Models\Manager\External\Company as CompanyModel;
  6. use App\Jobs\Manager\Process\ScrapeDataProductJobs;
  7. use Illuminate\Support\Carbon;
  8. /**
  9. * 定时清洗采集的商品数据
  10. * @author 唐远望
  11. * @version 1.0
  12. * @date 2025-12-10
  13. */
  14. class DailyTask extends Command
  15. {
  16. /**
  17. * 命令名称和签名
  18. *
  19. * @var string
  20. */
  21. protected $signature = 'task:daily';
  22. /**
  23. * 命令描述
  24. *
  25. * @var string
  26. */
  27. protected $description = '每天12点执行的定时任务';
  28. /**
  29. * 执行命令
  30. *
  31. * @return int
  32. */
  33. public function handle()
  34. {
  35. $this->info('开始执行每日任务...');
  36. try {
  37. Log::info('每日数据清洗任务执行中 - ' . now());
  38. $start_time = Carbon::yesterday()->startOfDay()->getTimestamp(); // 昨天开始时间 00:00:00
  39. $end_time = Carbon::yesterday()->endOfDay()->getTimestamp(); // 昨天结束时间 23:59:59
  40. $CompanyModel = new CompanyModel();
  41. $company_list = $CompanyModel->select(['id', 'status'])->where('status', 0)->orderByDesc('cleaning_priority')->get()->toarray();
  42. foreach ($company_list as $company) {
  43. $message_data = ['company_id' => $company['id'], 'page' => '1', 'limit' => '10000', 'start_time' => $start_time, 'end_time' => $end_time];
  44. //执行低价挂网商品数据清洗任务
  45. ScrapeDataProductJobs::dispatch($message_data);
  46. }
  47. $this->info('每日任务执行完成!');
  48. return Command::SUCCESS;
  49. } catch (\Exception $e) {
  50. Log::error('每日定时任务执行失败: ' . $e->getMessage());
  51. $this->error('任务执行失败: ' . $e->getMessage());
  52. return Command::FAILURE;
  53. }
  54. }
  55. }