Feat: 切换 IP 归属地解析引擎至本地离线库 MaxMind GeoLite2 并开启原生中文支持

This commit is contained in:
2026-02-27 12:00:20 +08:00
parent 63f7cfbb25
commit 006da4f5d6
4 changed files with 148 additions and 56 deletions
+3 -55
View File
@@ -74,12 +74,9 @@ class UserController extends Controller
try {
$position = Location::get($ipToLookup);
if ($position) {
$region = $this->translateLocation($position->regionName ?? '');
$city = $this->translateLocation($position->cityName ?? '');
$data['location'] = ($position->countryName === 'China' || $position->countryName === 'Local') ?
trim($region . ' ' . ($region === $city ? '' : $city)) :
$this->translateLocation($position->countryName ?? '');
$data['location'] = ($position->countryName === '中国' || $position->countryName === 'Local') ?
trim(($position->regionName ?? '') . ' ' . ($position->cityName ?? '')) :
($position->countryName ?? '未知区域');
if (empty($data['location'])) {
$data['location'] = '未知区域';
@@ -327,53 +324,4 @@ class UserController extends Controller
return response()->json(['status' => 'success', 'message' => "用户 {$username} 已被封号并封IP{$ipInfo}"]);
}
/**
* 将英文省市名称简单翻译为中文
*/
private function translateLocation(string $name): string
{
if (empty($name)) return '';
$map = [
'China' => '中国',
'Beijing' => '北京',
'Shanghai' => '上海',
'Tianjin' => '天津',
'Chongqing' => '重庆',
'Hebei' => '河北',
'Shanxi' => '山西',
'Liaoning' => '辽宁',
'Jilin' => '吉林',
'Heilongjiang' => '黑龙江',
'Jiangsu' => '江苏',
'Zhejiang' => '浙江',
'Anhui' => '安徽',
'Fujian' => '福建',
'Jiangxi' => '江西',
'Shandong' => '山东',
'Henan' => '河南',
'Hubei' => '湖北',
'Hunan' => '湖南',
'Guangdong' => '广东',
'Hainan' => '海南',
'Sichuan' => '四川',
'Guizhou' => '贵州',
'Yunnan' => '云南',
'Shaanxi' => '陕西',
'Gansu' => '甘肃',
'Qinghai' => '青海',
'Taiwan' => '台湾',
'Inner Mongolia' => '内蒙古',
'Guangxi' => '广西',
'Tibet' => '西藏',
'Ningxia' => '宁夏',
'Xinjiang' => '新疆',
'Hong Kong' => '香港',
'Macau' => '澳门',
'Local' => '本地局域网',
];
return $map[$name] ?? $name;
}
}