|
|
@@ -6,6 +6,7 @@ use Illuminate\Console\Command;
|
|
|
use App\Models\Sport as SportModel;
|
|
|
use App\Models\SportTeam;
|
|
|
use App\Models\SportLeague;
|
|
|
+use App\Models\SportStatistics;
|
|
|
use App\Services\SportClientService;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
@@ -243,20 +244,21 @@ class Sport extends Command
|
|
|
} else {
|
|
|
SportModel::where('data_id', $item['fixture']['id'])->update($sport_data);
|
|
|
}
|
|
|
- //比赛结束,插入比赛事件
|
|
|
- if ($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 ($sport_data['state'] == 2 ) {
|
|
|
+ $data_id = $item['fixture']['id'];
|
|
|
+ //比赛结束,插入比赛事件
|
|
|
+ if (!empty($item['events'])) {
|
|
|
+ $this->insertSportEvents($data_id, $item['events']);
|
|
|
+ }
|
|
|
+ //比赛结束,插入比赛事件
|
|
|
+ if (!empty($item['statistics'])) {
|
|
|
+ $this->insertSportStatistics($data_id, $item['statistics']);
|
|
|
+ } else {
|
|
|
+ $data = SportClientService::statistics(['fixture' => $data_id]);
|
|
|
+ file_put_contents("fixturesStatistics.json", json_encode($data));
|
|
|
+ $statistics = empty($data['response'][0]['statistics']) ? [] : $data['response'][0]['statistics'];
|
|
|
+ $this->insertSportStatistics($data_id, $statistics);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -399,4 +401,88 @@ class Sport extends Command
|
|
|
SportModel::where('status', 1)->where('state', 1)->where('game_time', '<=', time() - 60*60*3)->where('updated_at', '<=', $end_time)->update(['state' =>2]);
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ //插入比赛事件数据
|
|
|
+ public function insertSportEvents($data_id, $events)
|
|
|
+ {
|
|
|
+ foreach($events as $event) {
|
|
|
+ SportEvent::create([
|
|
|
+ 'data_id' => $data_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'],
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //插入比赛统计数据
|
|
|
+ public function insertSportStatistics($data_id, $statistics)
|
|
|
+ {
|
|
|
+ $insertData = [];
|
|
|
+ foreach($statistics as $item) {
|
|
|
+ if (!empty($item['type'])) {
|
|
|
+ switch ($item['type']) {
|
|
|
+ case 'Shots on Goal':
|
|
|
+ $insertData['shots_on_goal'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Shots off Goal':
|
|
|
+ $insertData['shots_off_goal'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Shots insidebox':
|
|
|
+ $insertData['shots_insidebox'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Shots outsidebox':
|
|
|
+ $insertData['shots_outsidebox'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Total Shots':
|
|
|
+ $insertData['total_shots'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Blocked Shots':
|
|
|
+ $insertData['blocked_shots'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Fouls':
|
|
|
+ $insertData['fouls'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Corner Kicks':
|
|
|
+ $insertData['corner_kicks'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Offsides':
|
|
|
+ $insertData['offsides'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Ball Possession':
|
|
|
+ $insertData['ball_possession'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Yellow Cards':
|
|
|
+ $insertData['yellow_cards'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Red Cards':
|
|
|
+ $insertData['red_cards'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Goalkeeper Saves':
|
|
|
+ $insertData['goalkeeper_saves'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Total passes':
|
|
|
+ $insertData['total_passes'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Passes accurate':
|
|
|
+ $insertData['passes_accurate'] = $item['value'];
|
|
|
+ break;
|
|
|
+ case 'Passes %':
|
|
|
+ $insertData['passes_percent'] = $item['value'];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($insertData) {
|
|
|
+ $insertData['data_id'] = $data_id;
|
|
|
+ SportStatistics::create($insertData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|