2025-03-14 14:27:33 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace app\controller;
|
|
|
|
|
|
|
|
|
|
use app\model\Area;
|
2025-03-19 13:27:22 +08:00
|
|
|
use app\model\Country;
|
2025-04-02 15:17:13 +08:00
|
|
|
use app\util\HttpClient;
|
|
|
|
|
use app\util\RedisHelper;
|
2025-03-14 14:27:33 +08:00
|
|
|
use app\util\Util;
|
2025-04-02 15:17:13 +08:00
|
|
|
use support\Log;
|
|
|
|
|
use support\Redis;
|
2025-03-14 14:27:33 +08:00
|
|
|
use support\Request;
|
|
|
|
|
|
|
|
|
|
class AreaController
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public function getAll (Request $request)
|
|
|
|
|
{
|
|
|
|
|
$parentId = Util::getParam($request,'parent_id');
|
|
|
|
|
$level = Util::getParam($request,'level')?:1;
|
|
|
|
|
$list = $this->getRegions($parentId, $level);
|
2025-03-17 18:01:53 +08:00
|
|
|
return Util::success($list);
|
2025-03-14 14:27:33 +08:00
|
|
|
}
|
|
|
|
|
|
2025-03-17 18:01:53 +08:00
|
|
|
//递归查询
|
|
|
|
|
function getRegions($parentId = null, $level = 1, $child = true) {
|
2025-03-14 14:27:33 +08:00
|
|
|
$regions = [];
|
|
|
|
|
|
|
|
|
|
$where= array();
|
|
|
|
|
if(!Util::isEmpty($parentId)){
|
|
|
|
|
$where['parent_id'] = $parentId;
|
|
|
|
|
}
|
|
|
|
|
$where['level'] = $level;
|
|
|
|
|
$results = Area::where($where)->get();
|
|
|
|
|
|
|
|
|
|
foreach ($results as $row) {
|
2025-03-17 18:01:53 +08:00
|
|
|
if($child){
|
|
|
|
|
$row['children'] = $this->getRegions($row['id'], $row['level'] + 1);
|
|
|
|
|
}
|
2025-03-14 14:27:33 +08:00
|
|
|
$regions[] = $row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $regions;
|
|
|
|
|
}
|
2025-03-17 18:01:53 +08:00
|
|
|
|
|
|
|
|
public function getCountry (Request $request)
|
|
|
|
|
{
|
2025-04-02 15:17:13 +08:00
|
|
|
$list = RedisHelper::get("rpc_country");
|
|
|
|
|
$list = null;
|
|
|
|
|
if(!$list){
|
|
|
|
|
$res = HttpClient::get(config('const.rpc_domain') . '/country/all');
|
|
|
|
|
if ($res['code'] != 200 && $res['data']['code'] != 0){
|
|
|
|
|
Log::info('register_rpc',$res);
|
|
|
|
|
return Util::fail($res, trans('register_fail'));
|
|
|
|
|
}
|
|
|
|
|
$list = $res['data']['data']['data'];
|
|
|
|
|
RedisHelper::set("rpc_country", $list, 600);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// $list = Country::get()->toArray();
|
2025-03-25 09:06:08 +08:00
|
|
|
$language = 'en_addr';
|
|
|
|
|
if($request->user['language'] == 'zh_CN'){
|
|
|
|
|
$language = 'cn_addr';
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-19 13:27:22 +08:00
|
|
|
foreach ($list as &$row) {
|
2025-03-25 09:06:08 +08:00
|
|
|
$row['name'] = $row[$language];
|
2025-03-19 13:27:22 +08:00
|
|
|
}
|
2025-03-17 18:01:53 +08:00
|
|
|
return Util::success($list);
|
|
|
|
|
}
|
2025-03-14 14:27:33 +08:00
|
|
|
|
|
|
|
|
}
|