stanley-king 8 éve
szülő
commit
14e738b0f4

+ 13 - 5
helper/area/area_check.php

@@ -10,8 +10,6 @@
 namespace area;
 require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
 
-use Db;
-
 class area_check
 {
     protected $mItems;
@@ -28,10 +26,20 @@ class area_check
 
         $this->init();
     }
+    protected function sub_areas($parent_id)
+    {
+        $items = $this->mod_area
+            ->where(array('area_parent_id' => $parent_id,'enable' => 1))
+            ->field('area_id,area_parent_id,area_deep,area_name')
+            ->order('area_parent_id ASC,area_id ASC,area_name ASC')
+            ->limit(false)
+            ->select();
+        return $items;
+    }
 
     protected function init()
     {
-        $items = $this->mod_area->where(array('area_parent_id' => 0,'enable' => 1))->field('area_id,area_parent_id,area_deep,area_name')->order('area_parent_id ASC,area_id ASC,area_name ASC')->limit(false)->select();
+        $items = $this->sub_areas(0);
         foreach ($items as $item)
         {
             $area_id = intval($item['area_id']);
@@ -48,7 +56,7 @@ class area_check
 
     protected function load($parent_id)
     {
-        $items = $this->mod_area->where(array('area_parent_id' => $parent_id,'enable' => 1))->field('area_id,area_parent_id,area_deep,area_name')->order('area_parent_id ASC,area_id ASC,area_name ASC')->limit(false)->select();
+        $items = $this->sub_areas($parent_id);
         foreach ($items as $item)
         {
             $area_id = intval($item['area_id']);
@@ -72,7 +80,7 @@ class area_check
 
     public function export()
     {
-        $items = $this->mod_area->where(array('area_parent_id' => 0,'enable' => 1))->field('area_id')->order('area_parent_id ASC,area_id ASC,area_name ASC')->limit(false)->select();
+        $items = $this->sub_areas(0);
         $provins = [];
         foreach ($items as $item) {
             $area_id = intval($item['area_id']);

+ 3 - 3
helper/area/area_upgrade.php

@@ -107,12 +107,12 @@ class upgrade
 
     private function update($area,$region)
     {
-        //$this->mod_area->where(array('area_id' => $area['area_id']))->update(array('tm_name' => $region['county_name'],'tm_region_id' => $region['region_id'],'tm_parent_id' => $region['parent_id']));
+        $this->mod_area->where(array('area_id' => $area['area_id']))->update(array('tm_name' => $region['county_name'],'tm_region_id' => $region['region_id'],'tm_parent_id' => $region['parent_id']));
     }
     private function insert($parent_id,$area_deep,$region)
     {
-//        $ret = $this->mod_area->insert(array('area_name' => "",'area_parent_id' => $parent_id,'area_deep' => $area_deep,
-//            'tm_name' => $region['county_name'],'tm_region_id' => $region['region_id'],'tm_parent_id' => $region['parent_id']));
+        $ret = $this->mod_area->insert(array('area_name' => "",'area_parent_id' => $parent_id,'area_deep' => $area_deep,
+            'tm_name' => $region['county_name'],'tm_region_id' => $region['region_id'],'tm_parent_id' => $region['parent_id']));
     }
     private static function short_name($area_name)
     {

+ 12 - 1
helper/area/area_validator.php

@@ -140,7 +140,7 @@ class area_validator extends area_check
 
     private function fill()
     {
-        $items = $this->mod_area->where(array('area_parent_id' => 0,'enable' => 1))->field('area_id')->order('area_parent_id ASC,area_id ASC,area_name ASC')->limit(false)->select();
+        $items = $this->sub_areas(0);
         $provins = [];
         foreach ($items as $item) {
             $area_id = intval($item['area_id']);
@@ -164,4 +164,15 @@ class area_validator extends area_check
         }
         sort($this->mCountries);
     }
+    public function nosub_city()
+    {
+        $result = [];
+        foreach ($this->mCities as $city_id) {
+            $subs = $this->mAreaIds[$city_id];
+            if(empty($subs)) {
+                $result[] = $this->mItems[$city_id];
+            }
+        }
+        return $result;
+    }
 }

+ 4 - 3
mobile/control/app_update.php

@@ -10,7 +10,6 @@ require_once(BASE_ROOT_PATH . '/helper/area/area_check.php');
 
 class app_updateControl extends mobileHomeControl
 {
-    const area_version = 3;
     public function __construct()
     {
         parent::__construct();
@@ -56,8 +55,10 @@ class app_updateControl extends mobileHomeControl
 
     public function areaOp()
     {
+        global $config;
+
         $ver_code = intval($_GET['version']);
-        if($ver_code < self::area_version)
+        if($ver_code < $config['area_version'])
         {
             static $data = null;
             if($data == null)
@@ -72,7 +73,7 @@ class app_updateControl extends mobileHomeControl
                 }
             }
 
-            return self::outsuccess(array('version' => self::area_version,'areas' => $data));
+            return self::outsuccess(array('version' => $config['area_version'],'areas' => $data));
         }
         else {
             return self::outsuccess(null);

+ 38 - 2
test/areaTest.php

@@ -35,12 +35,11 @@ class areaTest extends PHPUnit_Framework_TestCase
         $area = new area\upgrade();
         $area->country();
     }
+
     public function testExport()
     {
         $area = new area\area_check();
         $result = $area->export();
-        //$data = json_encode($result,JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
-
         wcache('area_2.0', array('data' => serialize($result)), 'mb_area');
     }
     public function testUpdate()
@@ -55,6 +54,43 @@ class areaTest extends PHPUnit_Framework_TestCase
         $result_name = $validator->from_name('上海','上海市','松江区');
     }
 
+    public function testNosub()
+    {
+        $validator = new area\area_validator('area');
+        $cities = $validator->nosub_city();
+
+        $output = [];
+        $input = [];
+        foreach ($cities as $city)
+        {
+            $area_id = $city['area_id'];
+            $items = $validator->city($city['area_id']);
+            $prov = $items['province'];
+            $input[$area_id] = ['其它区'];
+            $str_out = "area_id={$area_id} prov_name = {$prov['area_name']} , city_name ={$city['area_name']}";
+            $output[] = $str_out;
+        }
+
+        $in_json = json_encode($input,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+        $out_json = json_encode($output,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+    }
+
+    public function testAddCountry()
+    {
+        $path = BASE_DATA_PATH . '/area/input';
+        $content = file_get_contents($path);
+        $items = json_decode($content);
+
+        $mod_area = Model('area');
+        foreach ($items as $parent_id => $names)
+        {
+            foreach ($names as $name) {
+                $ret = $mod_area->insert(array('area_name' => $name,'area_deep' => 3,'area_parent_id' => $parent_id));
+                Log::record("insert aread_id = {$ret},area_name={$name}");
+            }
+        }
+    }
+
     public function testFixAreadid()
     {
         area_helper::fix_areaid();