store-manage/database/seeders/RegionSeeder.php

47 lines
1.4 KiB
PHP

<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Storage;
class RegionSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// Amis 省市区转换
// https://github.com/baidu/amis/blob/master/packages/amis-ui/src/components/CityDB.ts
// 省份
$province = [];
// 城市
$city = [];
// 地区
$district = [];
// 省市区数据
$region = file_get_contents(database_path('data/region.json'));
foreach (json_decode($region, true) as $code => $name) {
if ($code % 10000 === 0) {
$province[] = ['code' => $code, 'name' => $name];
} elseif ($code % 100 === 0) {
$provinceCode = $code - ($code % 10000);
$city[$provinceCode][] = ['code' => $code, 'name' => $name];
} else {
$provinceCode = $code - ($code % 10000);
$cityCode = $code - ($code % 100);
$district[$provinceCode][$cityCode][] = ['code' => $code, 'name' => $name];
}
}
$data = json_encode(compact('province', 'city', 'district'), JSON_UNESCAPED_UNICODE);
Storage::disk('local')->put('region.json', $data);
}
}