|
|
|
@ -31,4 +31,41 @@ class TestController |
|
|
|
} |
|
|
|
return ''; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function area() |
|
|
|
{ |
|
|
|
$handle = fopen(Env::get('root_path').'2020-11行政区划(民政部).txt', 'r'); |
|
|
|
if ($handle) { |
|
|
|
Db::execute('TRUNCATE `aqs_area`;'); |
|
|
|
while (($line = fgets($handle, 4096)) !== false) { |
|
|
|
$line = trim($line); |
|
|
|
|
|
|
|
$last2 = substr($line, 4, 2); //区划码后2位
|
|
|
|
$front2 = substr($line, 0, 2); //区划码前2位
|
|
|
|
$front4 = substr($line, 0, 4); //区划码前4位
|
|
|
|
|
|
|
|
//判断是否是直辖市,是直辖市则再插入一次上条记录作为二级联动
|
|
|
|
if( isset($last4, $arr, $parent_arr[$front2]) && $last4=='0000' && $last2!='00' ) { |
|
|
|
$insert_id = Db::name('area')->insertGetId(['area_code'=>$arr[0], 'parent_id'=>$parent_arr[$front2], 'name'=>$arr[1]]); |
|
|
|
$parent_arr[$front4] = $insert_id; |
|
|
|
//对直辖市不做省直辖县处理,如:重庆市
|
|
|
|
$parent_arr[$front2] = $insert_id; |
|
|
|
} |
|
|
|
|
|
|
|
$last4 = substr($line, 2, 4); //区划码后4位
|
|
|
|
|
|
|
|
$arr = preg_split('/\s+/', $line); |
|
|
|
if( $last4 == '0000' ) { |
|
|
|
$insert_id = Db::name('area')->insertGetId(['area_code'=>$arr[0], 'parent_id'=>0, 'name'=>$arr[1]]); |
|
|
|
$parent_arr[$front2] = $insert_id; |
|
|
|
} else if( $last2 == '00' ) { |
|
|
|
$insert_id = Db::name('area')->insertGetId(['area_code'=>$arr[0], 'parent_id'=>$parent_arr[$front2], 'name'=>$arr[1]]); |
|
|
|
$parent_arr[$front4] = $insert_id; |
|
|
|
} else { |
|
|
|
//考虑到省直辖县级市情况,如:海南琼海市、湖北仙桃市等,但重庆市的省辖县除外(已在上面判断直辖市逻辑中做处理)
|
|
|
|
$parent_id = $parent_arr[$front4] ?? $parent_arr[$front2]; |
|
|
|
Db::name('area')->insertGetId(['area_code'=>$arr[0], 'parent_id'=>$parent_id, 'name'=>$arr[1]]); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}} |