rabin 3 rokov pred
rodič
commit
3b23d9d5ca
3 zmenil súbory, kde vykonal 186 pridanie a 25 odobranie
  1. 1 1
      database/county.php
  2. 156 0
      src/Api.php
  3. 29 24
      src/Import.php

+ 1 - 1
database/county.php

@@ -45,7 +45,7 @@ return array
 	(
 		'id' 		=> array
 		(
-			'type' 		=> 'int-11',
+			'type' 		=> 'bigint-11',
 			'name' 		=> 'ID',
 			'default' 	=> '',
 			'desc' 		=> '',

+ 156 - 0
src/Api.php

@@ -195,11 +195,167 @@ class Api
 
         $state = false;
         if ($table) {
+            $update['clear'] = true;
             $state = Dever::db($table)->update($update);  
         }
         return $state;
     }
 
+    # 更新区域
+    public function up($province, $city, $county, $town, $code, $town_code)
+    {
+        $temp = explode(',', $code);
+        $new = array();
+        if (isset($temp[0]) && $temp[0] && $province) {
+            $data = array();
+            $data['id'] = $temp[0];
+            $data['clear'] = true;
+            $province_info = Dever::db('area/province')->one($data);
+            if (!$province_info) {
+                $data['name'] = $province;
+                Dever::load('area/import')->pinyin($data);
+                Dever::db('area/province')->insert($data);
+                $new[] = $data['name'];
+            }
+        }
+        if (isset($temp[1]) && $temp[1] && $city) {
+            $data = array();
+            $data['id'] = $temp[1];
+            $data['clear'] = true;
+            $city_info = Dever::db('area/city')->one($data);
+            if (!$city_info) {
+                if ($city == '市辖区') {
+                    $city = $province;
+                }
+                $data['name'] = $city;
+                $data['province_id'] = $temp[0];
+                Dever::load('area/import')->pinyin($data);
+                Dever::db('area/city')->insert($data);
+                $new[] = $data['name'];
+            }
+        } elseif ($city) {
+            $data = array();
+            $data['name'] = $city;
+            $data['clear'] = true;
+            $city_info = Dever::db('area/city')->one($data);
+            if ($city_info) {
+                $temp[1] = $city_info['id'];
+            } else {
+                return '';
+            }
+        }
+
+        if (isset($temp[2]) && $temp[2] && $county) {
+            $data = array();
+            $data['id'] = $temp[2];
+            $data['clear'] = true;
+            $county_info = Dever::db('area/county')->one($data);
+            if (!$county_info) {
+                $data['name'] = $county;
+                $data['city_id'] = $temp[1];
+                $data['province_id'] = $temp[0];
+                $data['area'] = $temp[0] . ',' . $temp[1];
+                Dever::load('area/import')->setLevelCounty($data);
+                Dever::load('area/import')->pinyin($data);
+                Dever::db('area/county')->insert($data);
+                $new[] = $data['name'];
+            }
+        } elseif ($county) {
+            $data = array();
+            $data['name'] = $county;
+            $data['clear'] = true;
+            $county_info = Dever::db('area/county')->one($data);
+            if ($county_info) {
+                $temp[2] = $county_info['id'];
+            } else {
+                return '';
+            }
+        }
+        
+        if ($town_code && $town) {
+            $data = array();
+            $data['id'] = $town_code;
+            $data['clear'] = true;
+            $town_info = Dever::db('area/town')->one($data);
+            if (!$town_info) {
+                $data['name'] = $town;
+                $data['county_id'] = $temp[2];
+                $data['city_id'] = $temp[1];
+                $data['province_id'] = $temp[0];
+                $data['area'] = $temp[0] . ',' . $temp[1] . ',' . $temp[2];
+                Dever::load('area/import')->pinyin($data);
+                $temp[3] = Dever::db('area/town')->insert($data);
+                $new[] = $data['name'];
+            } else {
+                $temp[3] = $data['id'];
+            }
+        }
+
+        return array(implode(',', $temp), implode(',', $new));
+    }
+
+    # 更新区域
+    public function upByName($province, $city, $county, $town, $town_code)
+    {
+        $result = array();
+        $new = array();
+        if ($province) {
+            $data = array();
+            $data['name'] = $province;
+            $data['clear'] = true;
+            $province_info = Dever::db('area/province')->one($data);
+            if ($province_info) {
+                $result[0] = $province_info['id'];
+            } else {
+                $result[0] = '-1';
+                $new[] = $data['name'];
+            }
+        }
+        if ($city) {
+            $data = array();
+            $data['name'] = $city;
+            $data['clear'] = true;
+            $city_info = Dever::db('area/city')->one($data);
+            if ($city_info) {
+                $result[1] = $city_info['id'];
+            } else {
+                $result[1] = '-1';
+                $new[] = $data['name'];
+            }
+        }
+        if ($county) {
+            $data = array();
+            $data['name'] = $county;
+            $data['clear'] = true;
+            $county_info = Dever::db('area/county')->one($data);
+            if ($county_info) {
+                $result[2] = $county_info['id'];
+            } else {
+                $result[2] = '-1';
+                $new[] = $data['name'];
+            }
+        }
+        if ($town_code && $town) {
+            $data = array();
+            $data['id'] = $town_code;
+            $data['clear'] = true;
+            $town_info = Dever::db('area/town')->one($data);
+            if (!$town_info) {
+                $data['name'] = $town;
+                $data['county_id'] = $result[2];
+                $data['city_id'] = $result[1];
+                $data['province_id'] = $result[0];
+                $data['area'] = $result[0] . ',' . $result[1] . ',' . $result[2];
+                Dever::load('area/import')->pinyin($data);
+                $result[3] = Dever::db('area/town')->insert($data);
+                $new[] = $data['name'];
+            } else {
+                $result[3] = $data['id'];
+            }
+        }
+        return array(implode(',', $result), implode(',', $new));
+    }
+
     public function getProvince()
     {
         return Dever::db('area/province')->getAll();

+ 29 - 24
src/Import.php

@@ -6,7 +6,7 @@ use Dever;
 
 class Import
 {
-    private $url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/';
+    private $url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/';
 	/**
      * 获取国家统计局最新的地区数据
      *
@@ -97,28 +97,7 @@ class Import
                 $update['city_id'] = $city;
                 $update['province_id'] = $province;
                 $update['area'] = $province . ',' . $city;
-                $num = substr($update['id'], 4);
-
-                # type = 1城区 2郊区 3县城 4经济技术开发 5县级市
-                if ($v == '门头沟区') {
-                    $update['type'] = 2;
-                    $update['level'] = 2;
-                } elseif ($num <= 10) {
-                    $update['type'] = 1;
-                    $update['level'] = 1;
-                } elseif ($num > 10 && $num <= 20) {
-                    $update['type'] = 2;
-                    $update['level'] = 2;
-                } elseif ($num > 20 && $num <= 70) {
-                    $update['type'] = 3;
-                    $update['level'] = 3;
-                } elseif ($num > 70 && $num <= 80) {
-                    $update['type'] = 4;
-                    $update['level'] = 2;
-                } elseif ($num >= 80) {
-                    $update['type'] = 5;
-                    $update['level'] = 2;
-                }
+                $this->setLevelCounty($update);
                 $this->pinyin($update);
                 $id = Dever::upinto('area/county', $update, $update);
 
@@ -213,9 +192,35 @@ class Import
 
     public function pinyin(&$update)
     {
-        if (Dever::import('pinyin') && $update['name']) {
+        if (Dever::project('pinyin') && $update['name']) {
             $update['pinyin'] = Dever::getPinyin($update['name']);
             $update['pinyin_first'] = Dever::getPinyinFirst($update['name']);
         }
     }
+
+    public function setLevelCounty(&$update)
+    {
+        $num = substr($update['id'], 4);
+
+        # type = 1城区 2郊区 3县城 4经济技术开发 5县级市
+        if ($update['name'] == '门头沟区') {
+            $update['type'] = 2;
+            $update['level'] = 2;
+        } elseif ($num <= 10) {
+            $update['type'] = 1;
+            $update['level'] = 1;
+        } elseif ($num > 10 && $num <= 20) {
+            $update['type'] = 2;
+            $update['level'] = 2;
+        } elseif ($num > 20 && $num <= 70) {
+            $update['type'] = 3;
+            $update['level'] = 3;
+        } elseif ($num > 70 && $num <= 80) {
+            $update['type'] = 4;
+            $update['level'] = 2;
+        } elseif ($num >= 80) {
+            $update['type'] = 5;
+            $update['level'] = 2;
+        }
+    }
 }