<?php namespace App\Console\Commands; use App\Models\Crontjob; use App\Repositories\TrackRepository; use Carbon\Carbon; use Illuminate\Console\Command; class CalculateDailyListenCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'calculate:daily-listen'; /** * The console command description. * * @var string */ protected $description = 'Di chuyển lượt nghe sang ngày hôm qua trước khi cập nhật lượt nghe ngày mới'; protected $trackRepository; /** * Create a new command instance. * * CalculateDailyListenCommand constructor. * @param TrackRepository $trackRepository */ public function __construct(TrackRepository $trackRepository) { parent::__construct(); ini_set('max_execution_time', -1); $this->trackRepository = $trackRepository; } /** * Xử lý di chuyển dựa vào cờ date_moved_at * Mỗi lần di chuyển 1k bản ghi trong crawler_listens * Di chuyển xong thì cập nhật ngày trong crawler_listens.date_moved_at và cho lượt nghe hôm nay=0 * Trong lần sau sẽ ko lấy những bản ghi có date_moved_at = ngày hiện tại * Execute the console command. * * @return mixed */ public function handle() { // Ghi log xem có gọi không Crontjob::create(['message' => 'CalculateDailyListenCommand is called at ' . Carbon::now()]); // Xử lý di chuyển echo "\n Bắt đầu xử lý lấy lượt nghe ngày hôm qua"; $crawlered = $this->trackRepository->getCrawlerListenNotYetMoved(); if ($crawlered) { echo "\n Số lượng cần tính toán lượt nghe: " . $crawlered->count(); foreach ($crawlered as $key => $listen) { // Xử lý lượt nghe từ zing ----------------------------------------------------------------------------- if ($listen->yesterday_zing == 0) { if ($listen->today_zing > 0) { $listen->yesterday_zing = $listen->today_zing; $listen->today_zing = 0; } } else if ($listen->yesterday_zing > 0) { if ($listen->today_zing > 0) { $difference = $listen->today_zing - $listen->yesterday_zing; if ($difference >= 0) { $listen->yesterday_zing = $listen->today_zing; $listen->today_zing = 0; $listen->date_zing = $difference; $listen->increment('week_zing', $difference); $listen->increment('month_zing', $difference); $listen->increment('year_zing', $difference); $listen->increment('alltime_zing', $difference); } } } // Xử lý lượt nghe từ NCT ------------------------------------------------------------------------------ if ($listen->yesterday_nct == 0) { if ($listen->today_nct > 0) { $listen->yesterday_nct = $listen->today_nct; $listen->today_nct = 0; } } else if ($listen->yesterday_nct > 0) { if ($listen->today_nct > 0) { $difference = $listen->today_nct - $listen->yesterday_nct; if ($difference >= 0) { $listen->yesterday_nct = $listen->today_nct; $listen->today_nct = 0; $listen->date_nct = $difference; $listen->increment('week_nct', $difference); $listen->increment('month_nct', $difference); $listen->increment('year_nct', $difference); $listen->increment('alltime_nct', $difference); } } } // Xử lý lượt nghe từ nhacvn --------------------------------------------------------------------------- if ($listen->yesterday_keeng == 0) { if ($listen->today_keeng > 0) { $listen->yesterday_keeng = $listen->today_keeng; $listen->today_keeng = 0; } } else if ($listen->yesterday_keeng > 0) { if ($listen->today_keeng > 0) { $difference = $listen->today_keeng - $listen->yesterday_keeng; if ($difference >= 0) { $listen->yesterday_keeng = $listen->today_keeng; $listen->today_keeng = 0; $listen->date_keeng = $difference; $listen->increment('week_keeng', $difference); $listen->increment('month_keeng', $difference); $listen->increment('year_keeng', $difference); $listen->increment('alltime_keeng', $difference); } } } // Lưu lại giá trị ------------------------------------------------------------------------------------- $listen->date_moved_at = Carbon::now(); $listen->save(); echo "\n Đã tính toán lượt nghe bản ghi có ID= " . $listen->id . ' (Track ID: ' . $listen->track_id . ')'; } } echo "\n Tính toán kết thúc kết thúc: " . $crawlered->count(); } }