<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use DB;
use Illuminate\Support\Facades\Redis as Redis;
use App\Model\RegionModel;

class RegionController extends Controller 
{
    public function getAll()
    {
        $provinces = array(); $citys = array(); $towns = array();
        $list = RegionModel::orderBy('region_id', 'asc')->get();

        foreach (@$list as $val) {
            if (!$val->parent_id) continue;
            switch ($val->region_type) {
                case 1:
                    $provinces[$val->parent_id]['parent_id'] = $val->parent_id;
                    $provinces[$val->parent_id]['children'][] = $val;
                    break;
                case 2:
                    $citys[$val->parent_id]['parent_id'] = $val->parent_id;
                    $citys[$val->parent_id]['children'][] = $val;
                    break;
                case 3:
                    $towns[$val->parent_id]['parent_id'] = $val->parent_id;
                    $towns[$val->parent_id]['children'][] = $val;
                    break;
            }
        }

        return array(
            'errcode'=>0,
            'errmsg'=>'success',
            'provinces'=> $provinces,
            'citys'=> $citys,
            'towns'=> $towns
        );
    }
    //获取省市县名称
    public function getRegionName($region_id)
    {
        if (empty($region_id)){
            return "";
        }
        $list = RegionModel::select("region_name")->where("region_id",$region_id)->get();
        return !$list ? "" :  current(objectToArray($list))['region_name'];
    }

    // 初始化地址缓存
    public function cache()
    {
        $RegionModel = new RegionModel();
        
        $province = $RegionModel->getRegion(1); // 获取省

        S_str('oms:province', json_encode($province)); 

        $city = $RegionModel->getRegion(2); // 获取城市

        foreach($city as $c) {
            S_hash('oms:city:'.$c['parent_id'], $c['region_id'], json_encode($c));
        } 

        $district = $RegionModel->getRegion(3); // 获取区

        foreach($district as $d) {
            S_hash('oms:district:'.$d['parent_id'], $d['region_id'], json_encode($d));
        }

        echo '设置地址缓存成功';
    }

    // 清除缓存
    public function clear()
    {
        Redis::del('oms:province');
        Redis::del(Redis::keys('oms:city:*'));
        Redis::del(Redis::keys('oms:district:*'));

        echo '清除地址缓存成功';
    }

}