|
|
@@ -107,36 +107,116 @@ class Sport extends Command
|
|
|
{
|
|
|
$date = Carbon::tomorrow()->toDateString();
|
|
|
$data = SportClientService::fixtures(['date' => $date]);
|
|
|
- print_r($data);die;
|
|
|
$data = $data['response'];
|
|
|
$tableData = [];
|
|
|
$status = ['NS' => 0, '1H' => 1, 'HT' => 1, '2H' => 1, 'ET' => 1, 'BT' => 1, 'P' => 1, 'SUSP' => 1, 'INT' => 1, 'LIVE' => 1, 'FT' => 2, 'AET' => 2, 'PEN' => 2, 'PST' => 3, 'CANC' => 4, 'ABD' => 4,];
|
|
|
foreach ($data as $item) {
|
|
|
- if (!Sport::where('data_id', $item['fixture']['id'])->exists()) {
|
|
|
- $tableData[] = [
|
|
|
- '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' => "{$item['goals']['home']}-{$item['goals']['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'],
|
|
|
- 'created_at' => now(),
|
|
|
- 'updated_at' => now(),
|
|
|
- ];
|
|
|
+ $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' => "{$item['score']['fulltime']['home']}-{$item['goals']['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'],
|
|
|
+ 'updated_at' => now(),
|
|
|
+ ];
|
|
|
+ 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);
|
|
|
}
|
|
|
}
|
|
|
- Sport::insert($tableData);
|
|
|
+ if ($tableData) {
|
|
|
+ SportModel::insert($tableData);
|
|
|
+ }
|
|
|
return $tableData;
|
|
|
}
|
|
|
|
|
|
+ // 核心响应数据:赛事列表(数组形式,每个元素对应一场赛事)
|
|
|
+// "response": [
|
|
|
+// {
|
|
|
+// // 赛事基础信息
|
|
|
+// "fixture": {
|
|
|
+// "id": 239625, // 赛事唯一ID
|
|
|
+// "referee": null, // 主裁判姓名(null表示暂无数据)
|
|
|
+// "timezone": "UTC", // 赛事时间所属时区
|
|
|
+// "date": "2020-02-06T14:00:00+00:00", // 赛事开始时间(ISO 8601格式)
|
|
|
+// "timestamp": 1580997600, // 赛事开始时间戳(秒级)
|
|
|
+// "periods": { // 赛事时段时间戳
|
|
|
+// "first": 1580997600, // 上半场开始时间戳
|
|
|
+// "second": null // 下半场开始时间戳(null表示尚未开始)
|
|
|
+// },
|
|
|
+// "venue": { // 赛事场馆信息
|
|
|
+// "id": 1887, // 场馆唯一ID
|
|
|
+// "name": "Stade Municipal", // 场馆名称
|
|
|
+// "city": "Oued Zem" // 场馆所在城市
|
|
|
+// },
|
|
|
+// "status": { // 赛事当前状态
|
|
|
+// "long": "Halftime", // 状态描述(长文本):半场休息
|
|
|
+// "short": "HT", // 状态缩写:HT=Halftime(半场)
|
|
|
+// "elapsed": 45, // 已进行时长(分钟):45分钟(半场结束)
|
|
|
+// "extra": null // 补时/加时时长(null表示无)
|
|
|
+// }
|
|
|
+// },
|
|
|
+// // 联赛信息
|
|
|
+// "league": {
|
|
|
+// "id": 200, // 联赛唯一ID
|
|
|
+// "name": "Botola Pro", // 联赛名称:摩洛哥职业足球甲级联赛
|
|
|
+// "country": "Morocco", // 联赛所属国家
|
|
|
+// "logo": "https://media.api-sports.io/football/leagues/115.png", // 联赛logo地址
|
|
|
+// "flag": "https://media.api-sports.io/flags/ma.svg", // 国家旗帜地址
|
|
|
+// "season": 2019, // 赛事赛季:2019/2020赛季(通常取首年)
|
|
|
+// "round": "Regular Season - 14" // 联赛轮次:常规赛第14轮
|
|
|
+// },
|
|
|
+// // 参赛球队信息
|
|
|
+// "teams": {
|
|
|
+// "home": { // 主队信息
|
|
|
+// "id": 967, // 主队ID
|
|
|
+// "name": "Rapide Oued ZEM", // 主队名称
|
|
|
+// "logo": "https://media.api-sports.io/football/teams/967.png", // 主队logo地址
|
|
|
+// "winner": false // 是否获胜:false(半场暂时落后)
|
|
|
+// },
|
|
|
+// "away": { // 客队信息
|
|
|
+// "id": 968, // 客队ID
|
|
|
+// "name": "Wydad AC", // 客队名称
|
|
|
+// "logo": "https://media.api-sports.io/football/teams/968.png", // 客队logo地址
|
|
|
+// "winner": true // 是否获胜:true(半场暂时领先)
|
|
|
+// }
|
|
|
+// },
|
|
|
+// // 进球数(当前已产生的总进球数)
|
|
|
+// "goals": {
|
|
|
+// "home": 0, // 主队进球数
|
|
|
+// "away": 1 // 客队进球数
|
|
|
+// },
|
|
|
+// // 比分详情(不同时段的比分)
|
|
|
+// "score": {
|
|
|
+// "halftime": { // 半场比分
|
|
|
+// "home": 0, // 主队半场进球
|
|
|
+// "away": 1 // 客队半场进球
|
|
|
+// },
|
|
|
+// "fulltime": { // 全场比分(null表示赛事未结束)
|
|
|
+// "home": null,
|
|
|
+// "away": null
|
|
|
+// },
|
|
|
+// "extratime": { // 加时赛比分(null表示无加时/未进行)
|
|
|
+// "home": null,
|
|
|
+// "away": null
|
|
|
+// },
|
|
|
+// "penalty": { // 点球大战比分(null表示无点球/未进行)
|
|
|
+// "home": null,
|
|
|
+// "away": null
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
}
|