From 66c9dcdc7debb9a08a065ce85e2c25ad71d85bd5 Mon Sep 17 00:00:00 2001 From: hant Date: Tue, 10 Jun 2025 23:38:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/address/controller/Index.php | 4 +- application/admin/addresmart/Address.php | 5 +- application/admin/command/Test.php | 13 ++- application/admin/controller/AmapTrait.php | 48 +++++++++++ application/admin/controller/Order.php | 26 +++++- application/admin/view/order/add.html | 10 +-- public/assets/js/backend/order.js | 93 +++++++++++----------- 7 files changed, 132 insertions(+), 67 deletions(-) create mode 100644 application/admin/controller/AmapTrait.php diff --git a/addons/address/controller/Index.php b/addons/address/controller/Index.php index 9917665..aa11953 100644 --- a/addons/address/controller/Index.php +++ b/addons/address/controller/Index.php @@ -44,8 +44,8 @@ class Index extends Controller { $config = get_addon_config('address'); $zoom = (int)$this->request->get('zoom', $config['zoom']); - $lng = (float)$this->request->get('lng'); - $lat = (float)$this->request->get('lat'); + $lng = $this->request->get('lng'); + $lat = $this->request->get('lat'); $address = $this->request->get('address'); $city_code = $this->request->get('city_code'); $lng = $lng ?: $config['lng']; diff --git a/application/admin/addresmart/Address.php b/application/admin/addresmart/Address.php index 385d78b..2e15427 100644 --- a/application/admin/addresmart/Address.php +++ b/application/admin/addresmart/Address.php @@ -23,10 +23,7 @@ class Address $type = self::extractServiceTypes($string,$titles)[0] ?? ''; - $type_arr = explode('__',$type); - $type = $type_arr[0] ?? ''; - $str = $type_arr[1] ?? ''; - $string = str_replace($str,'',$string); + $string = str_replace($type,'',$string); if ($user) { $decompose = self::decompose($string); $re = $decompose; diff --git a/application/admin/command/Test.php b/application/admin/command/Test.php index f97508a..df65a22 100644 --- a/application/admin/command/Test.php +++ b/application/admin/command/Test.php @@ -11,6 +11,7 @@ use app\admin\model\OrderDispatch; use app\admin\model\OrderReview; use app\admin\model\Worker; use app\admin\model\WorkerItem; +use app\admin\controller\AmapTrait; use think\Collection; use think\console\Command; use think\console\Input; @@ -24,7 +25,7 @@ use function Symfony\Component\Clock\now; class Test extends Command { - + use AmapTrait; protected function configure() { @@ -34,13 +35,9 @@ class Test extends Command protected function execute(Input $input, Output $output) { - $dispatch = OrderDispatch::where('id',177)->get(); - $hookParams2 = [ - 'dispatch' => $dispatch, - 'remark' => '手动派单给师傅:' . '老师傅' .'(123)', - ]; - Hook::listen('order_dispatch_change', $hookParams2); - + $key = 'ae0ab397a2febfa1ce0a2c780f3f23a3'; + $res = $this->getAddressByKeyword('重庆武隆区凤山街道锦江竹苑6幢31-4'); + dd($res); } diff --git a/application/admin/controller/AmapTrait.php b/application/admin/controller/AmapTrait.php new file mode 100644 index 0000000..5fa3e51 --- /dev/null +++ b/application/admin/controller/AmapTrait.php @@ -0,0 +1,48 @@ +amapKey = Env::get('amap_key'); + $url = 'https://restapi.amap.com/v5/place/text'; + $params = [ + 'key' => $this->amapKey, + 'keywords' => $keyword, + 'page_size' => 1, + ]; + + try { + $response = Http::get($url, $params); + $data = json_decode($response, true); + + if (isset($data['status']) && $data['status'] == '1') { + return $data['pois']['0'] ?? false; + } + } catch (\Exception $e) { + // 这里可以做日志记录 + } + return false; + } + + /** + * 还可以封装更多高德API调用方法 + */ +} diff --git a/application/admin/controller/Order.php b/application/admin/controller/Order.php index 4dd2d13..c6415e9 100644 --- a/application/admin/controller/Order.php +++ b/application/admin/controller/Order.php @@ -325,7 +325,6 @@ class Order extends Backend $params['source_shop'] = $sources[$params['source']] ?? null; $sources = $this->sources; - $items = $this->items; $sources = array_column($sources, 'title', 'id'); @@ -393,14 +392,35 @@ class Order extends Backend return $orderNumber; } - + use AmapTrait; public function smart() { // $titles = Item::where('status',1)->column('title'); // $res = $this->extractCustomerInfo(request()->post('str'),$titles); // dd($res); + $data = Address::smart(request()->post('str')); - $this->success(data: Address::smart(request()->post('str'))); + if ($data['item']['id'] ?? 0){ + $data['item']['item'] = $this->findElementByValue($this->itemsformattedTree, $data['item']['id'] ?? null); + } + preg_match('/\b(1[3-9]\d{9})\b/',$data['mobile'],$match); + $data['mobile'] = $match[0] ?? $data['mobile']; + + if ($data['addr'] && $data['addr']!=''){ + $address = $this->getAddressByKeyword($data['addr']); + if ($address){ + $data['area_id'] = $address['adcode']; + $location = explode(',',$address['location']); + $data['lng'] = $location[0]; + $data['lat'] = $location[1]; + }else{ + $data['addr'] =''; + } + } +// dd($data); + + + $this->success(data: $data); } diff --git a/application/admin/view/order/add.html b/application/admin/view/order/add.html index 3a46853..d811cc4 100644 --- a/application/admin/view/order/add.html +++ b/application/admin/view/order/add.html @@ -53,13 +53,13 @@ data-lat-id="lat">地图查找 -
- + type="text" />