修改地址逻辑

This commit is contained in:
liu 2024-07-04 10:08:13 +08:00
parent f9f39c2ac0
commit f9f0e2e4f8

View File

@ -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());