| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace App\Services;
- use App\Services\BaseService;
- use App\Models\Timezone;
- use App\Models\Country;
- class SyncFootballDataService extends BaseService
- {
- // 同步时区数据
- public static function syncTimezone()
- {
- $result = app('api-football')->timezone();
- $response = $result['response'] ?? [];
-
- if (empty($response)) {
- return $result;
- }
- // 先将所有时区设为无效
- Timezone::query()->update(['status' => Timezone::STATUS_NO]);
-
- foreach ($response as $code) {
- // 使用 firstOrCreate 简化代码
- $timezone = Timezone::firstOrCreate(
- ['code' => $code],
- [
- 'code' => $code,
- 'status' => Timezone::STATUS_YES
- ]
- );
-
- // 如果已存在,更新状态
- if (!$timezone->wasRecentlyCreated) {
- $timezone->update(['status' => Timezone::STATUS_YES]);
- }
- }
- return $result;
- }
- // 同步国家/地区数据
- public static function syncCountry()
- {
- $result = app('api-football')->countries();
- $response = $result['response'] ?? [];
-
- if (empty($response)) {
- return $result;
- }
- // 先将所有国家/地区设为无效
- Country::query()->update(['status' => Country::STATUS_NO]);
-
- foreach ($response as $item) {
- // 使用 firstOrCreate 简化代码
- $country = Country::firstOrCreate(
- ['code' => $item['code']],
- [
- 'name' => $item['name'],
- 'code' => $item['code'],
- 'flag' => $item['flag'],
- 'status' => Country::STATUS_YES
- ]
- );
-
- // 如果已存在,更新状态和其他字段
- if (!$country->wasRecentlyCreated) {
- $country->update([
- 'name' => $item['name'],
- 'flag' => $item['flag'],
- 'status' => Country::STATUS_YES
- ]);
- }
- }
- return $result;
- }
- }
|