<?php

namespace Area\Src;

use Dever;

class Import
{
    private $url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/';
	/**
     * 获取国家统计局最新的地区数据
     *
     * @return mixed
     */
    public function load()
    {
        $url = $this->url . 'index.html';
        
        $html = Dever::curl($url);

        $html = mb_convert_encoding($html, "UTF-8", "GB2312");

        preg_match_all('/<td><a href=\'(.*?)\'>(.*?)<br\/><\/a><\/td>/i', $html, $result);

        # 获取省份
        $this->getProvince($result);

        return 1;
    }

    public function getProvince($result)
    {
        $update = array();
        if (isset($result[1]) && isset($result[2])) {
            foreach ($result[2] as $k => $v) {
                $update['id'] = $this->id(trim($result[1][$k], '.html'));
                $update['name'] = $v;
                $id = Dever::upinto('area/province', $update, $update);

                # 获取城市
                $this->getCity($id, $update['name'], $result[1][$k]);
            }
        }
    }

    public function getCity($province, $province_name, $link)
    {
        $url = $this->url . $link;
        
        $html = Dever::curl($url);

        $html = mb_convert_encoding($html, "UTF-8", "GB2312");

        preg_match_all('/<tr class=\'citytr\'><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><\/tr>/i', $html, $result);

        $update = array();
        if (isset($result[3]) && isset($result[4])) {
            foreach ($result[4] as $k => $v) {
                if ($v == '市辖区') {
                    $v = $province_name;
                }
                $update['id'] = $this->id($result[2][$k]);
                $update['name'] = $v;
                $update['province_id'] = $province;
                $id = Dever::upinto('area/city', $update, $update);

                # 获取县区
                $this->getCounty($id, $result[3][$k]);
            }
        }
    }

    public function getCounty($city, $link)
    {
        $url = $this->url . $link;
        
        $html = Dever::curl($url);

        $html = mb_convert_encoding($html, "UTF-8", "GB2312");

        preg_match_all('/<tr class=\'countytr\'><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><td><a href=\'(.*?)\'>(.*?)<\/a><\/td><\/tr>/i', $html, $result);

        $update = array();
        if (isset($result[3]) && isset($result[4])) {
            foreach ($result[4] as $k => $v) {
                $update['id'] = $this->id($result[2][$k]);
                $update['name'] = $v;
                $update['city_id'] = $city;
                Dever::upinto('area/county', $update, $update);
            }
        }
    }

    public function id($id)
    {
        return Dever::load('area/api')->code($id);
    }
}
