From e37e3fc879f5c6552f270e5a3a8e0a72bfac4eb4 Mon Sep 17 00:00:00 2001 From: Lemon <15040771@qq.com> Date: Fri, 23 Oct 2020 14:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E9=80=81=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/v3/OrderOnlineController.php | 12 ++++++-- .../DistributionPriceService.php | 28 ++++++++++++++++++- .../v3/Implementations/UserAddressService.php | 10 +++++++ .../DistributionPriceServiceInterface.php | 2 ++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/Controller/v3/OrderOnlineController.php b/app/Controller/v3/OrderOnlineController.php index c12bf72..34e076e 100644 --- a/app/Controller/v3/OrderOnlineController.php +++ b/app/Controller/v3/OrderOnlineController.php @@ -115,13 +115,18 @@ class OrderOnlineController extends BaseController $distance_text = '距您收货地址 ' . $distance . 'm'; } $distributionPrice = $this->distributionPriceService->do($distance); + $originalPrice = $this->distributionPriceService->original($distance); $res['location'] = [ 'address' => $address, 'distribution_price' => $distributionPrice, + 'original_price' => $originalPrice, 'distance' => $distance, 'within' => true, + 'style' => 'strike', // 'distribution_text' => '¥ '.$distributionPrice .'(' .$distance_text .')' - 'distribution_text' => $distance_text + 'distribution_text' => $distance_text, + 'distribution_price_text' => '¥ '.$distributionPrice, + 'original_price_text' => '¥ '.$originalPrice ]; }else{ $res['location'] = [ @@ -129,7 +134,10 @@ class OrderOnlineController extends BaseController 'distribution_price' => 3.5, 'distance' => $distance, 'within' => false, - 'distribution_text' => '¥ 3.5' + 'style' => 'strike', + 'distribution_text' => '', + 'distribution_price_text' => '', + 'original_price_text' => '' ]; } //返回预约送达时间 数组 diff --git a/app/Service/v3/Implementations/DistributionPriceService.php b/app/Service/v3/Implementations/DistributionPriceService.php index dadca3b..2bab7c5 100644 --- a/app/Service/v3/Implementations/DistributionPriceService.php +++ b/app/Service/v3/Implementations/DistributionPriceService.php @@ -22,7 +22,7 @@ class DistributionPriceService implements DistributionPriceServiceInterface // $distributionPrice = bcmul(0.70,($km-3),2); $distributionPrice = 0; break; - case ($km > 5 && $km <= 8) : + case ($km > 5 && $km <= $deliveryDistance) : $distributionPrice = bcmul(1.50,($km-5),2); break; // case ($km > 7 && $km <= $deliveryDistance) : @@ -44,4 +44,30 @@ class DistributionPriceService implements DistributionPriceServiceInterface { // TODO: Implement undo() method. } + + public function original($distance) + { + $deliveryDistance = config('distance.delivery_distance'); + $deliveryDistance = ceil($deliveryDistance/1000); + $km = ceil($distance/1000); + switch (true){ + case ($km > $deliveryDistance) : + throw new ErrorCodeException(ErrorCode::LOCATION_LONG_DISTANCE,'',['message' => '超出配送范围', 'data' => ['距离' => $km, '配送距离' => $deliveryDistance]]); + break; + case ($km > 3 && $km <= 5) : + // $distributionPrice = bcmul(0.70,($km-3),2); + $distributionPrice = 0; + break; + case ($km > 5 && $km <= $deliveryDistance) : + $distributionPrice = bcmul(1.50,($km-5),2); + break; + // case ($km > 7 && $km <= $deliveryDistance) : + // $distributionPrice = bcmul(1.50,($km-5),2); + // break; + default: + $distributionPrice = 0; + } + $distributionPrice = bcadd($distributionPrice,3.50,2); + return (float) $distributionPrice; + } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/UserAddressService.php b/app/Service/v3/Implementations/UserAddressService.php index bf374d1..94d90eb 100644 --- a/app/Service/v3/Implementations/UserAddressService.php +++ b/app/Service/v3/Implementations/UserAddressService.php @@ -91,16 +91,26 @@ class UserAddressService implements UserAddressServiceInterface $distance = $this->locationService->getDistanceByTencent($market->lng,$market->lat,$address['address']->lng,$address['address']->lat); $distributionPrice = $this->distributionPriceService->do($distance); + $originalPrice = $this->distributionPriceService->original($distance); if($distance >= 1000){ $distance_text = '距您收货地址 ' . bcdiv($distance,1000,2) . 'km'; }else{ $distance_text = '距您收货地址 ' . $distance . 'm'; } + /** + * distributionPrice 配送费 + * originalPrice 配送费原价 + * style 前端输出样式 + */ $res['address'] = $address; $res['delivery_distance'] = $distance; $res['distribution_price'] = $distributionPrice; + $res['original_price'] = $originalPrice; + $res['style'] = 'strike'; // $res['distribution_text'] = '¥ '.$distributionPrice .'(' .$distance_text .')'; $res['distribution_text'] = $distance_text; + $res['distribution_price_text'] = '¥ '.$distributionPrice; + $res['original_price_text'] = '¥ '.$originalPrice; return $res; } diff --git a/app/Service/v3/Interfaces/DistributionPriceServiceInterface.php b/app/Service/v3/Interfaces/DistributionPriceServiceInterface.php index 5c9d12f..aa6ea22 100644 --- a/app/Service/v3/Interfaces/DistributionPriceServiceInterface.php +++ b/app/Service/v3/Interfaces/DistributionPriceServiceInterface.php @@ -9,4 +9,6 @@ interface DistributionPriceServiceInterface public function check(); public function undo(); + + public function original($distance); } \ No newline at end of file