Просмотр исходного кода

Merge branch 'after-sale' into redesign‌-260706

shish 1 день назад
Родитель
Сommit
e01afd4df7

+ 15 - 0
app-hd/controllers/PurchaseController.php

@@ -645,6 +645,7 @@ class PurchaseController extends BaseController
                             $perKmPrice = $shCurrentConfig['perKmPrice'] ?? 0;//超出起步,每公里加收金额
                             $changeRate = $shCurrentConfig['changeRate'] ?? 0;//负值时为降价百分比,正值时为涨价百分比
                             if ($startKm <= 0 || $startPrice <= 0 || $perKmPrice <= 0) {
+                                noticeUtil::push("算运费失败,请更换配送方式 startKm {$startKm} startPrice {$startPrice}  perKmPrice {$perKmPrice}", '15280215347');
                                 util::fail('算运费失败,请更换配送方式');
                             }
                             //计算客户到店的距离,骑电动车
@@ -666,6 +667,20 @@ class PurchaseController extends BaseController
                                 $sendCost = bcmul($sendCost, $rate, 2);
                             }
 
+                            // 自定义计费也要套满减,否则确认页按规则免了 15 元、下单仍按起步价落库
+                            $distanceMeters = floatval($distanceRespond['distance'] ?? 0);
+                            if ($distanceMeters <= 0 && $sendDistance > 0) {
+                                $distanceMeters = floatval(bcmul($sendDistance, 1000, 2));
+                            }
+                            $discountRespond = DeliveryQuoteUtil::applyReduceRules(
+                                $shCurrentConfig,
+                                $sendCost,
+                                $distanceMeters,
+                                $shMethodItemAmount,
+                                $productCount
+                            );
+                            $sendCost = $discountRespond['sendCost'] ?? $sendCost;
+
                             $post['sendCost'] = bcadd($post['sendCost'] ?? 0, $sendCost, 2);
                             $post['sendDistance'] = $sendDistance;
 

+ 23 - 1
common/components/delivery/util/DeliveryQuoteUtil.php

@@ -160,7 +160,29 @@ class DeliveryQuoteUtil
         ];
     }
 
-    //查询是否符合跑腿的满减规则
+    /**
+     * 按配送方式满减规则判断是否免跑腿费(自定义计费与跑腿平台报价共用)。
+     * 满扎数、满金额、距离在 freeKm 内同时满足时 sendCost 置 0,避免确认页显示免了、下单仍收起步价。
+     * @param array $shConfig 配送方式配置,需含 reduceRules
+     * @param float $sendCost 减免前跑腿费(元)
+     * @param float $sendDistanceMeters 距离(米),内部会换算成公里再和 freeKm 比较
+     * @param float $totalPrice 花材合计金额
+     * @param float $totalNum 扎数
+     * @return array ['sendCost' => 减免后金额]
+     */
+    public static function applyReduceRules($shConfig, $sendCost, $sendDistanceMeters, $totalPrice, $totalNum)
+    {
+        return self::discountSearch([
+            'shConfig' => $shConfig,
+            'sendCost' => $sendCost,
+            'sendDistance' => $sendDistanceMeters,
+            'freightType' => 0,
+            'totalPrice' => $totalPrice,
+            'totalNum' => $totalNum,
+        ]);
+    }
+
+    // 查询是否符合跑腿的满减规则;sendDistance 单位为米
     private static function discountSearch($params)
     {
         $shConfig = $params['shConfig'] ?? [];