diff --git a/app/Http/Controllers/Admin/DeviceController.php b/app/Http/Controllers/Admin/DeviceController.php index 640ffa4..7367328 100644 --- a/app/Http/Controllers/Admin/DeviceController.php +++ b/app/Http/Controllers/Admin/DeviceController.php @@ -68,10 +68,8 @@ class DeviceController extends Controller $portal = $this->portal(); $items = collect($paginator->items()); - $visitCountries = $this->visitCountriesFor($items); - $data = $items->map(function (Device $d) use ($portal, $visitCountries) { - $country = CfIpCountry::normalize($d->country) - ?? CfIpCountry::normalize($visitCountries[trim((string) $d->ip)] ?? null); + $data = $items->map(function (Device $d) use ($portal) { + $country = CfIpCountry::normalize($d->country); return [ 'id' => $d->id, @@ -1022,39 +1020,4 @@ class DeviceController extends Controller 'msg' => '队列顺序已更新', ]); } - - /** - * Latest visit country per IP for devices that have no country of their own. - * - * @param Collection $devices - * @return array - */ - private function visitCountriesFor(Collection $devices): array - { - $ips = $devices - ->filter(fn (Device $d) => CfIpCountry::normalize($d->country) === null) - ->map(fn (Device $d) => trim((string) $d->ip)) - ->filter() - ->unique() - ->values(); - if ($ips->isEmpty()) { - return []; - } - - $latestIds = PageVisit::query() - ->selectRaw('MAX(id) as id') - ->whereIn('ip', $ips) - ->whereNotNull('country') - ->where('country', '!=', '') - ->groupBy('ip') - ->pluck('id'); - if ($latestIds->isEmpty()) { - return []; - } - - return PageVisit::query() - ->whereIn('id', $latestIds) - ->pluck('country', 'ip') - ->all(); - } }