|
|
@@ -8,6 +8,7 @@ use App\Services\SportClientService;
|
|
|
use Carbon\Carbon;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use App\Models\SportEvent;
|
|
|
+use App\Models\Config;
|
|
|
|
|
|
class Sport extends Command
|
|
|
{
|
|
|
@@ -55,6 +56,11 @@ class Sport extends Command
|
|
|
*/
|
|
|
public function handle()
|
|
|
{
|
|
|
+ // $data = SportClientService::odds([
|
|
|
+ // 'fixture' => 1530487,
|
|
|
+ // ]);
|
|
|
+ // print_r($data);
|
|
|
+
|
|
|
|
|
|
$this->info('开始执行统计比赛数据任务...');
|
|
|
|
|
|
@@ -74,6 +80,7 @@ class Sport extends Command
|
|
|
public function liveFixtures()
|
|
|
{
|
|
|
$data = SportClientService::fixtures(['live' => 'all']);
|
|
|
+ file_put_contents("fixturesLive.json", json_encode($data));
|
|
|
$data = $data['response'];
|
|
|
$tableData = [];
|
|
|
$status = $this->short_status;
|
|
|
@@ -94,20 +101,31 @@ class Sport extends Command
|
|
|
'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']}":'-',
|
|
|
+ 'extra_score' => isset($item['score']['extratime']) ? "{$item['score']['extratime']['home']}-{$item['score']['extratime']['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'];
|
|
|
-
|
|
|
+ $sport_data['extra_score'] = $sport_data['extra_score'] == '-' ? '' : $sport_data['extra_score'];
|
|
|
+
|
|
|
+ //锁盘
|
|
|
+ if (isset($item['fixture']['status']['blocked']) && $item['fixture']['status']['blocked']) {
|
|
|
+ $sport_data['is_locked'] = 1;
|
|
|
+ }
|
|
|
+ //已结束
|
|
|
+ if (isset($item['fixture']['status']['finished']) && $item['fixture']['status']['finished']) {
|
|
|
+ $sport_data['state'] = 2;
|
|
|
+ }
|
|
|
+
|
|
|
if (!SportModel::where('data_id', $item['fixture']['id'])->exists()) {
|
|
|
$sport_data['created_at'] = now();
|
|
|
+ $sport_data['status'] = 1;
|
|
|
$tableData[] = $sport_data;
|
|
|
} else {
|
|
|
SportModel::where('data_id', $item['fixture']['id'])->update($sport_data);
|
|
|
@@ -143,78 +161,78 @@ class Sport extends Command
|
|
|
*/
|
|
|
public function fixtures()
|
|
|
{
|
|
|
- $date = Carbon::tomorrow()->toDateString();
|
|
|
- // $date = '2026-03-28';
|
|
|
-
|
|
|
- // $data = SportClientService::odds([
|
|
|
- // 'fixture' => 1461571,
|
|
|
- // ]);
|
|
|
- // file_put_contents("1461571-fixtures.json",json_encode($data));
|
|
|
- // $data = SportClientService::fixtures(['live' => 'all']);
|
|
|
-
|
|
|
- $data = SportClientService::fixtures(['date' => $date]);
|
|
|
+ //根据配置拉取多少天的赛事信息
|
|
|
+ $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,
|
|
|
- ];
|
|
|
- $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 = $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'],
|
|
|
- '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'],
|
|
|
- ]);
|
|
|
+ '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,
|
|
|
+ ];
|
|
|
+ $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);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
- if ($tableData) {
|
|
|
- SportModel::insert($tableData);
|
|
|
- }
|
|
|
- return $tableData;
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
|