|
|
@ -11,27 +11,30 @@ class DistributionPriceService implements DistributionPriceServiceInterface |
|
|
{ |
|
|
{ |
|
|
public function do($distance) |
|
|
public function do($distance) |
|
|
{ |
|
|
{ |
|
|
|
|
|
// 配送费统一3.5元
|
|
|
|
|
|
return $distributionPrice = 3.5; |
|
|
|
|
|
|
|
|
$deliveryDistance = config('distance.delivery_distance'); |
|
|
$deliveryDistance = config('distance.delivery_distance'); |
|
|
$deliveryDistance = ceil($deliveryDistance/1000); |
|
|
$deliveryDistance = ceil($deliveryDistance/1000); |
|
|
$km = ceil($distance/1000); |
|
|
$km = ceil($distance/1000); |
|
|
switch (true){ |
|
|
switch (true){ |
|
|
case ($km > 3 && $km < 5) : |
|
|
case ($km > 3 && $km < 5) : |
|
|
$distributionRrice = bcmul(0.70,($km-3),2); |
|
|
|
|
|
|
|
|
$distributionPrice = bcmul(0.70,($km-3),2); |
|
|
break; |
|
|
break; |
|
|
case ($km >= 5 && $km < 7) : |
|
|
case ($km >= 5 && $km < 7) : |
|
|
$distributionRrice = bcmul(1.00,($km-3),2); |
|
|
|
|
|
|
|
|
$distributionPrice = bcmul(1.00,($km-3),2); |
|
|
break; |
|
|
break; |
|
|
case ($km >= 7 && $km <= $deliveryDistance) : |
|
|
case ($km >= 7 && $km <= $deliveryDistance) : |
|
|
$distributionRrice = bcmul(1.50,($km-3),2); |
|
|
|
|
|
|
|
|
$distributionPrice = bcmul(1.50,($km-3),2); |
|
|
break; |
|
|
break; |
|
|
case ($km > $deliveryDistance) : |
|
|
case ($km > $deliveryDistance) : |
|
|
throw new ErrorCodeException(ErrorCode::LOCATION_LONG_DISTANCE); |
|
|
throw new ErrorCodeException(ErrorCode::LOCATION_LONG_DISTANCE); |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
$distributionRrice = 0; |
|
|
|
|
|
|
|
|
$distributionPrice = 0; |
|
|
} |
|
|
} |
|
|
$distributionRrice = bcadd($distributionRrice,3.50,2); |
|
|
|
|
|
return (float) $distributionRrice; |
|
|
|
|
|
|
|
|
$distributionPrice = bcadd($distributionPrice,3.50,2); |
|
|
|
|
|
return (float) $distributionPrice; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public function check() |
|
|
public function check() |
|
|
|