setName('import:area')
->setDescription('导入港澳台行政区域数据到 fa_area 表');
}
protected function execute(Input $input, Output $output)
{
// 区域数据(来自你提供的 JSON)
$areaData = json_decode(file_get_contents(__DIR__ . '/area.json'), true);
Db::startTrans();
$out = [];
try {
foreach ($areaData as $parentCode => $children) {
foreach ($children as $code => $name) {
if (strlen(rtrim($parentCode, '0')) == 2) {
// 省 -> 市(Level 2)
$provinceCode = $parentCode;
$level = 2;
$shortMergeName = $name;
$data = [
'code' => rtrim($code, "0"),
'name' => $name,
'short_name' => $name,
'merge_name' => $name,
'short_merge_name' => $shortMergeName,
'level' => $level,
'province_code' => rtrim($provinceCode, "0"),
'city_code' => rtrim($code, "0"),
'area_code' => rtrim($code, "0"),
'pinyin' => '',
'abbr' => ''
];
$out[] = $data;
// dd($data);
} else {
// 市 -> 区(Level 3)
$data = [
'code' => rtrim($code, '0'),
'name' => $name,
'short_name' => $name,
'merge_name' => $areaData[substr($parentCode, 0,2) . '0000'][$parentCode] . '/' . $name,
'short_merge_name' => $name,
'level' => 3,
'province_code' => rtrim($parentCode, '0'),
'city_code' => rtrim($code, '0'),
'area_code' => rtrim($code, '0'),
'pinyin' => '',
'abbr' => ''
];
$out[] = $data;
// dd($data);
}
}
}
Db::table('fa_area')->insertAll($out);
Db::commit();
$output->writeln("港澳台区域数据导入成功!");
} catch (\Throwable $e) {
Db::rollback();
throw $e;
$output->writeln("导入失败:" . $e->getMessage() . "");
}
}
}