@pisell/pisellos 0.0.556 → 0.0.558
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/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +49 -0
- package/dist/model/strategy/adapter/dataVariant/adapter.js +152 -0
- package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +87 -0
- package/dist/model/strategy/adapter/dataVariant/evaluator.js +755 -0
- package/dist/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
- package/dist/model/strategy/adapter/dataVariant/examples.js +277 -0
- package/dist/model/strategy/adapter/dataVariant/index.d.ts +4 -0
- package/dist/model/strategy/adapter/dataVariant/index.js +4 -0
- package/dist/model/strategy/adapter/dataVariant/type.d.ts +146 -0
- package/dist/model/strategy/adapter/dataVariant/type.js +54 -0
- package/dist/model/strategy/adapter/index.d.ts +4 -0
- package/dist/model/strategy/adapter/index.js +5 -1
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Product/index.d.ts +1 -1
- package/dist/modules/ProductList/index.d.ts +2 -1
- package/dist/modules/ProductList/index.js +21 -11
- package/dist/solution/BookingByStep/index.d.ts +2 -2
- package/dist/solution/ScanOrder/index.d.ts +2 -1
- package/dist/solution/ScanOrder/index.js +137 -117
- package/dist/solution/ScanOrder/utils.d.ts +5 -0
- package/dist/solution/ScanOrder/utils.js +55 -23
- package/dist/solution/VenueBooking/index.d.ts +22 -3
- package/dist/solution/VenueBooking/index.js +259 -166
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/dist/solution/VenueBooking/utils/dateSummary.js +12 -25
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -6
- package/dist/solution/VenueBooking/utils/slotMerge.js +3 -9
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +69 -0
- package/dist/solution/VenueBooking/utils/smartPricing.js +233 -0
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +2 -0
- package/dist/solution/VenueBooking/utils/timeSlot.js +9 -4
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -0
- package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +49 -0
- package/lib/model/strategy/adapter/dataVariant/adapter.js +139 -0
- package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +87 -0
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +564 -0
- package/lib/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
- package/lib/model/strategy/adapter/dataVariant/examples.js +293 -0
- package/lib/model/strategy/adapter/dataVariant/index.d.ts +4 -0
- package/lib/model/strategy/adapter/dataVariant/index.js +38 -0
- package/lib/model/strategy/adapter/dataVariant/type.d.ts +146 -0
- package/lib/model/strategy/adapter/dataVariant/type.js +31 -0
- package/lib/model/strategy/adapter/index.d.ts +4 -0
- package/lib/model/strategy/adapter/index.js +13 -2
- package/lib/model/strategy/adapter/promotion/index.js +49 -0
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Product/index.d.ts +1 -1
- package/lib/modules/ProductList/index.d.ts +2 -1
- package/lib/modules/ProductList/index.js +45 -40
- package/lib/solution/BookingByStep/index.d.ts +2 -2
- package/lib/solution/ScanOrder/index.d.ts +2 -1
- package/lib/solution/ScanOrder/index.js +29 -18
- package/lib/solution/ScanOrder/utils.d.ts +5 -0
- package/lib/solution/ScanOrder/utils.js +23 -0
- package/lib/solution/VenueBooking/index.d.ts +22 -3
- package/lib/solution/VenueBooking/index.js +151 -63
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/lib/solution/VenueBooking/utils/dateSummary.js +5 -10
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -6
- package/lib/solution/VenueBooking/utils/slotMerge.js +3 -4
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +69 -0
- package/lib/solution/VenueBooking/utils/smartPricing.js +180 -0
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +2 -0
- package/lib/solution/VenueBooking/utils/timeSlot.js +7 -3
- package/package.json +1 -1
|
@@ -59,7 +59,8 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
59
59
|
schedule_datetime,
|
|
60
60
|
schedule_date,
|
|
61
61
|
cacheId,
|
|
62
|
-
with_schedule
|
|
62
|
+
with_schedule,
|
|
63
|
+
with_extra = []
|
|
63
64
|
}, options) {
|
|
64
65
|
var _a;
|
|
65
66
|
let userPlugin = this.core.getPlugin("user");
|
|
@@ -69,45 +70,49 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
69
70
|
} catch (error) {
|
|
70
71
|
console.error(error);
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
73
|
+
try {
|
|
74
|
+
const productsData = await this.request.post(
|
|
75
|
+
`/product/query`,
|
|
76
|
+
{
|
|
77
|
+
open_quotation: 1,
|
|
78
|
+
open_bundle: 0,
|
|
79
|
+
exclude_extension_type: [
|
|
80
|
+
"product_party",
|
|
81
|
+
"product_event",
|
|
82
|
+
"product_series_event",
|
|
83
|
+
"product_package_ticket",
|
|
84
|
+
"ticket",
|
|
85
|
+
"event_item"
|
|
86
|
+
],
|
|
87
|
+
with: ["category", "collection", "resourceRelation", ...with_extra],
|
|
88
|
+
status: "published",
|
|
89
|
+
num: 500,
|
|
90
|
+
skip: 1,
|
|
91
|
+
customer_id,
|
|
92
|
+
category_ids,
|
|
93
|
+
ids: product_ids,
|
|
94
|
+
collection,
|
|
95
|
+
front_end_cache_id: cacheId,
|
|
96
|
+
menu_list_ids,
|
|
97
|
+
with_count,
|
|
98
|
+
// client_schedule_ids: schedule_ids,
|
|
99
|
+
schedule_date,
|
|
100
|
+
schedule_datetime,
|
|
101
|
+
// application_code: this.otherParams?.channel === 'online_store' ? 'online-store' : this.otherParams?.channel,
|
|
102
|
+
application_code: "online-store",
|
|
103
|
+
with_schedule,
|
|
104
|
+
is_eject: 1,
|
|
105
|
+
open_deposit: 1
|
|
106
|
+
},
|
|
107
|
+
{ osServer: true, callback: options == null ? void 0 : options.callback, subscriberId: options == null ? void 0 : options.subscriberId, useCache: true, customToast: () => {
|
|
108
|
+
} }
|
|
109
|
+
);
|
|
110
|
+
const sortedList = (productsData.data.list || []).slice().sort((a, b) => Number(b.sort) - Number(a.sort));
|
|
111
|
+
this.addProduct(sortedList);
|
|
112
|
+
return sortedList;
|
|
113
|
+
} catch (error) {
|
|
114
|
+
return error;
|
|
115
|
+
}
|
|
111
116
|
}
|
|
112
117
|
async loadProductsPrice({
|
|
113
118
|
ids = [],
|
|
@@ -326,7 +326,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
326
326
|
date: string;
|
|
327
327
|
status: string;
|
|
328
328
|
week: string;
|
|
329
|
-
weekNum: 0 |
|
|
329
|
+
weekNum: 0 | 2 | 1 | 3 | 4 | 5 | 6;
|
|
330
330
|
}[]>;
|
|
331
331
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
332
332
|
private getScheduleDataByIds;
|
|
@@ -373,7 +373,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
373
373
|
};
|
|
374
374
|
setOtherData(key: string, value: any): void;
|
|
375
375
|
getOtherData(key: string): any;
|
|
376
|
-
getProductTypeById(id: number): Promise<"
|
|
376
|
+
getProductTypeById(id: number): Promise<"duration" | "session" | "normal">;
|
|
377
377
|
/**
|
|
378
378
|
* 提供给 UI 的方法,减轻 UI 层的计算压力,UI 层只需要传递 cartItemId 和 resourceCode 即返回对应的 renderList
|
|
379
379
|
*
|
|
@@ -72,7 +72,7 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
72
72
|
getTempOrder(): ScanOrderTempOrder | null;
|
|
73
73
|
updateTempOrderNote(note: string): string;
|
|
74
74
|
setPickupReferenceMode(mode: 'counter_pickup' | 'table_service'): {
|
|
75
|
-
service_type: 'dine_in';
|
|
75
|
+
service_type: 'dine_in' | '';
|
|
76
76
|
pickup_reference_mode: 'counter_pickup' | 'table_service';
|
|
77
77
|
};
|
|
78
78
|
setPickupRef(buzzer: string): string;
|
|
@@ -121,6 +121,7 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
121
121
|
private fetchResourceOccupyDetailsByResourceId;
|
|
122
122
|
private resolveAdditionalOrderFromOccupyDetail;
|
|
123
123
|
checkResourceAvailable(resourceId?: string | null, hasOrderId?: boolean): Promise<ScanOrderAvailabilityInfo>;
|
|
124
|
+
restorePreviousOrderData(): Promise<void>;
|
|
124
125
|
getAdditionalOrderInfo(): Promise<{
|
|
125
126
|
orderId: string;
|
|
126
127
|
orderStatus: 'pending' | 'processing' | 'completed' | 'cancelled';
|
|
@@ -553,6 +553,7 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
553
553
|
// 存储 UI 层选择的取餐方式到 tempOrder.metadata.shop_service_data
|
|
554
554
|
// service_type 在扫码点餐场景固定为 dine_in
|
|
555
555
|
setPickupReferenceMode(mode) {
|
|
556
|
+
var _a;
|
|
556
557
|
this.logMethodStart("setPickupReferenceMode", { mode });
|
|
557
558
|
try {
|
|
558
559
|
if (!this.store.order)
|
|
@@ -562,7 +563,7 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
562
563
|
...tempOrder.metadata || {},
|
|
563
564
|
shop_service_data: {
|
|
564
565
|
...(tempOrder.metadata || {}).shop_service_data || {},
|
|
565
|
-
service_type: "dine_in",
|
|
566
|
+
service_type: ((_a = this.otherParams) == null ? void 0 : _a.businessCode) === "dine_in" ? "dine_in" : "",
|
|
566
567
|
pickup_reference_mode: mode
|
|
567
568
|
}
|
|
568
569
|
};
|
|
@@ -1601,7 +1602,7 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
1601
1602
|
// 通过 resource_id + 店铺配置
|
|
1602
1603
|
// hasOrderId 表示 url 上是否有 orderid,如果是的话,后续的流程会走加单
|
|
1603
1604
|
async checkResourceAvailable(resourceId, hasOrderId = false) {
|
|
1604
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l
|
|
1605
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
1605
1606
|
const normalizedResourceId = String(resourceId ?? "").trim();
|
|
1606
1607
|
this.logMethodStart("checkResourceAvailable", {
|
|
1607
1608
|
resourceId: normalizedResourceId
|
|
@@ -1693,14 +1694,19 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
1693
1694
|
cacheId: this.cacheId
|
|
1694
1695
|
});
|
|
1695
1696
|
if (Array.isArray(loaded)) {
|
|
1696
|
-
|
|
1697
|
-
|
|
1697
|
+
const matchedRuleProduct = (0, import_utils.findReservationRuleProductByResourceId)(
|
|
1698
|
+
loaded,
|
|
1699
|
+
normalizedResourceId
|
|
1700
|
+
);
|
|
1701
|
+
const ruleProductsForResource = matchedRuleProduct ? [matchedRuleProduct] : [];
|
|
1702
|
+
this.enabledReservationRuleProducts = ruleProductsForResource;
|
|
1703
|
+
const occupancyMinutes = (0, import_utils.pickFirstDurationMinutesFromProducts)(ruleProductsForResource);
|
|
1698
1704
|
if (occupancyMinutes !== void 0) {
|
|
1699
1705
|
tempOrder.metadata.table_occupancy_duration = occupancyMinutes;
|
|
1700
1706
|
}
|
|
1701
|
-
if ((0, import_utils.hasCustomCapacityProduct)(
|
|
1707
|
+
if ((0, import_utils.hasCustomCapacityProduct)(ruleProductsForResource)) {
|
|
1702
1708
|
pendingRequestEntryPax = 1;
|
|
1703
|
-
const paxBounds = (0, import_utils.pickFirstCustomCapacityPaxBounds)(
|
|
1709
|
+
const paxBounds = (0, import_utils.pickFirstCustomCapacityPaxBounds)(ruleProductsForResource);
|
|
1704
1710
|
if ((paxBounds == null ? void 0 : paxBounds.min) !== void 0)
|
|
1705
1711
|
pendingRequestPaxMin = paxBounds.min;
|
|
1706
1712
|
if ((paxBounds == null ? void 0 : paxBounds.max) !== void 0)
|
|
@@ -1799,17 +1805,7 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
1799
1805
|
if (isAdditionalOrderMode) {
|
|
1800
1806
|
tempOrder.order_id = additionalOrderId;
|
|
1801
1807
|
}
|
|
1802
|
-
|
|
1803
|
-
const res = await ((_j = this.store.order) == null ? void 0 : _j.getOrderInfoByRemote(tempOrder.order_id));
|
|
1804
|
-
const entryPaxNumber = (_n = (_m = (_l = (_k = res == null ? void 0 : res.data) == null ? void 0 : _k.bookings) == null ? void 0 : _l.find((p) => {
|
|
1805
|
-
var _a2;
|
|
1806
|
-
return (_a2 = p.metadata) == null ? void 0 : _a2.collect_pax;
|
|
1807
|
-
})) == null ? void 0 : _m.metadata) == null ? void 0 : _n.collect_pax;
|
|
1808
|
-
if (entryPaxNumber) {
|
|
1809
|
-
await this.setEntryPaxNumber(entryPaxNumber);
|
|
1810
|
-
}
|
|
1811
|
-
}
|
|
1812
|
-
const lastOrderInfo = (_p = (_o = this.store.order) == null ? void 0 : _o.getLastOrderInfo) == null ? void 0 : _p.call(_o);
|
|
1808
|
+
const lastOrderInfo = (_k = (_j = this.store.order) == null ? void 0 : _j.getLastOrderInfo) == null ? void 0 : _k.call(_j);
|
|
1813
1809
|
const historicalItems = isAdditionalOrderMode && Array.isArray(lastOrderInfo == null ? void 0 : lastOrderInfo.products) ? lastOrderInfo.products.reduce((acc, p) => {
|
|
1814
1810
|
if (typeof (p == null ? void 0 : p.product_id) !== "number")
|
|
1815
1811
|
return acc;
|
|
@@ -1821,7 +1817,7 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
1821
1817
|
return acc;
|
|
1822
1818
|
}, []) : [];
|
|
1823
1819
|
await this.setItemRuleRuntimeConfig({
|
|
1824
|
-
serviceType: (
|
|
1820
|
+
serviceType: (_l = this.otherParams) == null ? void 0 : _l.businessCode,
|
|
1825
1821
|
submissionIndex: isAdditionalOrderMode ? 1 : 0,
|
|
1826
1822
|
historicalItems
|
|
1827
1823
|
});
|
|
@@ -1851,6 +1847,21 @@ var _ScanOrderImpl = class extends import_BaseModule.BaseModule {
|
|
|
1851
1847
|
throw error;
|
|
1852
1848
|
}
|
|
1853
1849
|
}
|
|
1850
|
+
// 恢复之前订单的数据,读取 entrypax
|
|
1851
|
+
async restorePreviousOrderData() {
|
|
1852
|
+
var _a, _b, _c, _d, _e;
|
|
1853
|
+
const tempOrder = this.ensureTempOrder();
|
|
1854
|
+
if (tempOrder.order_id) {
|
|
1855
|
+
const res = await ((_a = this.store.order) == null ? void 0 : _a.getOrderInfoByRemote(tempOrder.order_id));
|
|
1856
|
+
const entryPaxNumber = (_e = (_d = (_c = (_b = res == null ? void 0 : res.data) == null ? void 0 : _b.bookings) == null ? void 0 : _c.find((p) => {
|
|
1857
|
+
var _a2;
|
|
1858
|
+
return (_a2 = p.metadata) == null ? void 0 : _a2.collect_pax;
|
|
1859
|
+
})) == null ? void 0 : _d.metadata) == null ? void 0 : _e.collect_pax;
|
|
1860
|
+
if (entryPaxNumber) {
|
|
1861
|
+
await this.setEntryPaxNumber(entryPaxNumber);
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1854
1865
|
// 如果是加单的情况,提供返回当前订单相关信息的能力
|
|
1855
1866
|
async getAdditionalOrderInfo() {
|
|
1856
1867
|
this.logMethodStart("getAdditionalOrderInfo");
|
|
@@ -134,6 +134,11 @@ export declare function normalizeOrderProduct(product: Partial<ScanOrderOrderPro
|
|
|
134
134
|
* 从 reservation.enabled_reservation_rules 中收集 type=link 的商品 id。
|
|
135
135
|
*/
|
|
136
136
|
export declare function collectLinkProductIdsFromReservationRules(rules: unknown): number[];
|
|
137
|
+
/**
|
|
138
|
+
* 找到第一个归属指定桌台的预约规则商品。
|
|
139
|
+
* 归属判断基于商品资源中的 default_resource / optional_resource。
|
|
140
|
+
*/
|
|
141
|
+
export declare function findReservationRuleProductByResourceId(products: ProductData[], resourceId: string | number | null | undefined): ProductData | undefined;
|
|
137
142
|
/**
|
|
138
143
|
* 返回列表中第一个带有效 duration.value(分钟)的商品时长。
|
|
139
144
|
*/
|
|
@@ -39,6 +39,7 @@ __export(utils_exports, {
|
|
|
39
39
|
computeResourceIsFull: () => computeResourceIsFull,
|
|
40
40
|
createEmptySummary: () => createEmptySummary,
|
|
41
41
|
extractStrategyModelIdsFromTableConfig: () => extractStrategyModelIdsFromTableConfig,
|
|
42
|
+
findReservationRuleProductByResourceId: () => findReservationRuleProductByResourceId,
|
|
42
43
|
getProductIdentityIndex: () => getProductIdentityIndex,
|
|
43
44
|
getSafeProductNum: () => getSafeProductNum,
|
|
44
45
|
getTopLevelProductId: () => getTopLevelProductId,
|
|
@@ -510,6 +511,27 @@ function collectLinkProductIdsFromReservationRules(rules) {
|
|
|
510
511
|
}
|
|
511
512
|
return [...new Set(ids)];
|
|
512
513
|
}
|
|
514
|
+
function findReservationRuleProductByResourceId(products, resourceId) {
|
|
515
|
+
var _a;
|
|
516
|
+
const numericResourceId = Number(resourceId);
|
|
517
|
+
if (!Number.isFinite(numericResourceId) || numericResourceId <= 0)
|
|
518
|
+
return void 0;
|
|
519
|
+
for (const product of products) {
|
|
520
|
+
const resources = (_a = product == null ? void 0 : product.product_resource) == null ? void 0 : _a.resources;
|
|
521
|
+
if (!Array.isArray(resources))
|
|
522
|
+
continue;
|
|
523
|
+
const hasMatchedResource = resources.some((resource) => {
|
|
524
|
+
const defaultResources = Array.isArray(resource == null ? void 0 : resource.default_resource) ? resource.default_resource : [];
|
|
525
|
+
const optionalResources = Array.isArray(resource == null ? void 0 : resource.optional_resource) ? resource.optional_resource : [];
|
|
526
|
+
return [...defaultResources, ...optionalResources].some(
|
|
527
|
+
(id) => Number(id) === numericResourceId
|
|
528
|
+
);
|
|
529
|
+
});
|
|
530
|
+
if (hasMatchedResource)
|
|
531
|
+
return product;
|
|
532
|
+
}
|
|
533
|
+
return void 0;
|
|
534
|
+
}
|
|
513
535
|
function pickFirstDurationMinutesFromProducts(products) {
|
|
514
536
|
var _a;
|
|
515
537
|
for (const product of products) {
|
|
@@ -613,6 +635,7 @@ function pickFirstCustomCapacityDimensionId(products) {
|
|
|
613
635
|
computeResourceIsFull,
|
|
614
636
|
createEmptySummary,
|
|
615
637
|
extractStrategyModelIdsFromTableConfig,
|
|
638
|
+
findReservationRuleProductByResourceId,
|
|
616
639
|
getProductIdentityIndex,
|
|
617
640
|
getSafeProductNum,
|
|
618
641
|
getTopLevelProductId,
|
|
@@ -3,6 +3,7 @@ import { BaseModule } from '../../modules/BaseModule';
|
|
|
3
3
|
import { VenueBookingAddLogParams, VenueBookingSlotConfig, VenueDateSummaryItem, VenueSlotSelection, VenueTimeSlotGrid } from './types';
|
|
4
4
|
import type { ScanOrderOrderProduct, ScanOrderOrderProductIdentity } from '../ScanOrder/types';
|
|
5
5
|
import type { UpdateProductInOrderParams } from '../../modules/Order/types';
|
|
6
|
+
import type { ScheduleItem } from '../../modules/Schedule/types';
|
|
6
7
|
import type { OpenDataAvailabilityResult } from '../../modules/OpenData';
|
|
7
8
|
import type { ProductData } from '../../modules/Product/types';
|
|
8
9
|
import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
|
|
@@ -41,6 +42,10 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
41
42
|
private productsLoaded;
|
|
42
43
|
private loadOpenDataConfigInFlight;
|
|
43
44
|
private static readonly OPEN_DATA_CACHE_TTL;
|
|
45
|
+
/** 按日期缓存 slot 智能定价 Map,避免同周重复 resolveProducts */
|
|
46
|
+
private slotPriceMapCache;
|
|
47
|
+
/** loadProducts 后缓存的全量商品(venue + addon),供分段算价复用 */
|
|
48
|
+
private smartPricingProductCatalog;
|
|
44
49
|
private getLoggerContext;
|
|
45
50
|
private safeStringify;
|
|
46
51
|
private pickErrorMessage;
|
|
@@ -75,6 +80,21 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
75
80
|
passed: boolean | null;
|
|
76
81
|
failures: QuantityCheckResult[];
|
|
77
82
|
};
|
|
83
|
+
/** 清除 slot 价格分段缓存(商品重载 / 登录后 customerId 变化时调用) */
|
|
84
|
+
private clearSlotPriceMapCache;
|
|
85
|
+
/** 读取当前登录 customerId */
|
|
86
|
+
private resolveCustomerIdForSmartPricing;
|
|
87
|
+
/** 读取 schedule 全量列表,供智能定价 schedule_match 使用 */
|
|
88
|
+
private getScheduleListForSmartPricing;
|
|
89
|
+
/** 构建智能定价上下文,对齐 OS Server buildProductFormatterContext */
|
|
90
|
+
private buildSmartPricingContext;
|
|
91
|
+
/** venue + addon 全量商品,供智能定价评估 */
|
|
92
|
+
private getAllProductsForSmartPricing;
|
|
93
|
+
private getSlotPriceMapCacheKey;
|
|
94
|
+
/**
|
|
95
|
+
* 按 schedule 分段构建 slot 价格 Map,带实例级缓存。
|
|
96
|
+
*/
|
|
97
|
+
private buildSlotPriceMapForDate;
|
|
78
98
|
loadAllProducts(): Promise<{
|
|
79
99
|
venueProducts: ProductData[];
|
|
80
100
|
addonProducts: ProductData[];
|
|
@@ -147,8 +167,7 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
147
167
|
setSlotConfig(config: Partial<VenueBookingSlotConfig>): void;
|
|
148
168
|
getSlotConfig(): VenueBookingSlotConfig;
|
|
149
169
|
loadSchedules(): Promise<void>;
|
|
150
|
-
|
|
151
|
-
getScheduleListByIds(ids: number[]): import("../../server").ScheduleItem[];
|
|
170
|
+
getScheduleListByIds(ids: number[]): ScheduleItem[];
|
|
152
171
|
getTempOrder(): import("./types").ScanOrderTempOrder | null;
|
|
153
172
|
updateTempOrderNote(note: string): string;
|
|
154
173
|
updateTempOrderContactsInfo(contactsInfo: any[]): any[];
|
|
@@ -156,7 +175,7 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
156
175
|
onCustomerLogin(params: {
|
|
157
176
|
customerId: number;
|
|
158
177
|
}): Promise<void>;
|
|
159
|
-
private
|
|
178
|
+
private recalculateOrderPricesFromSmartPricing;
|
|
160
179
|
scanCode(code: string, customerId?: number): Promise<{
|
|
161
180
|
isAvailable: boolean;
|
|
162
181
|
discountList: import("../../modules/Discount").Discount[];
|