|
|
@@ -92,12 +92,12 @@ class Sport extends Command
|
|
|
{
|
|
|
// $this->info('开始执行统计比赛数据任务...');
|
|
|
$this->is_live = $this->argument('is_live');
|
|
|
- if ($this->is_live == 1) {
|
|
|
- //进行中的赛事,定时更新
|
|
|
- $this->liveFixtures();
|
|
|
- } elseif ($this->is_live == 0) {
|
|
|
+ if ($this->is_live == 0) {
|
|
|
//未开始的赛事拉取
|
|
|
$this->fixtures();
|
|
|
+ } elseif ($this->is_live == 1) {
|
|
|
+ //进行中的赛事,定时更新
|
|
|
+ $this->liveFixtures();
|
|
|
} elseif ($this->is_live == 2){
|
|
|
$this->checkLiveFixtures();
|
|
|
//$this->updateOvertimeFixtures();
|
|
|
@@ -270,80 +270,77 @@ class Sport extends Command
|
|
|
//根据配置拉取多少天的赛事信息
|
|
|
$days = Config::where('field', 'sport_days')->first()->val ?? 1;
|
|
|
for($i=0;$i<$days;$i++) {
|
|
|
- $date = Carbon::tomorrow()->addDay($i)->toDateString();
|
|
|
- $count = SportModel::where('game_time','>=', strtotime($date))->where('game_time','<=', strtotime($date." 23:59:59"))->count();
|
|
|
- if (!$count) {
|
|
|
- $data = SportClientService::fixtures(['date' => $date]);
|
|
|
-
|
|
|
- $data = $data['response'];
|
|
|
- $tableData = [];
|
|
|
- $status = $this->short_status;
|
|
|
- foreach ($data as $item) {
|
|
|
- $home_statistics = !empty($item['statistics']) ? $item['statistics'][0]['statistics'] : '';
|
|
|
- $away_statistics = !empty($item['statistics']) ? $item['statistics'][1]['statistics'] : '';
|
|
|
-
|
|
|
- $sport_data = [
|
|
|
- 'data_id' => $item['fixture']['id'],
|
|
|
- 'home_team_id' => $item['teams']['home']['id'],
|
|
|
- 'home_team_en' => $item['teams']['home']['name'],
|
|
|
- 'home_team' => lang($item['teams']['home']['name']),
|
|
|
- 'home_team_logo' => $item['teams']['home']['logo'],
|
|
|
- 'guest_team_id' => $item['teams']['away']['id'],
|
|
|
- 'guest_team_en' => $item['teams']['away']['name'],
|
|
|
- 'guest_team' => lang($item['teams']['away']['name']),
|
|
|
- 'guest_team_logo' => $item['teams']['away']['logo'],
|
|
|
- 'half_score' => "{$item['score']['halftime']['home']}-{$item['score']['halftime']['away']}",
|
|
|
- 'rbt' => $item['fixture']['timestamp'],
|
|
|
- 'score' => isset($item['score']['fulltime']) ? "{$item['score']['fulltime']['home']}-{$item['score']['fulltime']['away']}":'-',
|
|
|
- 'league' => lang($item['league']['name']),
|
|
|
- 'league_en' => $item['league']['name'],
|
|
|
- // 'state' => $status[$item['fixture']['status']['short']],//比赛状态:0未开始1进行中2已完场3延期4取消
|
|
|
- 'game_time' => $item['fixture']['timestamp'],
|
|
|
- 'status' => 1,
|
|
|
- 'updated_at' => now(),
|
|
|
- 'home_statistics' => $home_statistics,
|
|
|
- 'away_statistics' => $away_statistics,
|
|
|
- 'is_send' => 0,
|
|
|
- ];
|
|
|
- $status_short = strtoupper($item['fixture']['status']['short']);
|
|
|
- if (isset($status[$status_short])) {
|
|
|
- $sport_data['state'] = $status[$status_short];
|
|
|
- }
|
|
|
- $sport_data['score'] = $sport_data['score'] == '-' ? '' : $sport_data['score'];
|
|
|
- $sport_data['half_score'] = $sport_data['half_score'] == '-' ? '' : $sport_data['half_score'];
|
|
|
-
|
|
|
- if (!SportModel::where('data_id', $item['fixture']['id'])->exists()) {
|
|
|
- $sport_data['created_at'] = now();
|
|
|
- $tableData[] = $sport_data;
|
|
|
- } else {
|
|
|
- SportModel::where('data_id', $item['fixture']['id'])->update($sport_data);
|
|
|
- }
|
|
|
+ $date = Carbon::today()->addDay($i)->toDateString();
|
|
|
+ $data = SportClientService::fixtures(['date' => $date]);
|
|
|
+
|
|
|
+ $data = $data['response'];
|
|
|
+ $tableData = [];
|
|
|
+ $status = $this->short_status;
|
|
|
+ foreach ($data as $item) {
|
|
|
+ $home_statistics = !empty($item['statistics']) ? $item['statistics'][0]['statistics'] : '';
|
|
|
+ $away_statistics = !empty($item['statistics']) ? $item['statistics'][1]['statistics'] : '';
|
|
|
+
|
|
|
+ $sport_data = [
|
|
|
+ 'data_id' => $item['fixture']['id'],
|
|
|
+ 'home_team_id' => $item['teams']['home']['id'],
|
|
|
+ 'home_team_en' => $item['teams']['home']['name'],
|
|
|
+ 'home_team' => lang($item['teams']['home']['name']),
|
|
|
+ 'home_team_logo' => $item['teams']['home']['logo'],
|
|
|
+ 'guest_team_id' => $item['teams']['away']['id'],
|
|
|
+ 'guest_team_en' => $item['teams']['away']['name'],
|
|
|
+ 'guest_team' => lang($item['teams']['away']['name']),
|
|
|
+ 'guest_team_logo' => $item['teams']['away']['logo'],
|
|
|
+ 'half_score' => "{$item['score']['halftime']['home']}-{$item['score']['halftime']['away']}",
|
|
|
+ 'rbt' => $item['fixture']['timestamp'],
|
|
|
+ 'score' => isset($item['score']['fulltime']) ? "{$item['score']['fulltime']['home']}-{$item['score']['fulltime']['away']}":'-',
|
|
|
+ 'league' => lang($item['league']['name']),
|
|
|
+ 'league_en' => $item['league']['name'],
|
|
|
+ // 'state' => $status[$item['fixture']['status']['short']],//比赛状态:0未开始1进行中2已完场3延期4取消
|
|
|
+ 'game_time' => $item['fixture']['timestamp'],
|
|
|
+ 'status' => 1,
|
|
|
+ 'updated_at' => now(),
|
|
|
+ 'home_statistics' => $home_statistics,
|
|
|
+ 'away_statistics' => $away_statistics,
|
|
|
+ 'is_send' => 0,
|
|
|
+ ];
|
|
|
+ $status_short = strtoupper($item['fixture']['status']['short']);
|
|
|
+ if (isset($status[$status_short])) {
|
|
|
+ $sport_data['state'] = $status[$status_short];
|
|
|
+ }
|
|
|
+ $sport_data['score'] = $sport_data['score'] == '-' ? '' : $sport_data['score'];
|
|
|
+ $sport_data['half_score'] = $sport_data['half_score'] == '-' ? '' : $sport_data['half_score'];
|
|
|
+
|
|
|
+ if (!SportModel::where('data_id', $item['fixture']['id'])->exists()) {
|
|
|
+ $sport_data['created_at'] = now();
|
|
|
+ $tableData[] = $sport_data;
|
|
|
+ } else {
|
|
|
+ SportModel::where('data_id', $item['fixture']['id'])->update($sport_data);
|
|
|
+ }
|
|
|
|
|
|
- //更新或创建球队和联赛信息
|
|
|
- SportModel::addSportTeam($sport_data);
|
|
|
- SportModel::addSportLeague($item['league']);
|
|
|
+ //更新或创建球队和联赛信息
|
|
|
+ SportModel::addSportTeam($sport_data);
|
|
|
+ SportModel::addSportLeague($item['league']);
|
|
|
|
|
|
- //比赛结束,插入比赛事件
|
|
|
- if (isset($sport_data['state']) && $sport_data['state'] == 2 && !empty($item['events'])) {
|
|
|
- foreach($item['events'] as $event) {
|
|
|
- SportEvent::create([
|
|
|
- 'data_id' => $item['fixture']['id'],
|
|
|
- 'type' => $event['type'],
|
|
|
- 'time_elapsed' => $event['time']['elapsed'],
|
|
|
- 'time' => json_encode($event['time']),
|
|
|
- 'detail' => $event['detail'],
|
|
|
- 'player' => $event['player'] ? json_encode($event['player']) : $event['player'],
|
|
|
- 'team_id' => $event['team']['id'],
|
|
|
- 'comments' => $event['comments'],
|
|
|
- 'assist' => $event['assist'] ? json_encode($event['assist']) : $event['assist'],
|
|
|
- ]);
|
|
|
- }
|
|
|
-
|
|
|
+ //比赛结束,插入比赛事件
|
|
|
+ if (isset($sport_data['state']) && $sport_data['state'] == 2 && !empty($item['events'])) {
|
|
|
+ foreach($item['events'] as $event) {
|
|
|
+ SportEvent::create([
|
|
|
+ 'data_id' => $item['fixture']['id'],
|
|
|
+ 'type' => $event['type'],
|
|
|
+ 'time_elapsed' => $event['time']['elapsed'],
|
|
|
+ 'time' => json_encode($event['time']),
|
|
|
+ 'detail' => $event['detail'],
|
|
|
+ 'player' => $event['player'] ? json_encode($event['player']) : $event['player'],
|
|
|
+ 'team_id' => $event['team']['id'],
|
|
|
+ 'comments' => $event['comments'],
|
|
|
+ 'assist' => $event['assist'] ? json_encode($event['assist']) : $event['assist'],
|
|
|
+ ]);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
- if ($tableData) {
|
|
|
- SportModel::insert($tableData);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if ($tableData) {
|
|
|
+ SportModel::insert($tableData);
|
|
|
}
|
|
|
}
|
|
|
|