| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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]]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						}} |