1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?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();
}
}