|
|
@@ -10,6 +10,7 @@ use bizHd\distribution\classes\DistributionOrderClass;
|
|
|
use bizHd\express\classes\HdDeliveryOrderClass;
|
|
|
use bizHd\order\classes\OrderClass as HdOrderClass;
|
|
|
use bizHd\order\classes\PsMethodClass;
|
|
|
+use bizHd\order\classes\WholeOrderDiscountClass;
|
|
|
use bizHd\refund\classes\MallRefundApplyClass;
|
|
|
use bizHd\hb\classes\HbClass;
|
|
|
use bizHd\hb\classes\HbScopeClass;
|
|
|
@@ -973,6 +974,7 @@ class OrderController extends BaseController
|
|
|
/**
|
|
|
* 花束+花材合并结算下单
|
|
|
* 复用 OrderService::createHdOrder,不改动 buy-item / create-order
|
|
|
+ * 整单优惠:会员折扣与门店满减互斥,只落地优惠金额更大的一项(相等用会员折扣)
|
|
|
*/
|
|
|
public function actionCreateMixOrder()
|
|
|
{
|
|
|
@@ -1510,6 +1512,18 @@ class OrderController extends BaseController
|
|
|
$post['bigNum'] = $totalNum;
|
|
|
$post['modifyPrice'] = $modifyPrice;
|
|
|
$post['hasSeckill'] = $hasSeckillGoods ? 1 : 0;
|
|
|
+ // 混合单:会员折扣与门店满减互斥,取优惠更大的一项,避免 createHdOrder 再叠满减
|
|
|
+ $wholePick = WholeOrderDiscountClass::pick(
|
|
|
+ $modifyPrice,
|
|
|
+ $unMeetBigNum,
|
|
|
+ $custom->discount ?? 1,
|
|
|
+ $shop
|
|
|
+ );
|
|
|
+ if ($wholePick['type'] === WholeOrderDiscountClass::TYPE_MEMBER) {
|
|
|
+ $post['skipShopMeetCut'] = 1;
|
|
|
+ } elseif ($wholePick['type'] === WholeOrderDiscountClass::TYPE_SHOP) {
|
|
|
+ $post['skipMemberDiscount'] = 1;
|
|
|
+ }
|
|
|
$return = \bizHd\order\services\OrderService::createHdOrder($post, $custom, $hasPay);
|
|
|
|
|
|
$orderSn = $return->orderSn ?? '';
|
|
|
@@ -1537,7 +1551,8 @@ class OrderController extends BaseController
|
|
|
HomePageModuleClass::clearSeckillReservationSnapshot();
|
|
|
|
|
|
$orderSn = $return->orderSn ?? '';
|
|
|
- $orderPrice = $return->orderPrice ?? ($return->actPrice ?? 0);
|
|
|
+ // 优先 actPrice:门店满减落在 actPrice/orderPrice,避免仍按未减金额去支付
|
|
|
+ $orderPrice = $return->actPrice ?? ($return->orderPrice ?? 0);
|
|
|
$id = $return->id ?? 0;
|
|
|
$getPayType = dict::getDict('getPayType');
|
|
|
util::success([
|