From f9f0e2e4f8385ee2236e5f82138e6bc1629cf115 Mon Sep 17 00:00:00 2001
From: liu <1873441552@qq.com>
Date: Thu, 4 Jul 2024 10:08:13 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9D=80=E9=80=BB?=
 =?UTF-8?q?=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/api/logic/order/OrderLogic.php | 55 +++++++++++++++---------------
 1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php
index 7372c242d..2de85ef70 100644
--- a/app/api/logic/order/OrderLogic.php
+++ b/app/api/logic/order/OrderLogic.php
@@ -180,37 +180,38 @@ class OrderLogic extends BaseLogic
                 $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;
-                }
+            $store_check = 0;
+            if(empty($user)){
+                $store_id = getenv('STORE_ID') ?? 1;
+                $store['near_store'] =SystemStore::where('id', $store_id)->field('id,name,phone,address,detailed_address,latitude,longitude')->find()??[];
             }else{
-                if(empty($user)){
+                $checkOrderStore = StoreOrder::where('uid',$user['id'])->field('id,store_id')
+                    ->order('id','desc')->find();
+                if($checkOrderStore){
+                    $store['near_store'] =SystemStore::where('id', $checkOrderStore['store_id'])->field('id,name,phone,address,detailed_address,latitude,longitude')->find()??[];
+                }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()??[];
-                }else{
-                    $checkOrderStore = StoreOrder::where('uid',$user['id'])->field('id,store_id')
-                        ->order('id','desc')->find();
-                    if($checkOrderStore){
-                        $store['near_store'] =SystemStore::where('id', $checkOrderStore['store_id'])->field('id,name,phone,address,detailed_address,latitude,longitude')->find()??[];
-                    }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_check = 1;
+            }
+            if ($store_check) {
+                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;
+                    }
+                }
             }
         } catch (\Exception $e) {
             self::setError($e->getMessage());