dever %!s(int64=3) %!d(string=hai) anos
pai
achega
9b5d8b71b6
Modificáronse 6 ficheiros con 222 adicións e 10 borrados
  1. 18 3
      database/city.php
  2. 15 0
      database/county.php
  3. 12 0
      database/province.php
  4. 28 0
      database/town.php
  5. 122 0
      lib/Manage.php
  6. 27 7
      src/Import.php

+ 18 - 3
database/city.php

@@ -15,9 +15,9 @@ $level = function()
 {
 	$array = array
 	(
-		-1 => array
+		1000 => array
 		(
-			'id' => -1,
+			'id' => 1000,
 			'name' => '普通城市',
 		),
 	);
@@ -103,7 +103,7 @@ return array
 		(
 			'type' 		=> 'int-11',
 			'name' 		=> '城市等级',
-			'default' 	=> '-1',
+			'default' 	=> '1000',
 			'desc' 		=> '城市等级',
 			'match' 	=> 'is_numeric',
 			'search'	=> 'select',
@@ -163,6 +163,7 @@ return array
 			'option' => array
 			(
 				'province_id' => 'yes',
+				'level_id' => array('yes', '<'),
 				'state' => 1,
 			),
 			'type' => 'all',
@@ -176,6 +177,7 @@ return array
 			'option' => array
 			(
 				'province_id' => 'yes',
+				'level_id' => array('yes', '<'),
 				'state' => 1,
 			),
 			'type' => 'all',
@@ -208,5 +210,18 @@ return array
 			),
 			'type' => 'update',
 		),
+
+		'getLike' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'province_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'state' => 1,
+			),
+			'type' => 'one',
+			'col' => '*',
+		),
 	)
 );

+ 15 - 0
database/county.php

@@ -201,6 +201,7 @@ return array
 			'option' => array
 			(
 				'city_id' => 'yes',
+				'level' => array('yes', '<'),
 				'state' => 1,
 			),
 			'type' => 'all',
@@ -214,11 +215,25 @@ return array
 			'option' => array
 			(
 				'city_id' => 'yes',
+				'level' => array('yes', '<'),
 				'state' => 1,
 			),
 			'type' => 'all',
 			'order' => array('pinyin_first' => 'asc', 'reorder' => 'desc', 'id' => 'asc'),
 			'col' => 'id, name, pinyin, pinyin_first|id',
 		),
+
+		'getLike' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'city_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'state' => 1,
+			),
+			'type' => 'one',
+			'col' => '*',
+		),
 	)
 );

+ 12 - 0
database/province.php

@@ -130,5 +130,17 @@ return array
 			'order' => array('pinyin_first' => 'asc', 'reorder' => 'desc', 'id' => 'asc'),
 			'col' => 'id, name, pinyin, pinyin_first',
 		),
+
+		'getLike' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'name' => array('yes', 'like'),
+				'state' => 1,
+			),
+			'type' => 'one',
+			'col' => '*',
+		),
 	)
 );

+ 28 - 0
database/town.php

@@ -184,12 +184,26 @@ return array
 
 	'request' => array
 	(
+		'getTotal' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'county_id' => 'yes',
+				'type' => array('yes', '>'),
+				'state' => 1,
+			),
+			'type' => 'count',
+			'col' => '*',
+		),
+
 		'getAll' => array
 		(
 			# 匹配的正则或函数 选填项
 			'option' => array
 			(
 				'county_id' => 'yes',
+				'type' => array('yes', '>'),
 				'state' => 1,
 			),
 			'type' => 'all',
@@ -203,11 +217,25 @@ return array
 			'option' => array
 			(
 				'county_id' => 'yes',
+				'type' => array('yes', '>'),
 				'state' => 1,
 			),
 			'type' => 'all',
 			'order' => array('pinyin_first' => 'asc', 'reorder' => 'desc', 'id' => 'asc'),
 			'col' => 'id, name, pinyin, pinyin_first|id',
 		),
+
+		'getLike' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'county_id' => 'yes',
+				'name' => array('yes', 'like'),
+				'state' => 1,
+			),
+			'type' => 'one',
+			'col' => '*',
+		),
 	)
 );

+ 122 - 0
lib/Manage.php

@@ -53,6 +53,128 @@ class Manage
                     Dever::db('area/city')->update($update);
                 }
             }
+            $this->setTown_api();
         }
     }
+
+    # 设置国家镇级市、超级街道
+    public function setTown_api()
+    {
+        $data = array
+        (
+            # 镇级市
+            '河南省,安阳市,安阳县,水冶镇',
+            '河南省,信阳市,平桥区,明港镇',
+            '河南省,巩义市,安阳县,回郭镇',
+
+            '甘肃省,武威市,凉州区,黄羊镇',
+            '甘肃省,定西市,陇西县,首阳镇',
+            '甘肃省,天水市,甘谷县,磐安镇',
+
+            '广西,南宁市,宾阳县,黎塘镇',
+            '广西,梧州市,藤县,太平镇',
+            '广西,北海市,合浦县,公馆镇',
+            '广西,贵港市,平南县,大安镇',
+
+            '吉林省,四平市,公主岭市,范家屯镇',
+            '吉林省,四平市,梨树县,郭家店镇',
+            '吉林省,吉林市,永吉县,岔路河镇',
+            '吉林省,吉林市,抚松县,松江河镇',
+
+            '辽宁省,锦州市,北镇市,沟帮子镇',
+            '辽宁省,辽阳市,辽阳县,刘二堡新市镇',
+            '辽宁省,铁岭市,昌图县,八面城镇',
+
+            '黑龙江省,哈尔滨市,巴彦县,兴隆镇',
+            '黑龙江省,牡丹江市,海林市,柴河镇',
+            '黑龙江省,牡丹江市,宁安市,东京城镇',
+            '黑龙江省,伊春市,铁力市,朗乡镇',
+            '黑龙江省,黑龙江农垦总局,建三江农垦分局,三江镇',
+            '黑龙江省,红兴隆市,红兴隆农垦分局,兴隆镇',
+            '黑龙江省,宝泉岭市,宝泉岭农垦分局,宝泉岭镇',
+            '黑龙江省,牡丹江市,牡丹江农垦分局,裴德镇',
+            '黑龙江省,九三垦区分局,九三垦区分局,双山镇',
+
+            '江苏省,苏州市,吴江区,盛泽镇',
+            '江苏省,无锡市,宜兴市,丁蜀镇',
+            '江苏省,南通市,启东市,启东吕四镇',
+
+            '河北省,廊坊市,三河市,燕郊镇',
+            '河北省,廊坊市,霸州市,胜芳镇',
+
+            '江西省,南昌市,南昌县,向塘镇',
+
+            '安徽省,宿州市,萧县,黄口镇',
+            '安徽省,亳州市,谯城区,古城镇',
+
+            '湖南省,郴州市,永兴县,马田镇',
+            '湖南省,怀化市,洪江市,安江镇',
+            '湖南省,益阳市,桃江县,灰山港镇',
+
+            '湖北省,襄阳市,襄阳区,太平店镇',
+            '湖北省,荆门市,钟祥市,胡集镇',
+            '湖北省,孝感市,汉川市,马口镇',
+            '湖北省,宜昌市,夷陵区,龙泉镇',
+
+            '湖北省,襄阳市,襄阳区,太平店镇',
+            '湖北省,荆门市,钟祥市,胡集镇',
+            '湖北省,孝感市,汉川市,马口镇',
+            '湖北省,宜昌市,夷陵区,龙泉镇',
+
+            '福建省,漳州市,龙海市,角美镇',
+            '福建省,泉州市,南安市,水头镇',
+            '福建省,泉州市,晋江市,东石镇',
+            '福建省,莆田市,秀屿区,忠门镇',
+
+            '浙江省,温州,苍南县,龙港镇',
+            '浙江省,绍兴市,诸暨市,店口镇',
+
+            '重庆市,重庆市,江津区,白沙镇',
+            '重庆市,重庆市,大足区,龙水镇',
+            '重庆市,重庆市,九龙坡区,西彭镇',
+
+            '四川省,南充市,仪陇县,金城镇',
+            '四川省,内江市,资中县,重龙镇',
+            '四川省,广元市,利州区,宝轮镇',
+            '四川省,达州市,宣汉县,南坝镇',
+
+            '广东省,佛山市,南海区,狮山镇',
+            '广东省,东莞市,东莞市,长安镇',
+            '广东省,东莞市,东莞市,虎门镇',
+            '广东省,东莞市,东莞市,塘厦镇',
+
+            # 超级街道
+            '深圳市,深圳市,南山区,粤海街道',
+            '深圳市,深圳市,龙岗区,坂田街道',
+            '深圳市,深圳市,龙岗区,布吉街道',
+            '深圳市,深圳市,龙岗区,龙城街道',
+            '深圳市,深圳市,龙岗区,平湖街道',
+            '深圳市,深圳市,龙岗区,龙岗街道',
+        );
+
+        foreach ($data as $k => $v) {
+            $temp = explode(',', $v);
+            if (isset($temp[3])) {
+                $province = Dever::db('area/province')->getLike(array('name' => $temp[0]));
+                if ($province) {
+                    $city = Dever::db('area/city')->getLike(array('name' => $temp[1], 'province_id' => $province['id']));
+                    if ($city) {
+                        $county = Dever::db('area/county')->getLike(array('name' => $temp[2], 'city_id' => $city['id']));
+                        if ($county) {
+                            $town = Dever::db('area/town')->getLike(array('name' => $temp[3], 'county_id' => $county['id']));
+                            if ($town) {
+                                if (strstr($temp[3], '街道')) {
+                                    $type = 3;
+                                } else {
+                                    $type = 2;
+                                }
+                                Dever::db('area/town')->update(array('where_id' => $town['id'], 'type' => $type));
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return 'ok';
+    }
 }

+ 27 - 7
src/Import.php

@@ -125,19 +125,39 @@ class Import
                 # 获取街道
                 $this->getTown($province, $city, $id, $link . '/' . $result[3][$k]);
             }
+        } else {
+            $city_info = Dever::db('area/city')->find(array('id' => $city, 'clear' => true));
+            $update['id'] = $city_info['id'];
+            $update['name'] = $city_info['name'];
+            $update['city_id'] = $city;
+            $update['province_id'] = $province;
+            $update['area'] = $province . ',' . $city;
+            $update['type'] = 1;
+            $update['level'] = 1;
+            $update['pinyin'] = $city_info['pinyin'];
+            $update['pinyin_first'] = $city_info['pinyin_first'];
+            $id = Dever::upinto('area/county', $update, $update);
+
+            # 获取街道
+            $this->getTown($province, $city, $id, false, $html);
         }
     }
 
-    public function getTown($province, $city, $county, $link)
+    public function getTown($province, $city, $county, $link = false, $html = false)
     {
-        $url = $this->url . $link;
+        if ($link) {
+            $url = $this->url . $link;
 
-        $temp = explode('/', $link);
-        $link = $temp[0] . '/' . $temp[1];
-        
-        $html = Dever::curl($url);
+            $temp = explode('/', $link);
+            $link = $temp[0] . '/' . $temp[1];
+            
+            $html = Dever::curl($url);
 
-        $html = mb_convert_encoding($html, "UTF-8", "GB2312");
+            $html = mb_convert_encoding($html, "UTF-8", "GB2312");
+        }
+        if (!$link && !$html) {
+            return;
+        }
 
         preg_match_all('/<tr class=\'towntr\'><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><\/tr>/i', $html, $result);