You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							90 lines
						
					
					
						
							2.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							90 lines
						
					
					
						
							2.9 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								namespace App\Http\Controllers\Api;
							 | 
						|
								
							 | 
						|
								use App\Models\AdminSetting;
							 | 
						|
								use EasyWeChat\Factory;
							 | 
						|
								use Illuminate\Support\Facades\Cache;
							 | 
						|
								use Illuminate\Support\Facades\DB;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 仅用于测试
							 | 
						|
								 * Class TController
							 | 
						|
								 * @package App\Http\Controllers\Api
							 | 
						|
								 */
							 | 
						|
								class TestController
							 | 
						|
								{
							 | 
						|
									public function index()
							 | 
						|
									{
							 | 
						|
										$appid = 'wx5bd5789ad8f89524';
							 | 
						|
										$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
							 | 
						|
										$config = [
							 | 
						|
											'app_id'   => $setting['service_appid'],
							 | 
						|
											'secret'   => $setting['service_appsecret'],
							 | 
						|
											'token'    => $setting['service_token'],
							 | 
						|
											'aes_key'  => $setting['service_aeskey'],
							 | 
						|
										];
							 | 
						|
								
							 | 
						|
										$app = Factory::openPlatform($config);
							 | 
						|
										$refreshToken = $app->getAuthorizer($appid)['authorization_info']['authorizer_refresh_token'] ?? null;
							 | 
						|
										if (!$refreshToken) {
							 | 
						|
											return $this->error('获取refresh_token失败');
							 | 
						|
										}
							 | 
						|
										$miniProgram = $app->miniProgram($appid, $refreshToken);
							 | 
						|
										$domain = $miniProgram['domain'];
							 | 
						|
										return $domain->setWebviewDomain([env('APP_URL')]);
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									/**
							 | 
						|
									 * 模拟登录
							 | 
						|
									 * @param $user_id
							 | 
						|
									 * @return string
							 | 
						|
									 */
							 | 
						|
									private function login($user_id)
							 | 
						|
									{
							 | 
						|
										$token_key = md5($user_id . env('APP_KEY'));
							 | 
						|
										Cache::put($token_key, $user_id);
							 | 
						|
										return $token_key;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									public function index2()
							 | 
						|
									{
							 | 
						|
										$handle = fopen(base_path('area.txt'), 'r');
							 | 
						|
										if ($handle) {
							 | 
						|
											DB::statement('TRUNCATE `areas`;');
							 | 
						|
											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::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $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 (count($arr) !== 2) continue;
							 | 
						|
												if ($last4 == '0000') {
							 | 
						|
													$insert_id = DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => 0, 'name' => $arr[1]]);
							 | 
						|
													$parent_arr[$front2] = $insert_id;
							 | 
						|
												} else if ($last2 == '00') {
							 | 
						|
													$insert_id = DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $parent_arr[$front2], 'name' => $arr[1]]);
							 | 
						|
													$parent_arr[$front4] = $insert_id;
							 | 
						|
												} else {
							 | 
						|
													//考虑到省直辖县级市情况,如:海南琼海市、湖北仙桃市等,但重庆市的省辖县除外(已在上面判断直辖市逻辑中做处理)
							 | 
						|
													$parent_id = $parent_arr[$front4] ?? $parent_arr[$front2];
							 | 
						|
													DB::table('areas')->insertGetId(['code' => $arr[0], 'pid' => $parent_id, 'name' => $arr[1]]);
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										} else {
							 | 
						|
											return 'open file fail!';
							 | 
						|
										}
							 | 
						|
										return 'success';
							 | 
						|
									}}
							 |