From 98abb7867091c1db8740169853830fc02713d7f2 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Mon, 19 Aug 2024 11:10:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BA=86=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E7=BB=8F=E7=BA=AC=E5=BA=A6=E8=8E=B7=E5=8F=96=E6=9C=80?= =?UTF-8?q?=E8=BF=91=E7=9A=84=E5=BA=97=E9=93=BA=EF=BC=8C=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=BA=86=E7=9B=B8=E5=85=B3API=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/IndexController.php | 19 +++++++++++++-- app/api/lists/order/CartList.php | 2 +- app/api/logic/order/OrderLogic.php | 32 +++++++------------------ app/common/service/xlsx/OrderDetail.php | 2 +- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index 9f6b13c4..57afc2be 100644 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -207,8 +207,23 @@ class IndexController extends BaseApiController */ public function config() { - $store_id = getenv('STORE_ID') ?? 1; - $find = SystemStore::where('id', $store_id)->find(); + //处理返回最近的店铺 + $params=$this->request->get(); + if ((isset($params['lat']) && $params['lat'] != '') && (isset($params['long']) && $params['long'] != '')) { + $latitude = $params['lat']; + $longitude = $params['long']; + // 计算距离的SQL表达式 + $distanceSql = "SQRT(POW(69.1 * (latitude - {$latitude}), 2) + + POW(69.1 * ({$longitude} - longitude) * COS(latitude / 57.3), 2))"; + $find = SystemStore::field("id, name, {$distanceSql} AS distance") + ->where('latitude', '<>', '') + ->where('longitude', '<>', '') + ->order('distance', 'asc') // 根据距离排序 + ->find(); + } else { + $store_id = getenv('STORE_ID') ?? 1; + $find = SystemStore::where('id', $store_id)->find(); + } $list = [ 'id' => $find['id'], 'store_name' => $find['name'], diff --git a/app/api/lists/order/CartList.php b/app/api/lists/order/CartList.php index f4bd5270..36bad71e 100644 --- a/app/api/lists/order/CartList.php +++ b/app/api/lists/order/CartList.php @@ -35,7 +35,7 @@ class CartList extends BaseAdminDataLists implements ListsSearchInterface, Lists */ public function setSearch(): array { - return []; + return ['='=>['store_id']]; } diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php index e80e1477..17b1f9c4 100644 --- a/app/api/logic/order/OrderLogic.php +++ b/app/api/logic/order/OrderLogic.php @@ -227,30 +227,14 @@ class OrderLogic extends BaseLogic if (isset($params['source']) && $params['source'] > 0) { $order['source'] = $params['source']; } - //处理返回最近的店铺 - if ((isset($params['lat']) && $params['lat'] != '') && (isset($params['long']) && $params['long'] != '')) { - $storeAll = SystemStore::field('id,name,phone,address,detailed_address,latitude,longitude')->select()->toArray(); - $nearestStore = null; - $minDistance = PHP_FLOAT_MAX; - foreach ($storeAll as $value) { - $value['distance'] = haversineDistance($value['latitude'], $value['longitude'], $params['lat'], $params['long']); - if ($value['distance'] < $minDistance) { - $minDistance = $value['distance']; - $nearestStore = $value; - } - } - $store['near_store'] = []; - if ($nearestStore) { - $store['near_store'] = $nearestStore; - } + + if (isset($params['store_id']) && $params['store_id'] > 0) { + $store_id = $params['store_id']; } else { - if (isset($params['store_id']) && $params['store_id'] > 0) { - $store_id = $params['store_id']; - } else { - $store_id = getenv('STORE_ID') ?? 1; - } - $store['near_store'] = SystemStore::where('id', $store_id)->field('id,name,phone,address,detailed_address,latitude,longitude')->find() ?? []; + $store_id = getenv('STORE_ID') ?? 1; } + $store['near_store'] = SystemStore::where('id', $store_id)->field('id,name,phone,address,detailed_address,latitude,longitude')->find() ?? []; + if ($user) { $order['address_id'] = UserAddress::where('uid', $user['id'])->where('is_default', 1)->value('id') ?? 0; } @@ -264,13 +248,13 @@ class OrderLogic extends BaseLogic // 使用DateTime::format()方法获取时间并比较 if ($currentTime->format('H:i') > $fourPM->format('H:i')) { $currentDate = date('Y-m-d'); - $alert='当前时间超过配送截止时间16:00,若下单,物品送达时间为'.date('Y-m-d', strtotime($currentDate. '+2 days')); + $alert = '当前时间超过配送截止时间16:00,若下单,物品送达时间为' . date('Y-m-d', strtotime($currentDate . '+2 days')); } } catch (\Exception $e) { self::setError($e->getMessage()); return false; } - return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store'],'alert'=>$alert]; + return ['order' => $order, 'cart_list' => $cart_select, 'shopInfo' => $store['near_store'], 'alert' => $alert]; } /** diff --git a/app/common/service/xlsx/OrderDetail.php b/app/common/service/xlsx/OrderDetail.php index 6e4ac057..786aea9a 100644 --- a/app/common/service/xlsx/OrderDetail.php +++ b/app/common/service/xlsx/OrderDetail.php @@ -11,7 +11,7 @@ class OrderDetail { public $warehouse='海吉星仓库'; - public $company='共投里海'; + public $company='供投里海'; public $address='泸州龙马潭区海吉星122栋'; public $phone='08302669767'; public $tel='17309099881';