Procházet zdrojové kódy

Merge branch 'master' into zhongqi-hb

shish před 6 měsíci
rodič
revize
7168c6fc35

+ 27 - 0
app-ghs/controllers/CustomController.php

@@ -952,6 +952,33 @@ class CustomController extends BaseController
         util::complete('修改成功');
     }
 
+    public function actionChangeRiseRule()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $risePercent = isset($get['risePercent']) && is_numeric($get['risePercent']) ? $get['risePercent'] : 0;
+        $riseRange = isset($get['riseRange']) && is_numeric($get['riseRange']) ? $get['riseRange'] : 0;
+        $custom = CustomClass::getById($id, true);
+        if (empty($custom)) {
+            util::fail('没有找到客户呢');
+        }
+        if ($custom->ownMainId != $this->mainId) {
+            util::fail('不是你的客户呢');
+        }
+        $ghsId = $custom->ghsId ?? 0;
+        $ghs = GhsClass::getById($ghsId, true);
+        if (empty($ghs)) {
+            util::fail('没有找到供货商呢');
+        }
+        $custom->risePercent = $risePercent;
+        $custom->riseRange = $riseRange;
+        $custom->save();
+        $ghs->risePercent = $risePercent;
+        $ghs->riseRange = $riseRange;
+        $ghs->save();
+        util::complete('修改成功');
+    }
+
     /**
      * 上门最低消费设置 -- 针对批发商客户进行批量修改
      */

+ 1 - 1
app-ghs/controllers/ItemController.php

@@ -542,7 +542,7 @@ class ItemController extends BaseController
         } elseif ($requestType == 'changeStock') {
             $list = ProductClass::changeStockGroup($list, $level);
         } elseif ($requestType == 'kd') {
-            $list = ProductClass::kdItemGroup($list, $level);
+            $list = ProductClass::kdItemGroup($list, $level,$custom);
         } elseif ($requestType == 'book') {
             $list = ProductClass::bookItemGroup($list, $level);
         } elseif ($requestType == 'itemList') {

+ 6 - 1
app-ghs/controllers/OrderController.php

@@ -1225,7 +1225,11 @@ class OrderController extends BaseController
 
         $diff = [];
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //但这边加的参数是有用的,给指定客户涨价的
+        $addPriceMap['risePercent'] = $custom['risePercent'] ?? 0;
+
         $level = $custom['level'] ?? 1;
         foreach ($productList as $currentProduct) {
             $currentPrice = $currentProduct['price'] ?? 0;
@@ -3037,7 +3041,8 @@ class OrderController extends BaseController
         $order->lat = $lat;
         $order->long = $long;
         $order->save();
-        if ($post['syncDefaultAddress'] == 1) {
+        $syncDefaultAddress = $post['syncDefaultAddress'] ?? 0;
+        if ($syncDefaultAddress == 1) {
             $customId = $order->customId ?? 0;
             $custom = CustomClass::getById($customId, true);
             if (!empty($custom)) {

+ 2 - 1
app-ghs/controllers/ProductController.php

@@ -321,6 +321,7 @@ class ProductController extends BaseController
         //客户等级
         $customId = Yii::$app->request->get('customId', 0);
         $level = 1;
+        $custom = [];
         if (!empty($customId)) {
             $custom = CustomClass::getById($customId, true);
             $level = $custom->level ?? 1;
@@ -351,7 +352,7 @@ class ProductController extends BaseController
             //开单的花材列表
             $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,hjDiscountPrice,skDiscountPrice,discountPrice,stock,weight,stockWarning,presell,ratioType,smallUnit,smallRatio,bigUnit,ratio,frontHide,reachNum,reachNumDiscount';
             $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field);
-            $itemInfoData = ProductClass::kdItemGroup($itemInfoData, $level);
+            $itemInfoData = ProductClass::kdItemGroup($itemInfoData, $level, $custom);
         } elseif ($requestType == 'book') {
             //预订花材列表
             $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,hjDiscountPrice,skDiscountPrice,discountPrice,stock,weight,stockWarning,presell,ratioType,smallUnit,smallRatio,bigUnit,ratio,frontHide';

+ 2 - 2
app-hd/controllers/ProductController.php

@@ -617,7 +617,7 @@ class ProductController extends BaseController
             $level = $ghs['giveLevel'] ?? 1;
             $field = 'id,py,cover,name,ratio,classId,itemId,weight,smallUnit,bigUnit,smallUnit,smallRatio,ratioType,variety,price,skPrice,skDiscountPrice,hjPrice,hjDiscountPrice,actualSold,stock,stockWarning,discountPrice,presell,presellDate,reachNum,reachNumDiscount,limitBuy';
             $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field);
-            $itemInfoData = ProductClass::hdCgGroup($itemInfoData, $level);
+            $itemInfoData = ProductClass::hdCgGroup($itemInfoData, $level, $ghs);
             $myProduct = ProductClass::getAllByCondition(['mainId' => $this->mainId, 'delStatus' => 0], null, 'id,stock,onStock,stockWarning,itemId', 'itemId');
             if (!empty($itemInfoData)) {
                 $myShop = $this->shop;
@@ -706,7 +706,7 @@ class ProductController extends BaseController
             $level = $ghs['giveLevel'] ?? 1;
             $field = 'id,py,cover,name,ratio,classId,itemId,weight,smallUnit,bigUnit,smallUnit,smallRatio,ratioType,variety,price,skPrice,skDiscountPrice,hjPrice,hjDiscountPrice,actualSold,stock,stockWarning,discountPrice,presell,presellDate,reachNum,reachNumDiscount,limitBuy';
             $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field);
-            $itemInfoData = ProductClass::hdCgGroup($itemInfoData, $level);
+            $itemInfoData = ProductClass::hdCgGroup($itemInfoData, $level, $ghs);
             $myProduct = ProductClass::getAllByCondition(['mainId' => $this->mainId, 'delStatus' => 0], null, 'id,stock,onStock,stockWarning,itemId', 'itemId');
             if (!empty($itemInfoData)) {
                 $myShop = $this->shop;

+ 2 - 2
app-pt/views/main/app.php

@@ -236,8 +236,8 @@
             }
             // 这里可以根据appType跳转到对应的下载链接
             const downloadUrls = {
-                'xiaohuabao': 'https://api.shop.hzghd.com/1270.apk', // 销花宝APP下载链接
-                'huazhanggui': 'https://api.shop.hzghd.com/222.apk', // 花掌柜APP下载链接
+                'xiaohuabao': 'https://api.shop.hzghd.com/1274.apk', // 销花宝APP下载链接
+                'huazhanggui': 'https://api.shop.hzghd.com/226.apk', // 花掌柜APP下载链接
                 'huazhanggui_cashier': 'https://api.shop.hzghd.com/195.apk', // 花掌柜收银下载链接
                 'xiaohuabao_cashier': 'https://api.shop.hzghd.com/152.apk' // 销花宝收银下载链接
             };

+ 1 - 1
biz-ghs/item/classes/ItemClass.php

@@ -447,7 +447,7 @@ class ItemClass extends BaseClass
         if (empty($list)) {
             return $list;
         }
-        $list = ProductClass::groupProductInfo($list, $level);
+        $list = ProductClass::groupProductInfo($list, $level, $custom);
         $data = [];
         $data['-1'] = [];
         foreach ($list as $it) {

+ 46 - 17
biz-ghs/order/classes/OrderClass.php

@@ -5,6 +5,7 @@ namespace bizGhs\order\classes;
 use bizGhs\item\classes\ItemClassClass;
 use bizHd\purchase\classes\PurchaseItemClass;
 use common\components\arrayUtil;
+use common\components\noticeUtil;
 use wkhtmltox\Image\Converter;
 use biz\shop\classes\ShopCapitalClass;
 use biz\shop\classes\ShopClass;
@@ -811,7 +812,7 @@ class OrderClass extends BaseClass
     }
 
     //添加订单 ssh 2019.12.5
-    public static function addOrder($data)
+    public static function addOrder($data, $custom = [])
     {
         $shopId = $data['shopId'] ?? 0;
         $mainId = $data['mainId'] ?? 0;
@@ -851,7 +852,7 @@ class OrderClass extends BaseClass
         }
 
         $customShopAdminId = $data['customShopAdminId'] ?? 0;
-        $moreParams = ['book' => $book, 'customShopAdminId' => $customShopAdminId];
+        $moreParams = ['book' => $book, 'customShopAdminId' => $customShopAdminId, 'custom' => $custom];
         $respond = OrderItemClass::replaceItem($orderSn, $product, $data, $stockMayChange, $moreParams);
 
         $sendCost = isset($data['sendCost']) && is_numeric($data['sendCost']) ? $data['sendCost'] : 0;
@@ -859,6 +860,7 @@ class OrderClass extends BaseClass
         $data['bigNum'] = $respond['bigNum'] ?? 0;
         $data['smallNum'] = $respond['smallNum'] ?? 0;
         $data['itemNum'] = $respond['totalItemNum'] ?? 0;
+        //这个字段记录每个花材满多少扎减掉的金额,并汇总金额,区别于整单满减的 $cutAmount。保存起来应该是在哪里有用,$totalReachDiscount在这边不影响actPrice,估计因为取花材的价格里::getFinalPrice()已经使用了优惠后的价格,有多处,关键词 reachDiscountPrice_explain ssh 20260116
         $data['reachDiscountPrice'] = $respond['totalReachDiscount'] ?? 0;
 
         //记录订单的总成本
@@ -884,7 +886,7 @@ class OrderClass extends BaseClass
         if ($book == 1) {
             $kiloFee = $shop->kiloFee ?? 0;
             $miniKilo = $shop->miniKilo ?? 0;
-            $calcWeight = $weight > $miniKilo ? $weight : $miniKilo;
+            $calcWeight = max($weight, $miniKilo);
             $allKiloFee = bcmul($calcWeight, $kiloFee, 2);
             $currentPrice = bcadd($currentPrice, $allKiloFee, 2);
             $data['allKiloFee'] = $allKiloFee;
@@ -915,7 +917,7 @@ class OrderClass extends BaseClass
                 $actPrice = 0;
             }
         } else {
-            //整单满减
+            //客户自己下单才有整单满减,门店帮忙开单没有,,多个地方要同步修改,关键词 meet_amount_num_reduce
             if ($book == 0) {
                 $meetNum = $shop->meetNum ?? 0;
                 $meetAmount = $shop->meetAmount ?? 0;
@@ -927,20 +929,47 @@ class OrderClass extends BaseClass
                     $miniOption = bcsub(1, $cutOption, 2);
                     $cutAmount = bcmul($actPrice, $miniOption, 2);
                 }
-                if ($cutOption > 0) {
-                    if ($meetNum > 0 && isset($data['bigNum']) && $data['bigNum'] >= $meetNum) {
-                        if ($cutAmount > $actPrice) {
-                            util::fail('整单满减为负');
-                        }
-                        $actPrice = bcsub($actPrice, $cutAmount, 2);
-                        $data['orderReachDiscountPrice'] = $cutAmount;
-                    } else {
-                        if ($meetAmount > 0 && isset($data['itemPrice']) && $data['itemPrice'] >= $meetAmount) {
-                            if ($cutAmount > $actPrice) {
-                                util::fail('整单满减为负');
-                            }
+                if ($cutAmount > 0 && $meetNum > 0 && $meetAmount > 0) {
+                    if (isset($data['bigNum']) && $data['bigNum'] >= $meetNum && isset($data['itemPrice']) && $data['itemPrice'] >= $meetAmount) {
+                        if ($cutAmount < $actPrice) {
                             $actPrice = bcsub($actPrice, $cutAmount, 2);
                             $data['orderReachDiscountPrice'] = $cutAmount;
+                        } else {
+                            noticeUtil::push('订单金额不足满减金额,customId:' . $customId, '15280215347');
+                        }
+                    }
+                }
+            }
+        }
+
+        //如果有设置指定客户涨价百分之几,然后又设置了涨价的幅度。【这个功能主要用于客户不收他运费,门店不赚钱,收他运费客户不乐意,所以把运费加到花材里】,多处同步修改,关键词 rise_percent_rang
+        if (isset($data['itemPrice'])) {
+            if (isset($data['orderReachDiscountPrice'])) {
+                $originActPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
+            } else {
+                $originActPrice = $actPrice;
+            }
+            if ($originActPrice >= $data['itemPrice']) {
+                if (isset($custom['risePercent']) && $custom['risePercent'] > 0) {
+                    if (isset($custom['riseRange']) && $custom['riseRange'] > 0) {
+                        $risePercent = $custom['risePercent'];
+                        $riseRange = $custom['riseRange'];
+                        // 计算涨价金额:涨价后金额 * (涨价百分比 / (100 + 涨价百分比))
+                        $riseAmount = bcmul($data['itemPrice'], bcdiv($risePercent, bcadd(100, $risePercent, 0), 4), 2);
+                        if ($riseAmount > $riseRange) {
+                            //应该退回的金额
+                            $backAmount = bcsub($riseAmount, $riseRange, 2);
+                            $actPrice = bcsub($actPrice, $backAmount, 2);
+                            if (isset($data['orderReachDiscountPrice'])) {
+                                if ($data['orderReachDiscountPrice'] < $backAmount) {
+                                    //前面整单满减的,就不减了,所以这里面加回来
+                                    $actPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
+                                    //改成减多加钱里面的
+                                    $data['orderReachDiscountPrice'] = $backAmount;
+                                }
+                            } else {
+                                $data['orderReachDiscountPrice'] = $backAmount;
+                            }
                         }
                     }
                 }
@@ -977,7 +1006,7 @@ class OrderClass extends BaseClass
         $currentTime = time();
         $validTime = dict::getDict('order_pay_has_time');
         $current = $currentTime + $validTime;
-        $data['deadline'] = isset($data['deadline']) ? $data['deadline'] : date("Y-m-d H:i:s", $current);
+        $data['deadline'] = $data['deadline'] ?? date("Y-m-d H:i:s", $current);
         if ($book == 1) {
             $fiveTime = bcmul(86400, 5);
             $bookDeadline = bcadd($currentTime, $fiveTime);

+ 1 - 1
biz-ghs/order/services/OrderService.php

@@ -178,7 +178,7 @@ class OrderService extends BaseService
         }
 
         //供货商销售单
-        $returnOrder = OrderClass::addOrder($data);
+        $returnOrder = OrderClass::addOrder($data, $custom);
         $saleId = $returnOrder->id ?? 0;
 
         $customSjId = $custom['sjId'] ?? 0;

+ 33 - 4
biz-ghs/product/classes/ProductClass.php

@@ -310,11 +310,15 @@ class ProductClass extends BaseClass
     }
 
     //花材列表用到的数据组合 ssh 20221225
-    public static function kdItemGroup($list, $level = 0)
+    public static function kdItemGroup($list, $level = 0, $custom = [])
     {
         //各个等级对应的price addPrice字段
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //但这边加的参数是有用的,给指定客户涨价的
+        $addPriceMap['risePercent'] = $custom['risePercent'] ?? 0;
+
         foreach ($list as $k => $v) {
             $shortCover = $v['cover'] ?? '';
             $cover = imgUtil::getPrefix() . 'hhb_small.png';
@@ -572,11 +576,14 @@ class ProductClass extends BaseClass
     }
 
     //通用花材列表数组组合
-    public static function groupProductInfo($list, $level = 0)
+    public static function groupProductInfo($list, $level = 0, $custom = [])
     {
         //各个等级对应的price addPrice字段
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //但这边加的参数是有用的,给指定客户涨价的
+        $addPriceMap['risePercent'] = $custom['risePercent'] ?? 0;
 
         foreach ($list as $k => $v) {
             $shortCover = $v['cover'] ?? '';
@@ -661,11 +668,14 @@ class ProductClass extends BaseClass
     }
 
     //零售端花店采购
-    public static function hdCgGroup($list, $level = 0)
+    public static function hdCgGroup($list, $level = 0, $ghs = [])
     {
         //各个等级对应的price addPrice字段
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //这里加的参数是有用的 ssh 20260116
+        $addPriceMap['risePercent'] = $ghs['risePercent'] ?? 0;
 
         foreach ($list as $k => $v) {
             $shortCover = $v['cover'] ?? '';
@@ -734,7 +744,8 @@ class ProductClass extends BaseClass
     }
 
     //输出价格 ssh 20211009
-    public static function getFinalPrice($product, $level, $priceMap, $addPriceMap, $changePrice = 0, $buyNum = 0)
+    //$params 原来是 $addPriceMap,现在 $addPriceMap 值没用了,把它改成 $params ,用作传别的参数
+    public static function getFinalPrice($product, $level, $priceMap, $params, $changePrice = 0, $buyNum = 0)
     {
         //开单改价优先级最高
         if ($changePrice > 0) {
@@ -769,6 +780,20 @@ class ProductClass extends BaseClass
                 $price = bcsub($price, $reachNumDiscount, 2);
             }
         }
+
+        //这个 $risePercent 可能是正整数,也可能是负整数,如果是10表示$price涨价10%,如果是-10表示降价10%,同时$price降价后,不能小于0.01
+        $risePercent = $params['risePercent'] ?? 0;
+        if ($risePercent != 0) {
+            // risePercent为正数表示涨价百分比,负数表示降价百分比
+            $priceAdjustment = bcmul($price, bcdiv($risePercent, 100, 4), 2);
+            $price = bcadd($price, $priceAdjustment, 2);
+
+            // 降价后不能小于0.01
+            if ($price < 0.01) {
+                $price = 0.01;
+            }
+        }
+
         return $price;
     }
 
@@ -1370,9 +1395,13 @@ class ProductClass extends BaseClass
         $totalBigNum = 0;
         $totalSmallNum = 0;
 
+        $custom = $moreParams['custom'] ?? [];
         //不同等级对应 price addPrice
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //但这边加的参数是有用的,给指定客户涨价的
+        $addPriceMap['risePercent'] = $custom['risePercent'] ?? 0;
 
         $totalItemNum = 0;
         //满减累计

+ 47 - 16
biz-hd/purchase/classes/PurchaseClass.php

@@ -784,7 +784,10 @@ class PurchaseClass extends BaseClass
 
         $giveLevel = $ghs['giveLevel'] ?? 0;
         $priceMap = CustomClass::$levelPriceKeyMap;
+        //这个参数应该是要作废的,但下面加的参数是有用的,多处要同步修改,关键词 abandon_add_price_map ,ssh 20260116
         $addPriceMap = CustomClass::$levelAddPriceKeyMap;
+        //但这边加的参数是有用的,给指定客户涨价的
+        $addPriceMap['risePercent'] = $ghs['risePercent'] ?? 0;
 
         //累计满减
         $totalReachDiscount = 0;
@@ -831,7 +834,7 @@ class PurchaseClass extends BaseClass
                 //用批发店的花材名称
                 $itemName = $currentGhsProduct['name'] ?? '';
                 $cover = $currentGhsProduct['cover'] ?? '';
-                //如果零售店自己下预订单,预付0.1元,有个地方要同步修改,搜索关键词 pre0.1
+                //如果零售店自己下预订单,预付0.1元,有个地方要同步修改,搜索关键词 pre0.1
                 if ($book == 1 && $shopAdminId > 0) {
                     $price = 0.1;
                 } else {
@@ -949,7 +952,7 @@ class PurchaseClass extends BaseClass
         if ($book == 1) {
             $kiloFee = $ghs['kiloFee'] ?? 0;
             $miniKilo = $ghs['miniKilo'] ?? 0;
-            $calcWeight = $totalWeight > $miniKilo ? $totalWeight : $miniKilo;
+            $calcWeight = max($totalWeight, $miniKilo);
             $allKiloFee = bcmul($calcWeight, $kiloFee, 2);
             $prePrice = bcadd($prePrice, $allKiloFee, 2);
             $data['allKiloFee'] = $allKiloFee;
@@ -959,7 +962,7 @@ class PurchaseClass extends BaseClass
         }
         $actPrice = $prePrice;
         if (isset($data['modifyPrice'])) {
-            $modifyPrice = $data['modifyPrice'] ?? 0;
+            $modifyPrice = $data['modifyPrice'];
             if ($modifyPrice < $prePrice) {
                 //优惠金额
                 $data['discountAmount'] = bcsub($prePrice, $modifyPrice, 2);
@@ -974,7 +977,7 @@ class PurchaseClass extends BaseClass
                 $actPrice = 0;
             }
         } else {
-            //整单满减
+            //客户自己下单才有整单满减,门店帮忙开单没有,,多个地方要同步修改,关键词 meet_amount_num_reduce
             if ($book == 0) {
                 $ghsShopId = $ghs['shopId'] ?? 0;
                 $ghsShop = ShopClass::getById($ghsShopId, true);
@@ -989,20 +992,47 @@ class PurchaseClass extends BaseClass
                         $miniOption = bcsub(1, $cutOption, 2);
                         $cutAmount = bcmul($actPrice, $miniOption, 2);
                     }
-                    if ($cutOption > 0) {
-                        if ($meetNum > 0 && $bigNum >= $meetNum) {
-                            if ($cutAmount > $actPrice) {
-                                util::fail('整单满减为负');
-                            }
-                            $actPrice = bcsub($actPrice, $cutAmount, 2);
-                            $data['orderReachDiscountPrice'] = $cutAmount;
-                        } else {
-                            if ($meetAmount > 0 && isset($data['itemPrice']) && $data['itemPrice'] >= $meetAmount) {
-                                if ($cutAmount > $actPrice) {
-                                    util::fail('整单满减为负');
-                                }
+                    if ($cutAmount > 0 && $meetNum > 0 && $meetAmount > 0) {
+                        if ($bigNum >= $meetNum && $data['itemPrice'] >= $meetAmount) {
+                            if ($cutAmount < $actPrice) {
                                 $actPrice = bcsub($actPrice, $cutAmount, 2);
                                 $data['orderReachDiscountPrice'] = $cutAmount;
+                            } else {
+                                noticeUtil::push('订单金额不足满减金额,ghsShopId:' . $ghsShopId, '15280215347');
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        //如果有设置指定客户涨价百分之几,然后又设置了涨价的幅度。【这个功能主要用于客户不收他运费,门店不赚钱,收他运费客户不乐意,所以把运费加到花材里】,多处同步修改,关键词 rise_percent_rang
+        if (isset($data['itemPrice'])) {
+            if(isset($data['orderReachDiscountPrice'])){
+                $originActPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
+            }else{
+                $originActPrice = $actPrice;
+            }
+            if($originActPrice >= $data['itemPrice']){
+                if (isset($ghs['risePercent']) && $ghs['risePercent'] > 0) {
+                    if (isset($ghs['riseRange']) && $ghs['riseRange'] > 0) {
+                        $risePercent = $ghs['risePercent'];
+                        $riseRange = $ghs['riseRange'];
+                        // 计算涨价金额:涨价后金额 * (涨价百分比 / (100 + 涨价百分比))
+                        $riseAmount = bcmul($data['itemPrice'], bcdiv($risePercent, bcadd(100, $risePercent, 0), 4), 2);
+                        if($riseAmount>$riseRange){
+                            //应该退回的金额
+                            $backAmount = bcsub($riseAmount, $riseRange, 2);
+                            $actPrice = bcsub($actPrice, $backAmount, 2);
+                            if(isset($data['orderReachDiscountPrice'])){
+                                if($data['orderReachDiscountPrice']<$backAmount){
+                                    //前面整单满减的,就不减了,所以这里面加回来
+                                    $actPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
+                                    //改成减多加钱里面的
+                                    $data['orderReachDiscountPrice'] = $backAmount;
+                                }
+                            }else{
+                                $data['orderReachDiscountPrice'] = $backAmount;
                             }
                         }
                     }
@@ -1010,6 +1040,7 @@ class PurchaseClass extends BaseClass
             }
         }
 
+        //这个字段记录每个花材满多少扎减掉的金额,并汇总金额,区别于整单满减的 $cutAmount。保存起来应该是在哪里有用,$totalReachDiscount在这边不影响actPrice,估计因为取花材的价格里::getFinalPrice()已经使用了优惠后的价格,有多处,关键词 reachDiscountPrice_explain ssh 20260116
         $data['reachDiscountPrice'] = $totalReachDiscount;
         $data['prePrice'] = $prePrice;
         $data['bookPrice'] = $actPrice;

+ 1 - 1
biz-hd/purchase/services/PurchaseService.php

@@ -134,7 +134,7 @@ class PurchaseService extends BaseService
             'transType' => $transType,
             'sendDistance' => $sendDistance,
         ];
-        $result = OrderClass::addOrder($arr);
+        $result = OrderClass::addOrder($arr,$custom);
         $saleId = $result['id'] ?? 0;
         $respond->saleId = $saleId;
         $respond->save();