|
@@ -56,16 +56,87 @@ class Sport extends Command
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
$this->info('开始执行统计比赛数据任务...');
|
|
$this->info('开始执行统计比赛数据任务...');
|
|
|
-
|
|
|
|
|
- // $data = SportClientService::fixtures(['id' => '1506018']);
|
|
|
|
|
- // file_put_contents('fixtures-1506018.json', json_encode($data));
|
|
|
|
|
- // die;
|
|
|
|
|
-
|
|
|
|
|
$this->fixtures();
|
|
$this->fixtures();
|
|
|
-
|
|
|
|
|
$this->info('结束执行统计比赛数据任务');
|
|
$this->info('结束执行统计比赛数据任务');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取指定日期的所有赛事
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return array
|
|
|
|
|
+ */
|
|
|
|
|
+ public function fixtures()
|
|
|
|
|
+ {
|
|
|
|
|
+ $date = Carbon::tomorrow()->toDateString();
|
|
|
|
|
+ $data = SportClientService::fixtures(['date' => $date]);
|
|
|
|
|
+ // $data = SportClientService::fixtures(['live' => 'all']);
|
|
|
|
|
+ // print_r($data);
|
|
|
|
|
+
|
|
|
|
|
+ // file_put_contents("all_fixtures.json",json_encode($data));
|
|
|
|
|
+ // die;
|
|
|
|
|
+ $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,
|
|
|
|
|
+ ];
|
|
|
|
|
+ $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);
|
|
|
|
|
+ }
|
|
|
|
|
+ //比赛结束,插入比赛事件
|
|
|
|
|
+ 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 ($tableData) {
|
|
|
|
|
+ SportModel::insert($tableData);
|
|
|
|
|
+ }
|
|
|
|
|
+ return $tableData;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
public function initOdds(){
|
|
public function initOdds(){
|
|
|
$page = 1;
|
|
$page = 1;
|
|
|
$limit = 10;
|
|
$limit = 10;
|
|
@@ -210,78 +281,5 @@ class Sport extends Command
|
|
|
return '';
|
|
return '';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 获取指定日期的所有赛事
|
|
|
|
|
- *
|
|
|
|
|
- * @return array
|
|
|
|
|
- */
|
|
|
|
|
- public function fixtures()
|
|
|
|
|
- {
|
|
|
|
|
- $date = Carbon::tomorrow()->toDateString();
|
|
|
|
|
- // $date = '2026-03-07';
|
|
|
|
|
- $data = SportClientService::fixtures(['date' => $date]);
|
|
|
|
|
- // $data = SportClientService::fixtures(['live' => 'all']);
|
|
|
|
|
-
|
|
|
|
|
- $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,
|
|
|
|
|
- ];
|
|
|
|
|
- $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);
|
|
|
|
|
- }
|
|
|
|
|
- //比赛结束,插入比赛事件
|
|
|
|
|
- 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 ($tableData) {
|
|
|
|
|
- SportModel::insert($tableData);
|
|
|
|
|
- }
|
|
|
|
|
- return $tableData;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|