@pisell/pisellos 2.3.51 → 2.3.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +12 -10
- package/dist/modules/Order/index.d.ts +6 -6
- package/dist/modules/Order/index.js +140 -86
- package/dist/modules/Order/types.d.ts +21 -3
- package/dist/modules/Order/types.js +11 -0
- package/dist/modules/ProductList/index.js +1 -1
- package/dist/modules/Rules/index.js +19 -9
- package/dist/modules/SalesSummary/utils.js +7 -1
- package/dist/solution/BaseSales/index.d.ts +15 -5
- package/dist/solution/BaseSales/index.js +173 -135
- package/dist/solution/BaseSales/utils/cartPromotion.js +5 -3
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/types.d.ts +3 -0
- package/dist/solution/BookingTicket/utils/cartView.js +44 -32
- package/dist/solution/Sales/index.d.ts +1 -0
- package/dist/solution/Sales/index.js +16 -2
- package/dist/solution/UnifiedBookingSales/index.d.ts +0 -4
- package/dist/solution/UnifiedBookingSales/index.js +27 -26
- package/lib/model/strategy/adapter/promotion/index.js +0 -51
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +3 -1
- package/lib/modules/Order/index.d.ts +6 -6
- package/lib/modules/Order/index.js +79 -12
- package/lib/modules/Order/types.d.ts +21 -3
- package/lib/modules/ProductList/index.js +9 -1
- package/lib/modules/Rules/index.js +16 -11
- package/lib/modules/SalesSummary/utils.js +5 -1
- package/lib/solution/BaseSales/index.d.ts +15 -5
- package/lib/solution/BaseSales/index.js +44 -11
- package/lib/solution/BaseSales/utils/cartPromotion.js +5 -2
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/types.d.ts +3 -0
- package/lib/solution/BookingTicket/utils/cartView.js +43 -30
- package/lib/solution/Sales/index.d.ts +1 -0
- package/lib/solution/Sales/index.js +15 -3
- package/lib/solution/UnifiedBookingSales/index.d.ts +0 -4
- package/lib/solution/UnifiedBookingSales/index.js +27 -26
- package/package.json +1 -1
|
@@ -321,6 +321,24 @@ export interface ReplaceTempOrderOptions {
|
|
|
321
321
|
saveDraft?: boolean;
|
|
322
322
|
}
|
|
323
323
|
export type AddProductBookingInput = Record<string, any>;
|
|
324
|
+
/**
|
|
325
|
+
* 添加商品行时的顺序控制。
|
|
326
|
+
* 默认追加到 products 尾部;预约数量同步可插入到既有预约组的最新行之后,
|
|
327
|
+
* 避免步进器修改数量改变该组展示位置。
|
|
328
|
+
*/
|
|
329
|
+
export interface AddProductToOrderOptions {
|
|
330
|
+
insertAfterProductUid?: string;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* 删除商品后的可选位置保持策略。
|
|
334
|
+
* 预约合并行减量时仍删除最新真实行,再把剩余代表行移动到被删除代表行原位置。
|
|
335
|
+
*/
|
|
336
|
+
export interface RemoveProductsFromOrderOptions {
|
|
337
|
+
preserveDisplayPosition?: {
|
|
338
|
+
remainingProductUid: string;
|
|
339
|
+
anchorProductUid: string;
|
|
340
|
+
};
|
|
341
|
+
}
|
|
324
342
|
/** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
|
|
325
343
|
export interface UpdateOrderProductParams {
|
|
326
344
|
product_id: number | null;
|
|
@@ -722,15 +740,15 @@ export interface OrderModuleAPI {
|
|
|
722
740
|
updateTempOrderCustomer: (customer: UpdateTempOrderCustomerInput) => OrderSnapshot['customer'];
|
|
723
741
|
updateTempOrderBuzzer: (buzzer: string) => string;
|
|
724
742
|
updateTempOrderContactsInfo: (contactsInfo: Record<string, any> | null) => Record<string, any> | null;
|
|
725
|
-
addProductToOrder: (product: Partial<OrderProduct> & OrderProductIdentity, booking?: AddProductBookingInput) => Promise<OrderProduct[]>;
|
|
743
|
+
addProductToOrder: (product: Partial<OrderProduct> & OrderProductIdentity, booking?: AddProductBookingInput, options?: AddProductToOrderOptions) => Promise<OrderProduct[]>;
|
|
726
744
|
updateOrderProduct: (params: UpdateOrderProductParams) => Promise<OrderProduct[]>;
|
|
727
745
|
/** 批量更新购物车行,末尾仅触发一次促销重算与 summary 刷新 */
|
|
728
746
|
updateOrderProducts: (paramsList: UpdateOrderProductParams[]) => Promise<OrderProduct[]>;
|
|
729
747
|
updateOrderProductQuantity: (params: UpdateOrderProductQuantityParams) => Promise<OrderProduct[]>;
|
|
730
748
|
updateOrderBooking: (params: UpdateOrderBookingParams) => any[];
|
|
731
|
-
removeProductFromOrder: (identity: OrderProductIdentity) => Promise<OrderProduct[]>;
|
|
749
|
+
removeProductFromOrder: (identity: OrderProductIdentity, options?: RemoveProductsFromOrderOptions) => Promise<OrderProduct[]>;
|
|
732
750
|
/** 批量删除购物车行,末尾仅触发一次促销重算与 summary 刷新 */
|
|
733
|
-
removeProductsFromOrder: (identities: OrderProductIdentity[]) => Promise<OrderProduct[]>;
|
|
751
|
+
removeProductsFromOrder: (identities: OrderProductIdentity[], options?: RemoveProductsFromOrderOptions) => Promise<OrderProduct[]>;
|
|
734
752
|
/** @deprecated no-op;OrderModule 不再负责 tempOrder localStorage 持久化。 */
|
|
735
753
|
persistTempOrder: () => void;
|
|
736
754
|
/**
|
|
@@ -63,6 +63,17 @@ export var OrderHooks = /*#__PURE__*/function (OrderHooks) {
|
|
|
63
63
|
* 清空时整个 payload 为 null。
|
|
64
64
|
*/
|
|
65
65
|
|
|
66
|
+
/**
|
|
67
|
+
* 添加商品行时的顺序控制。
|
|
68
|
+
* 默认追加到 products 尾部;预约数量同步可插入到既有预约组的最新行之后,
|
|
69
|
+
* 避免步进器修改数量改变该组展示位置。
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 删除商品后的可选位置保持策略。
|
|
74
|
+
* 预约合并行减量时仍删除最新真实行,再把剩余代表行移动到被删除代表行原位置。
|
|
75
|
+
*/
|
|
76
|
+
|
|
66
77
|
/** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
|
|
67
78
|
|
|
68
79
|
/** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
|
|
@@ -202,7 +202,7 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
202
202
|
open_quotation: 1,
|
|
203
203
|
open_bundle: 0,
|
|
204
204
|
exclude_extension_type: ['product_party', 'product_event', 'product_series_event', 'product_package_ticket', 'ticket', 'event_item'],
|
|
205
|
-
with: ['category', 'collection', 'resourceRelation'],
|
|
205
|
+
with: ['category', 'collection', 'resourceRelation', 'bundleGroup.bundleItem', 'optionGroup.optionItem', 'variantGroup.variantItem', 'dataVariants'],
|
|
206
206
|
status: status,
|
|
207
207
|
num: 500,
|
|
208
208
|
skip: 1,
|
|
@@ -366,7 +366,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
366
366
|
var discountType = selectedDiscount.tag || selectedDiscount.type;
|
|
367
367
|
return selectedDiscount.isEditMode === true && selectedDiscount.isSelected === true && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType);
|
|
368
368
|
};
|
|
369
|
-
var
|
|
369
|
+
var resolveReapplyBookingDiscountPercent = function resolveReapplyBookingDiscountPercent(originProduct, selectedDiscount) {
|
|
370
370
|
var _discount2;
|
|
371
371
|
if (!shouldReapplyBookingDiscount(originProduct, selectedDiscount)) return undefined;
|
|
372
372
|
var discountType = (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.tag) || (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.type);
|
|
@@ -454,6 +454,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
454
454
|
bundleIndex: bundleIndex,
|
|
455
455
|
// 虚拟商品属性
|
|
456
456
|
price: Number(bundleItem.price || 0),
|
|
457
|
+
// 新增商品运行态通常带 _bundle_product_id;订单 hydrate 后只有
|
|
458
|
+
// bundle_product_id。Change time 必须兼容两种结构,否则 bundle
|
|
459
|
+
// 子项无法命中折扣卡的 limited_relation_product_data.product_ids。
|
|
457
460
|
id: (_ref3 = (_bundleItem$bundle_pr = bundleItem.bundle_product_id) !== null && _bundleItem$bundle_pr !== void 0 ? _bundleItem$bundle_pr : bundleItem._bundle_product_id) !== null && _ref3 !== void 0 ? _ref3 : bundleItem.product_id,
|
|
458
461
|
_id: "".concat(product._id, "_bundle_").concat(bundleIndex),
|
|
459
462
|
parentId: product._id,
|
|
@@ -1095,11 +1098,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1095
1098
|
if (isPersistedProduct && hasExistingWalletDiscount) {
|
|
1096
1099
|
if (flatItem.type === 'main') {
|
|
1097
1100
|
processedProductsMap.set(product._id, [originProduct]);
|
|
1098
|
-
} else {
|
|
1099
|
-
processedFlatItemsMap.set(flatItem._id, [_objectSpread(_objectSpread({}, flatItem), {}, {
|
|
1100
|
-
processed: true
|
|
1101
|
-
})]);
|
|
1102
1101
|
}
|
|
1102
|
+
// bundle 虚拟项没有携带完整的历史价格字段。这里不写入 processed map,
|
|
1103
|
+
// 重组阶段会直接保留原始 bundleItem,避免把 bundle_selling_price
|
|
1104
|
+
// 覆盖为未折扣的 price,导致已支付金额再次进入应付。
|
|
1103
1105
|
return;
|
|
1104
1106
|
}
|
|
1105
1107
|
|
|
@@ -1440,9 +1442,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1440
1442
|
amount = productAllocation.discountAmount;
|
|
1441
1443
|
productDiscountDifference = productAllocation.difference;
|
|
1442
1444
|
mainProductSellingPrice = Math.max(new Decimal(product.price).minus(amount).toNumber(), 0);
|
|
1443
|
-
} else if (
|
|
1445
|
+
} else if (resolveReapplyBookingDiscountPercent(originProduct, _selectedDiscount) !== undefined) {
|
|
1444
1446
|
// Change time 重套编辑态折扣卡时,历史 par_value 不是运行时折扣口径,优先使用后端快照里的 percent。
|
|
1445
|
-
var percent =
|
|
1447
|
+
var percent = resolveReapplyBookingDiscountPercent(originProduct, _selectedDiscount);
|
|
1446
1448
|
reapplyDiscountPercent = new Decimal(percent).toFixed(2);
|
|
1447
1449
|
mainProductSellingPrice = new Decimal(product.price || 0).mul(new Decimal(100).minus(percent)).div(100).toDecimalPlaces(2).toNumber();
|
|
1448
1450
|
amount = new Decimal(product.price).minus(mainProductSellingPrice).toNumber();
|
|
@@ -1610,7 +1612,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1610
1612
|
}));
|
|
1611
1613
|
}
|
|
1612
1614
|
} else {
|
|
1613
|
-
var _selectedDiscount3$me, _selectedDiscount3$me2, _flatItem$parentProdu9;
|
|
1615
|
+
var _selectedDiscount3$me, _selectedDiscount3$me2, _reapplyDiscountPerce2, _flatItem$parentProdu9;
|
|
1614
1616
|
// 折扣卡:不拆分数量,直接应用
|
|
1615
1617
|
var _selectedDiscount3 = selectedDiscountCard || applicableDiscounts[0];
|
|
1616
1618
|
usedDiscounts.set(_selectedDiscount3.id, true);
|
|
@@ -1628,11 +1630,19 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1628
1630
|
var targetProductTotal;
|
|
1629
1631
|
var fixedAmountPerItem;
|
|
1630
1632
|
var _productDiscountDifference;
|
|
1633
|
+
var _reapplyDiscountPercent;
|
|
1631
1634
|
if (_isOrderLevel && _productAllocation) {
|
|
1632
1635
|
// order_level:使用预计算的单价折扣金额(已经是单价,无需再除以数量)
|
|
1633
1636
|
fixedAmountPerItem = _productAllocation.discountAmount;
|
|
1634
1637
|
_productDiscountDifference = _productAllocation.difference;
|
|
1635
1638
|
targetProductTotal = Math.max(new Decimal(_productOriginTotal).minus(fixedAmountPerItem).toNumber(), 0);
|
|
1639
|
+
} else if (resolveReapplyBookingDiscountPercent(originProduct, _selectedDiscount3) !== undefined) {
|
|
1640
|
+
// hydrate 后 par_value 可能是余额/原值(例如 3500),百分比口径以
|
|
1641
|
+
// 后端折扣快照 discount.percent 为准,与主商品重套逻辑保持一致。
|
|
1642
|
+
var _percent = resolveReapplyBookingDiscountPercent(originProduct, _selectedDiscount3);
|
|
1643
|
+
_reapplyDiscountPercent = new Decimal(_percent).toFixed(2);
|
|
1644
|
+
targetProductTotal = new Decimal(_productOriginTotal).mul(new Decimal(100).minus(_percent)).div(100).toDecimalPlaces(2).toNumber();
|
|
1645
|
+
fixedAmountPerItem = new Decimal(_productOriginTotal).minus(targetProductTotal).toNumber();
|
|
1636
1646
|
} else {
|
|
1637
1647
|
// item_level 或其他类型:使用原有逻辑
|
|
1638
1648
|
targetProductTotal = getDiscountAmount(_selectedDiscount3, _productOriginTotal, _productOriginTotal);
|
|
@@ -1653,7 +1663,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1653
1663
|
title: _selectedDiscount3.format_title,
|
|
1654
1664
|
original_amount: product.original_price,
|
|
1655
1665
|
product_id: product.id || product.product_id,
|
|
1656
|
-
percent: _selectedDiscount3.par_value,
|
|
1666
|
+
percent: (_reapplyDiscountPerce2 = _reapplyDiscountPercent) !== null && _reapplyDiscountPerce2 !== void 0 ? _reapplyDiscountPerce2 : _selectedDiscount3.par_value,
|
|
1657
1667
|
discount_product_id: _selectedDiscount3.product_id
|
|
1658
1668
|
},
|
|
1659
1669
|
metadata: _objectSpread({
|
|
@@ -87,7 +87,13 @@ function getUnitOriginalTotal(product) {
|
|
|
87
87
|
function isGeneratedVoucherProduct(product) {
|
|
88
88
|
var record = product;
|
|
89
89
|
var metadata = (record === null || record === void 0 ? void 0 : record.metadata) || {};
|
|
90
|
-
|
|
90
|
+
var isGeneratedChild = metadata.parent_order_detail_id !== undefined || metadata.gift_card_type !== undefined;
|
|
91
|
+
if (isGeneratedChild) return true;
|
|
92
|
+
|
|
93
|
+
// `product_voucher` 既可能是当前购物车生成的零价子券,也可能是独立售卖的
|
|
94
|
+
// gift card。已有 order_detail_id 且没有 parent 标记的是后者,必须继续计价。
|
|
95
|
+
var isPersisted = (record === null || record === void 0 ? void 0 : record.order_detail_id) !== undefined && (record === null || record === void 0 ? void 0 : record.order_detail_id) !== null;
|
|
96
|
+
return (record === null || record === void 0 ? void 0 : record.extension_type) === 'product_voucher' && !isPersisted;
|
|
91
97
|
}
|
|
92
98
|
function buildSurchargeServiceItems(products) {
|
|
93
99
|
return products.map(function (product) {
|
|
@@ -2,7 +2,7 @@ import { Module, ModuleOptions, PisellCore } from '../../types';
|
|
|
2
2
|
import { BaseModule } from '../../modules/BaseModule';
|
|
3
3
|
import { BaseSalesOrderProduct, BaseSalesOrderProductIdentity, BaseSalesPaymentStatus, BaseSalesUpdateOrderProductQuantityParams, BaseSalesCalculateProductBookingPriceParams, BaseSalesPriceRecalculationContextChange, BaseSalesProductBookingPriceResult, BaseSalesQuotationCustomerScopeInfo, BaseSalesScanCodeResult, BaseSalesCashPaymentConfig, BaseSalesPayCashParams, BaseSalesPayCashResult, BaseSalesCommitPaymentMethodParams, BaseSalesCommitPaymentMethodResult, BaseSalesConfirmWalletPaymentResult } from './types';
|
|
4
4
|
import { OrderModule } from '../../modules/Order';
|
|
5
|
-
import type { AddProductBookingInput, LoadSalesDetailParams, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from '../../modules/Order/types';
|
|
5
|
+
import type { AddProductBookingInput, AddProductToOrderOptions, LoadSalesDetailParams, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, OrderPaymentSource, SendCustomerPayLinkParams, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, UpdateTempOrderCustomerInput, UpdateOrderBookingParams, UpdateOrderProductParams, OrderTempOrder, OrderSummary, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions, ReplaceTempOrderOptions } from '../../modules/Order/types';
|
|
6
6
|
import type { SubmitPayloadEnhancer } from '../../modules/Order/utils';
|
|
7
7
|
import type { Discount } from '../../modules/Discount/types';
|
|
8
8
|
import { RequestPlugin, WindowPlugin } from '../../plugins';
|
|
@@ -109,6 +109,16 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
|
|
|
109
109
|
private applyQuotationScheduleResolver;
|
|
110
110
|
private loadQuotationForPriceQuery;
|
|
111
111
|
private getPriceQueryProductId;
|
|
112
|
+
/**
|
|
113
|
+
* Change Time / customer reprice 必须沿用商品列表的渠道口径。
|
|
114
|
+
* SalesSdk Provider 通常将渠道存为 platform,因此不能只读取 otherParams.channel。
|
|
115
|
+
*/
|
|
116
|
+
private getPriceQueryChannel;
|
|
117
|
+
/**
|
|
118
|
+
* /product/query 的智能定价评估只读取 strategy_context;
|
|
119
|
+
* application_code 仅作为接口兼容字段,不能替代 channel / business_code。
|
|
120
|
+
*/
|
|
121
|
+
private getPriceQueryStrategyContext;
|
|
112
122
|
private getPriceQuerySchedule;
|
|
113
123
|
private loadProductsForPriceQuery;
|
|
114
124
|
private loadProductForPriceQuery;
|
|
@@ -180,7 +190,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
|
|
|
180
190
|
/** 获取附加费用(运费/服务费/税费等)。 */
|
|
181
191
|
getSurcharges(): ISalesSurcharge[];
|
|
182
192
|
getTempOrder(): OrderTempOrder | null;
|
|
183
|
-
replaceTempOrder(tempOrder: OrderTempOrder): Promise<OrderTempOrder>;
|
|
193
|
+
replaceTempOrder(tempOrder: OrderTempOrder, options?: ReplaceTempOrderOptions): Promise<OrderTempOrder>;
|
|
184
194
|
getOrderIdentity(): import("../../modules/Order/types").OrderIdentitySnapshot | null;
|
|
185
195
|
getOrderSnapshot(): import("../../modules/Order/types").OrderSnapshot | null;
|
|
186
196
|
getOrderSyncState(): import("../../modules/Order/types").OrderSyncState;
|
|
@@ -421,7 +431,7 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
|
|
|
421
431
|
getQuotationCustomerScopeInfo(): BaseSalesQuotationCustomerScopeInfo;
|
|
422
432
|
shouldRecalculateProductBookingPricesForContextChange(params: BaseSalesPriceRecalculationContextChange): boolean;
|
|
423
433
|
calculateProductBookingPrices(paramsList: BaseSalesCalculateProductBookingPriceParams[]): Promise<BaseSalesProductBookingPriceResult[]>;
|
|
424
|
-
addProductToOrder(product: Partial<BaseSalesOrderProduct> & BaseSalesOrderProductIdentity, booking?: AddProductBookingInput): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
434
|
+
addProductToOrder(product: Partial<BaseSalesOrderProduct> & BaseSalesOrderProductIdentity, booking?: AddProductBookingInput, options?: AddProductToOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
425
435
|
updateOrderProduct(params: UpdateOrderProductParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
426
436
|
updateOrderProducts(paramsList: UpdateOrderProductParams[]): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
427
437
|
updateOrderProductQuantity(params: BaseSalesUpdateOrderProductQuantityParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
@@ -437,8 +447,8 @@ export declare class BaseSalesImpl extends BaseModule implements Module {
|
|
|
437
447
|
* @example
|
|
438
448
|
* await baseSales.removeProductsFromOrder([identityA, identityB]);
|
|
439
449
|
*/
|
|
440
|
-
removeProductsFromOrder(identities: BaseSalesOrderProductIdentity[]): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
441
|
-
removeProductFromOrder(identity: BaseSalesOrderProductIdentity): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
450
|
+
removeProductsFromOrder(identities: BaseSalesOrderProductIdentity[], options?: RemoveProductsFromOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
451
|
+
removeProductFromOrder(identity: BaseSalesOrderProductIdentity, options?: RemoveProductsFromOrderOptions): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
442
452
|
/**
|
|
443
453
|
* 注入促销评估器到底层 OrderModule。
|
|
444
454
|
*
|