| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace App\Services;
- use App\Models\Sport;
- use App\Services\ApiFootball\Client;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\Cache;
- class FixtureService extends BaseService
- {
- // 赛前赔率
- static function odds($id)
- {
- $key = "odds_{$id}";
- $odds = Cache::get($key);
- if ($odds) return json_decode($odds, true);
- $res = Client::odds(['fixture' => $id]);
- if (count($res['response']) <= 0) return [];
- $res = $res['response'][0];
- Cache::put($key, $res, now()->addHours(3));
- return $res;
- }
- /**
- * 比赛中的赔率
- * 5秒更新一次
- */
- static function oddsLive($id)
- {
- $key = "odds_live_{$id}";
- $odds = Cache::get($key);
- if ($odds) return json_decode($odds, true);
- $res = Client::oddsLive(['fixture' => $id]);
- if (count($res['response']) <= 0) return [];
- $res = $res['response'][0];
- Cache::put($key, $res, 5);
- return $res;
- }
- /**
- * 将第二天的赛事插入到数据库
- * @return array
- */
- static function index()
- {
- $date = Carbon::tomorrow()->toDateString();
- $data = Client::fixtures(['date' => $date]);
- $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'],
- ];
- }
- }
- Sport::insert($tableData);
- return $tableData;
- }
- }
|