@pisell/pisellos 2.2.259 → 2.2.260
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/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 +282 -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/BookingContext/utils/buildCacheItemFromOrderLine.js +13 -17
- package/dist/modules/Order/index.d.ts +1 -32
- package/dist/modules/Order/index.js +288 -615
- package/dist/modules/Order/types.d.ts +2 -20
- package/dist/modules/Order/utils.d.ts +0 -4
- package/dist/modules/Order/utils.js +28 -114
- package/dist/modules/Product/index.d.ts +1 -1
- package/dist/modules/Product/types.d.ts +22 -0
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +4 -2
- package/dist/modules/ProductList/types.d.ts +2 -0
- package/dist/modules/Rules/index.d.ts +3 -3
- package/dist/modules/Rules/index.js +3 -8
- package/dist/modules/Rules/types.d.ts +1 -2
- package/dist/modules/SalesSummary/index.d.ts +3 -7
- package/dist/modules/SalesSummary/index.js +39 -67
- package/dist/modules/SalesSummary/types.d.ts +0 -1
- package/dist/modules/SalesSummary/utils.js +1 -2
- package/dist/modules/SurchargeList/index.d.ts +4 -6
- package/dist/modules/SurchargeList/index.js +39 -62
- package/dist/modules/SurchargeList/types.d.ts +2 -6
- package/dist/server/index.d.ts +50 -3
- package/dist/server/index.js +1040 -1075
- package/dist/server/modules/order/index.d.ts +3 -22
- package/dist/server/modules/order/index.js +316 -398
- package/dist/server/modules/products/index.d.ts +26 -7
- package/dist/server/modules/products/index.js +166 -76
- package/dist/server/modules/products/types.d.ts +14 -0
- package/dist/solution/BaseSales/index.d.ts +2 -22
- package/dist/solution/BaseSales/index.js +701 -995
- package/dist/solution/BaseSales/types.d.ts +0 -1
- package/dist/solution/BaseSales/types.js +1 -2
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +3 -6
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +0 -8
- package/dist/solution/BookingTicket/index.js +6 -153
- package/dist/solution/BookingTicket/types.d.ts +2 -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 +295 -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/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +1 -11
- package/lib/modules/Order/index.d.ts +1 -32
- package/lib/modules/Order/index.js +64 -402
- package/lib/modules/Order/types.d.ts +2 -20
- package/lib/modules/Order/utils.d.ts +0 -4
- package/lib/modules/Order/utils.js +2 -84
- package/lib/modules/Product/index.d.ts +1 -1
- package/lib/modules/Product/types.d.ts +22 -0
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +4 -2
- package/lib/modules/ProductList/types.d.ts +2 -0
- package/lib/modules/Rules/index.d.ts +3 -3
- package/lib/modules/Rules/index.js +3 -4
- package/lib/modules/Rules/types.d.ts +1 -2
- package/lib/modules/SalesSummary/index.d.ts +3 -7
- package/lib/modules/SalesSummary/index.js +11 -28
- package/lib/modules/SalesSummary/types.d.ts +0 -1
- package/lib/modules/SalesSummary/utils.js +0 -2
- package/lib/modules/SurchargeList/index.d.ts +4 -6
- package/lib/modules/SurchargeList/index.js +21 -41
- package/lib/modules/SurchargeList/types.d.ts +2 -6
- package/lib/server/index.d.ts +50 -3
- package/lib/server/index.js +215 -244
- package/lib/server/modules/order/index.d.ts +3 -22
- package/lib/server/modules/order/index.js +53 -103
- package/lib/server/modules/products/index.d.ts +26 -7
- package/lib/server/modules/products/index.js +113 -35
- package/lib/server/modules/products/types.d.ts +14 -0
- package/lib/solution/BaseSales/index.d.ts +2 -22
- package/lib/solution/BaseSales/index.js +60 -246
- package/lib/solution/BaseSales/types.d.ts +0 -1
- package/lib/solution/BaseSales/types.js +1 -2
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +6 -6
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +0 -8
- package/lib/solution/BookingTicket/index.js +0 -101
- package/lib/solution/BookingTicket/types.d.ts +2 -0
- package/package.json +1 -1
- package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +0 -5
- package/dist/modules/Order/utils/bundleDiscountHydration.js +0 -144
- package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +0 -5
- package/lib/modules/Order/utils/bundleDiscountHydration.js +0 -139
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/model/strategy/adapter/dataVariant/examples.ts
|
|
20
|
+
var examples_exports = {};
|
|
21
|
+
__export(examples_exports, {
|
|
22
|
+
CUSTOMER_SCOPE_PRICE_STRATEGY: () => CUSTOMER_SCOPE_PRICE_STRATEGY,
|
|
23
|
+
DATA_VARIANT_EXAMPLE_MENUS: () => DATA_VARIANT_EXAMPLE_MENUS,
|
|
24
|
+
DATA_VARIANT_EXAMPLE_PRODUCTS: () => DATA_VARIANT_EXAMPLE_PRODUCTS,
|
|
25
|
+
DATA_VARIANT_EXAMPLE_SCHEDULES: () => DATA_VARIANT_EXAMPLE_SCHEDULES,
|
|
26
|
+
EVENING_MENU_PRICE_STRATEGY: () => EVENING_MENU_PRICE_STRATEGY,
|
|
27
|
+
VIP_PRODUCT_PRICE_STRATEGY: () => VIP_PRODUCT_PRICE_STRATEGY,
|
|
28
|
+
createExampleDataVariant: () => createExampleDataVariant,
|
|
29
|
+
runCustomerScopeDataVariantDemo: () => runCustomerScopeDataVariantDemo,
|
|
30
|
+
runDataVariantDemo: () => runDataVariantDemo
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(examples_exports);
|
|
33
|
+
var import_evaluator = require("./evaluator");
|
|
34
|
+
var import_type = require("./type");
|
|
35
|
+
function createExampleDataVariant(ruleId, data, overrides) {
|
|
36
|
+
return {
|
|
37
|
+
id: (overrides == null ? void 0 : overrides.id) ?? 1,
|
|
38
|
+
shop_id: (overrides == null ? void 0 : overrides.shop_id) ?? 9,
|
|
39
|
+
module: (overrides == null ? void 0 : overrides.module) ?? "product",
|
|
40
|
+
module_data_id: (overrides == null ? void 0 : overrides.module_data_id) ?? 61416,
|
|
41
|
+
data_variant_rule_id: ruleId,
|
|
42
|
+
data,
|
|
43
|
+
created_at: (overrides == null ? void 0 : overrides.created_at) ?? null,
|
|
44
|
+
updated_at: (overrides == null ? void 0 : overrides.updated_at) ?? null,
|
|
45
|
+
deleted_at: (overrides == null ? void 0 : overrides.deleted_at) ?? null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
var EVENING_MENU_PRICE_STRATEGY = {
|
|
49
|
+
metadata: {
|
|
50
|
+
id: "1",
|
|
51
|
+
type: "data_variant",
|
|
52
|
+
name: {
|
|
53
|
+
"zh-CN": "晚场餐牌价",
|
|
54
|
+
en: "Evening menu price"
|
|
55
|
+
},
|
|
56
|
+
custom: {
|
|
57
|
+
module: "product",
|
|
58
|
+
priority: 100,
|
|
59
|
+
status: "active",
|
|
60
|
+
updated_at: "2026-06-26 12:00:00"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
conditions: {
|
|
64
|
+
operator: "and",
|
|
65
|
+
rules: [
|
|
66
|
+
{
|
|
67
|
+
type: "operator",
|
|
68
|
+
field: "schedule",
|
|
69
|
+
operator: "schedule_match",
|
|
70
|
+
value: [1042]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: "operator",
|
|
74
|
+
field: "product",
|
|
75
|
+
operator: "menu_match",
|
|
76
|
+
value: [43209]
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
actionIds: ["apply_data_variant"]
|
|
80
|
+
},
|
|
81
|
+
actions: [
|
|
82
|
+
{
|
|
83
|
+
id: "apply_data_variant",
|
|
84
|
+
type: import_type.DATA_VARIANT_ACTION_TYPES.APPLY,
|
|
85
|
+
target: "product",
|
|
86
|
+
value: null,
|
|
87
|
+
priority: 100
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
};
|
|
91
|
+
var VIP_PRODUCT_PRICE_STRATEGY = {
|
|
92
|
+
metadata: {
|
|
93
|
+
id: "2",
|
|
94
|
+
type: "data_variant",
|
|
95
|
+
name: {
|
|
96
|
+
"zh-CN": "VIP 商品价",
|
|
97
|
+
en: "VIP product price"
|
|
98
|
+
},
|
|
99
|
+
custom: {
|
|
100
|
+
module: "product",
|
|
101
|
+
priority: 200,
|
|
102
|
+
status: "active",
|
|
103
|
+
updated_at: "2026-06-26 13:00:00"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
conditions: {
|
|
107
|
+
operator: "and",
|
|
108
|
+
rules: [
|
|
109
|
+
{
|
|
110
|
+
type: "operator",
|
|
111
|
+
field: "productIdAndVariantId",
|
|
112
|
+
operator: "product_match",
|
|
113
|
+
value: [{ product_id: 2001, product_variant_id: 0 }]
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
actionIds: ["apply_data_variant"]
|
|
117
|
+
},
|
|
118
|
+
actions: [
|
|
119
|
+
{
|
|
120
|
+
id: "apply_data_variant",
|
|
121
|
+
type: import_type.DATA_VARIANT_ACTION_TYPES.APPLY,
|
|
122
|
+
target: "product",
|
|
123
|
+
value: null,
|
|
124
|
+
priority: 200
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
};
|
|
128
|
+
var CUSTOMER_SCOPE_PRICE_STRATEGY = {
|
|
129
|
+
metadata: {
|
|
130
|
+
id: "3",
|
|
131
|
+
type: "data_variant",
|
|
132
|
+
name: {
|
|
133
|
+
"zh-CN": "指定客户渠道业务价",
|
|
134
|
+
en: "Scoped customer channel business price"
|
|
135
|
+
},
|
|
136
|
+
custom: {
|
|
137
|
+
module: "product",
|
|
138
|
+
priority: 150,
|
|
139
|
+
status: "active",
|
|
140
|
+
updated_at: "2026-06-26 14:00:00"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
conditions: {
|
|
144
|
+
operator: "and",
|
|
145
|
+
rules: [
|
|
146
|
+
{
|
|
147
|
+
type: "operator",
|
|
148
|
+
field: "customer_id",
|
|
149
|
+
operator: "in",
|
|
150
|
+
value: [333, 444]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: "operator",
|
|
154
|
+
field: "channel",
|
|
155
|
+
operator: "in",
|
|
156
|
+
value: ["pos", "online"]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: "operator",
|
|
160
|
+
field: "business_code",
|
|
161
|
+
operator: "in",
|
|
162
|
+
value: ["venue", "retail"]
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
actionIds: ["apply_data_variant"]
|
|
166
|
+
},
|
|
167
|
+
actions: [
|
|
168
|
+
{
|
|
169
|
+
id: "apply_data_variant",
|
|
170
|
+
type: import_type.DATA_VARIANT_ACTION_TYPES.APPLY,
|
|
171
|
+
target: "product",
|
|
172
|
+
value: null,
|
|
173
|
+
priority: 150
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
};
|
|
177
|
+
var DATA_VARIANT_EXAMPLE_SCHEDULES = [
|
|
178
|
+
{
|
|
179
|
+
id: 1042,
|
|
180
|
+
name: "晚场 17~20",
|
|
181
|
+
color: "#1890ff",
|
|
182
|
+
start_time: "2026-06-26 17:00:00",
|
|
183
|
+
end_time: "2026-06-26 20:00:00",
|
|
184
|
+
repeat_type: "none",
|
|
185
|
+
repeat_rule: {
|
|
186
|
+
end: { type: "never", end_date: null, occurrence: null },
|
|
187
|
+
frequency: 1,
|
|
188
|
+
excluded_date: [],
|
|
189
|
+
included_date: [],
|
|
190
|
+
frequency_date: []
|
|
191
|
+
},
|
|
192
|
+
type: "standard",
|
|
193
|
+
time_slot: [],
|
|
194
|
+
designation: [],
|
|
195
|
+
is_all: 0,
|
|
196
|
+
created_at: "2026-06-26 00:00:00",
|
|
197
|
+
updated_at: "2026-06-26 00:00:00",
|
|
198
|
+
order_count: 0,
|
|
199
|
+
relation_count: 0
|
|
200
|
+
}
|
|
201
|
+
];
|
|
202
|
+
var DATA_VARIANT_EXAMPLE_MENUS = [
|
|
203
|
+
{
|
|
204
|
+
form_record_id: 43209,
|
|
205
|
+
name: "kiosk餐牌1 17~20",
|
|
206
|
+
status: "valid",
|
|
207
|
+
schedule: [1042],
|
|
208
|
+
partyroom_package: {
|
|
209
|
+
type: "product_collection",
|
|
210
|
+
products: [
|
|
211
|
+
{
|
|
212
|
+
product_collection_id: 128,
|
|
213
|
+
product_id: 0,
|
|
214
|
+
product_variant_id: 0
|
|
215
|
+
}
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
];
|
|
220
|
+
var DATA_VARIANT_EXAMPLE_PRODUCTS = [
|
|
221
|
+
{
|
|
222
|
+
id: 2001,
|
|
223
|
+
title: "入场票",
|
|
224
|
+
price: 100,
|
|
225
|
+
stock: 50,
|
|
226
|
+
collection: [{ id: 128, title: "Tickets" }],
|
|
227
|
+
data_variants: [
|
|
228
|
+
createExampleDataVariant(1, { price: 80, stock: 20 }, {
|
|
229
|
+
id: 1,
|
|
230
|
+
module_data_id: 2001
|
|
231
|
+
}),
|
|
232
|
+
createExampleDataVariant(2, { price: 70, title: "VIP专属票" }, {
|
|
233
|
+
id: 2,
|
|
234
|
+
module_data_id: 2001
|
|
235
|
+
}),
|
|
236
|
+
createExampleDataVariant(3, { price: 65, title: "VIP渠道价" }, {
|
|
237
|
+
id: 4,
|
|
238
|
+
module_data_id: 2001
|
|
239
|
+
})
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: 2002,
|
|
244
|
+
title: "普通票",
|
|
245
|
+
price: 100,
|
|
246
|
+
stock: 50,
|
|
247
|
+
collection: [{ id: 999, title: "Other" }],
|
|
248
|
+
data_variants: [
|
|
249
|
+
createExampleDataVariant(1, { price: 80, stock: 20 }, {
|
|
250
|
+
id: 3,
|
|
251
|
+
module_data_id: 2002
|
|
252
|
+
})
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
];
|
|
256
|
+
function runDataVariantDemo() {
|
|
257
|
+
const evaluator = new import_evaluator.DataVariantEvaluator();
|
|
258
|
+
evaluator.setStrategyConfigs([
|
|
259
|
+
EVENING_MENU_PRICE_STRATEGY,
|
|
260
|
+
VIP_PRODUCT_PRICE_STRATEGY
|
|
261
|
+
]);
|
|
262
|
+
const businessData = {
|
|
263
|
+
products: DATA_VARIANT_EXAMPLE_PRODUCTS,
|
|
264
|
+
scheduleDateTime: "2026-06-26 18:00:00",
|
|
265
|
+
scheduleList: DATA_VARIANT_EXAMPLE_SCHEDULES,
|
|
266
|
+
menuList: DATA_VARIANT_EXAMPLE_MENUS,
|
|
267
|
+
orderType: "booking"
|
|
268
|
+
};
|
|
269
|
+
return evaluator.resolveProducts(businessData);
|
|
270
|
+
}
|
|
271
|
+
function runCustomerScopeDataVariantDemo() {
|
|
272
|
+
const evaluator = new import_evaluator.DataVariantEvaluator();
|
|
273
|
+
evaluator.setStrategyConfigs([CUSTOMER_SCOPE_PRICE_STRATEGY]);
|
|
274
|
+
const businessData = {
|
|
275
|
+
products: [DATA_VARIANT_EXAMPLE_PRODUCTS[0]],
|
|
276
|
+
customerId: 333,
|
|
277
|
+
channel: "pos",
|
|
278
|
+
businessCode: "venue"
|
|
279
|
+
};
|
|
280
|
+
return evaluator.resolveProducts(businessData);
|
|
281
|
+
}
|
|
282
|
+
window.runDataVariantDemo = runDataVariantDemo;
|
|
283
|
+
window.runCustomerScopeDataVariantDemo = runCustomerScopeDataVariantDemo;
|
|
284
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
285
|
+
0 && (module.exports = {
|
|
286
|
+
CUSTOMER_SCOPE_PRICE_STRATEGY,
|
|
287
|
+
DATA_VARIANT_EXAMPLE_MENUS,
|
|
288
|
+
DATA_VARIANT_EXAMPLE_PRODUCTS,
|
|
289
|
+
DATA_VARIANT_EXAMPLE_SCHEDULES,
|
|
290
|
+
EVENING_MENU_PRICE_STRATEGY,
|
|
291
|
+
VIP_PRODUCT_PRICE_STRATEGY,
|
|
292
|
+
createExampleDataVariant,
|
|
293
|
+
runCustomerScopeDataVariantDemo,
|
|
294
|
+
runDataVariantDemo
|
|
295
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/model/strategy/adapter/dataVariant/index.ts
|
|
21
|
+
var dataVariant_exports = {};
|
|
22
|
+
__export(dataVariant_exports, {
|
|
23
|
+
DataVariantAdapter: () => import_adapter.DataVariantAdapter,
|
|
24
|
+
DataVariantEvaluator: () => import_evaluator.DataVariantEvaluator,
|
|
25
|
+
runDataVariantDemo: () => import_examples.runDataVariantDemo
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(dataVariant_exports);
|
|
28
|
+
var import_adapter = require("./adapter");
|
|
29
|
+
var import_evaluator = require("./evaluator");
|
|
30
|
+
var import_examples = require("./examples");
|
|
31
|
+
__reExport(dataVariant_exports, require("./type"), module.exports);
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
DataVariantAdapter,
|
|
35
|
+
DataVariantEvaluator,
|
|
36
|
+
runDataVariantDemo,
|
|
37
|
+
...require("./type")
|
|
38
|
+
});
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { ConditionRule, EvaluationResult, StrategyConfig } from '../../type';
|
|
2
|
+
import type { ScheduleItem } from '../../../../modules/Schedule/types';
|
|
3
|
+
/**
|
|
4
|
+
* Data Variant 动作类型。
|
|
5
|
+
*
|
|
6
|
+
* 当前阶段动作只用于标识“该策略可应用 data variant 覆盖”,真实覆盖数据来自商品 data_variants。
|
|
7
|
+
*/
|
|
8
|
+
export declare const DATA_VARIANT_ACTION_TYPES: {
|
|
9
|
+
readonly APPLY: "DATA_VARIANT_APPLY";
|
|
10
|
+
};
|
|
11
|
+
export type DataVariantActionType = (typeof DATA_VARIANT_ACTION_TYPES)[keyof typeof DATA_VARIANT_ACTION_TYPES];
|
|
12
|
+
/**
|
|
13
|
+
* Data Variant 规则元数据。
|
|
14
|
+
*
|
|
15
|
+
* priority 数字越大优先级越高,合并时后覆盖低优先级字段。
|
|
16
|
+
*/
|
|
17
|
+
export interface DataVariantRuleMetadata {
|
|
18
|
+
module?: 'product' | string;
|
|
19
|
+
priority?: number;
|
|
20
|
+
status?: 'active' | 'inactive' | string;
|
|
21
|
+
updated_at?: string;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 商品上的单条 Data Variant 记录,结构与后端 data_variant 表对齐。
|
|
26
|
+
*/
|
|
27
|
+
export interface DataVariantItem {
|
|
28
|
+
/** 变体记录 id */
|
|
29
|
+
id?: number;
|
|
30
|
+
/** 店铺 id */
|
|
31
|
+
shop_id?: number;
|
|
32
|
+
/** 所属模块,商品场景固定为 product */
|
|
33
|
+
module?: 'product' | string;
|
|
34
|
+
/** 模块数据 id,商品场景对应 product.id */
|
|
35
|
+
module_data_id?: number;
|
|
36
|
+
/** 关联策略模型 metadata.id / data_variant_rule.id */
|
|
37
|
+
data_variant_rule_id: number | string;
|
|
38
|
+
/** 命中策略后需要覆盖到商品上的字段 */
|
|
39
|
+
data: Record<string, any>;
|
|
40
|
+
created_at?: string | null;
|
|
41
|
+
updated_at?: string | null;
|
|
42
|
+
deleted_at?: string | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Data Variant 评估使用的轻量商品结构。
|
|
46
|
+
*/
|
|
47
|
+
export interface DataVariantProduct {
|
|
48
|
+
id?: number | string;
|
|
49
|
+
product_id?: number | string;
|
|
50
|
+
product_variant_id?: number | string;
|
|
51
|
+
variant_id?: number | string;
|
|
52
|
+
collection?: Array<{
|
|
53
|
+
id?: number | string;
|
|
54
|
+
[key: string]: any;
|
|
55
|
+
}>;
|
|
56
|
+
/** 后端 /product/query with dataVariants 返回的智能定价变体列表 */
|
|
57
|
+
data_variants?: DataVariantItem[];
|
|
58
|
+
_dataVariant?: DataVariantAppliedInfo;
|
|
59
|
+
[key: string]: any;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 餐牌商品配置项。
|
|
63
|
+
*/
|
|
64
|
+
export interface DataVariantMenuProductItem {
|
|
65
|
+
product_collection_id?: number | string;
|
|
66
|
+
product_id?: number | string;
|
|
67
|
+
product_variant_id?: number | string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 餐牌数据的最小结构。
|
|
71
|
+
*/
|
|
72
|
+
export interface DataVariantMenu {
|
|
73
|
+
form_record_id: number | string;
|
|
74
|
+
status?: string;
|
|
75
|
+
schedule?: Array<number | string>;
|
|
76
|
+
partyroom_package?: {
|
|
77
|
+
type?: 'product_all' | 'product_collection' | 'products' | string;
|
|
78
|
+
products?: DataVariantMenuProductItem[];
|
|
79
|
+
};
|
|
80
|
+
[key: string]: any;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 单个餐牌预构建后的商品范围索引。
|
|
84
|
+
*/
|
|
85
|
+
export interface MenuScope {
|
|
86
|
+
isAllProducts: boolean;
|
|
87
|
+
collectionIds: Set<number>;
|
|
88
|
+
productKeys: Set<string>;
|
|
89
|
+
productAllVariantIds: Set<number>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 批量评估输入。
|
|
93
|
+
*/
|
|
94
|
+
export interface DataVariantBusinessData {
|
|
95
|
+
products: DataVariantProduct[];
|
|
96
|
+
strategyConfigs?: StrategyConfig<DataVariantRuleMetadata>[];
|
|
97
|
+
scheduleDateTime?: string;
|
|
98
|
+
scheduleList?: ScheduleItem[];
|
|
99
|
+
menuList?: DataVariantMenu[];
|
|
100
|
+
channel?: string;
|
|
101
|
+
orderType?: string;
|
|
102
|
+
/** 当前业务编码,对应策略条件 field: business_code */
|
|
103
|
+
businessCode?: string;
|
|
104
|
+
customerId?: number | string;
|
|
105
|
+
custom?: Record<string, any>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 全局预计算后的规则信息。
|
|
109
|
+
*/
|
|
110
|
+
export interface EffectiveRuleInfo {
|
|
111
|
+
ruleId: string;
|
|
112
|
+
priority: number;
|
|
113
|
+
strategyConfig: StrategyConfig<DataVariantRuleMetadata>;
|
|
114
|
+
productRules: ConditionRule[];
|
|
115
|
+
globalResult: EvaluationResult;
|
|
116
|
+
}
|
|
117
|
+
export type GlobalEffectiveRuleMap = Map<string, EffectiveRuleInfo>;
|
|
118
|
+
/**
|
|
119
|
+
* 单条商品命中的变体覆盖信息。
|
|
120
|
+
*/
|
|
121
|
+
export interface MatchedDataVariant {
|
|
122
|
+
ruleId: string;
|
|
123
|
+
priority: number;
|
|
124
|
+
data: Record<string, any>;
|
|
125
|
+
variant: DataVariantItem;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 商品上记录的 Data Variant 调试信息。
|
|
129
|
+
*/
|
|
130
|
+
export interface DataVariantAppliedInfo {
|
|
131
|
+
appliedRuleIds: string[];
|
|
132
|
+
appliedFields: string[];
|
|
133
|
+
original: DataVariantProduct;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 批量解析结果。
|
|
137
|
+
*/
|
|
138
|
+
export interface ResolvedDataVariantResult {
|
|
139
|
+
products: DataVariantProduct[];
|
|
140
|
+
globalEffectiveRuleMap: GlobalEffectiveRuleMap;
|
|
141
|
+
menuScopeMap: Map<number, MenuScope>;
|
|
142
|
+
/** 当前策略中 schedule_match 绑定的日程提取出的时间点,格式如 ["10:00", "13:00"] */
|
|
143
|
+
scheduleTimePoints: string[];
|
|
144
|
+
rawResults: EvaluationResult[];
|
|
145
|
+
}
|
|
146
|
+
export type ConditionScope = 'global' | 'product';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/model/strategy/adapter/dataVariant/type.ts
|
|
20
|
+
var type_exports = {};
|
|
21
|
+
__export(type_exports, {
|
|
22
|
+
DATA_VARIANT_ACTION_TYPES: () => DATA_VARIANT_ACTION_TYPES
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(type_exports);
|
|
25
|
+
var DATA_VARIANT_ACTION_TYPES = {
|
|
26
|
+
APPLY: "DATA_VARIANT_APPLY"
|
|
27
|
+
};
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
DATA_VARIANT_ACTION_TYPES
|
|
31
|
+
});
|
|
@@ -5,3 +5,7 @@ export { PromotionEvaluator } from './promotion/evaluator';
|
|
|
5
5
|
export { PromotionAdapter } from './promotion/adapter';
|
|
6
6
|
export { ItemRuleEvaluator } from './itemRule/evaluator';
|
|
7
7
|
export { ItemRuleAdapter } from './itemRule/adapter';
|
|
8
|
+
export { DataVariantEvaluator } from './dataVariant/evaluator';
|
|
9
|
+
export { DataVariantAdapter } from './dataVariant/adapter';
|
|
10
|
+
export { runDataVariantDemo } from './dataVariant/examples';
|
|
11
|
+
export * from './dataVariant/type';
|
|
@@ -30,12 +30,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/model/strategy/adapter/index.ts
|
|
31
31
|
var adapter_exports = {};
|
|
32
32
|
__export(adapter_exports, {
|
|
33
|
+
DataVariantAdapter: () => import_adapter3.DataVariantAdapter,
|
|
34
|
+
DataVariantEvaluator: () => import_evaluator4.DataVariantEvaluator,
|
|
33
35
|
ItemRuleAdapter: () => import_adapter2.ItemRuleAdapter,
|
|
34
36
|
ItemRuleEvaluator: () => import_evaluator3.ItemRuleEvaluator,
|
|
35
37
|
PromotionAdapter: () => import_adapter.PromotionAdapter,
|
|
36
38
|
PromotionEvaluator: () => import_evaluator2.PromotionEvaluator,
|
|
37
39
|
WalletPassAdapter: () => import_walletPass.default,
|
|
38
|
-
WalletPassEvaluator: () => import_evaluator.WalletPassEvaluator
|
|
40
|
+
WalletPassEvaluator: () => import_evaluator.WalletPassEvaluator,
|
|
41
|
+
runDataVariantDemo: () => import_examples.runDataVariantDemo
|
|
39
42
|
});
|
|
40
43
|
module.exports = __toCommonJS(adapter_exports);
|
|
41
44
|
__reExport(adapter_exports, require("./type"), module.exports);
|
|
@@ -45,13 +48,21 @@ var import_evaluator2 = require("./promotion/evaluator");
|
|
|
45
48
|
var import_adapter = require("./promotion/adapter");
|
|
46
49
|
var import_evaluator3 = require("./itemRule/evaluator");
|
|
47
50
|
var import_adapter2 = require("./itemRule/adapter");
|
|
51
|
+
var import_evaluator4 = require("./dataVariant/evaluator");
|
|
52
|
+
var import_adapter3 = require("./dataVariant/adapter");
|
|
53
|
+
var import_examples = require("./dataVariant/examples");
|
|
54
|
+
__reExport(adapter_exports, require("./dataVariant/type"), module.exports);
|
|
48
55
|
// Annotate the CommonJS export names for ESM import in node:
|
|
49
56
|
0 && (module.exports = {
|
|
57
|
+
DataVariantAdapter,
|
|
58
|
+
DataVariantEvaluator,
|
|
50
59
|
ItemRuleAdapter,
|
|
51
60
|
ItemRuleEvaluator,
|
|
52
61
|
PromotionAdapter,
|
|
53
62
|
PromotionEvaluator,
|
|
54
63
|
WalletPassAdapter,
|
|
55
64
|
WalletPassEvaluator,
|
|
56
|
-
|
|
65
|
+
runDataVariantDemo,
|
|
66
|
+
...require("./type"),
|
|
67
|
+
...require("./dataVariant/type")
|
|
57
68
|
});
|
|
@@ -142,14 +142,6 @@ function resolveMainProductPrice(product, fallback) {
|
|
|
142
142
|
const parsed = Number(value);
|
|
143
143
|
return Number.isFinite(parsed) ? parsed : fallback;
|
|
144
144
|
}
|
|
145
|
-
function mapOrderBundleToOtherBundle(bundle) {
|
|
146
|
-
return bundle.map((item) => {
|
|
147
|
-
return {
|
|
148
|
-
...item,
|
|
149
|
-
original_price: item.original_price ?? item.bundle_selling_price ?? item.price
|
|
150
|
-
};
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
145
|
function synthesizeProductResourceFromBooking(booking) {
|
|
154
146
|
const rows = booking == null ? void 0 : booking.resources;
|
|
155
147
|
if (!Array.isArray(rows) || rows.length === 0)
|
|
@@ -199,9 +191,7 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
199
191
|
const other = {
|
|
200
192
|
product_variant_id: product.product_variant_id ?? 0,
|
|
201
193
|
option: (0, import_utils.getProductSkuOptions)(product),
|
|
202
|
-
bundle:
|
|
203
|
-
Array.isArray(product.product_bundle) ? product.product_bundle : []
|
|
204
|
-
)
|
|
194
|
+
bundle: Array.isArray(product.product_bundle) ? [...product.product_bundle] : []
|
|
205
195
|
};
|
|
206
196
|
const extend = {
|
|
207
197
|
start_date: startDate ? (0, import_dayjs.default)(startDate) : void 0,
|
|
@@ -154,21 +154,10 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
154
154
|
private calculatePaymentTotal;
|
|
155
155
|
private getDepositAmount;
|
|
156
156
|
private normalizeDepositAmount;
|
|
157
|
-
private getLastOrderDepositSnapshot;
|
|
158
|
-
private getLastOrderSubmitSnapshot;
|
|
159
157
|
private applyDepositAmountToSummary;
|
|
160
|
-
private applyLastOrderDepositSnapshot;
|
|
161
158
|
private isDepositOrder;
|
|
162
159
|
private getOrderExpectedAmount;
|
|
163
160
|
private isDepositCovered;
|
|
164
|
-
getPaymentCompletion(payments?: OrderPaymentSource[]): {
|
|
165
|
-
isFullyPaid: boolean;
|
|
166
|
-
isOrderFullyPaid: boolean;
|
|
167
|
-
isDepositFullyPaid: boolean;
|
|
168
|
-
paymentStage: 'deposit' | 'normal';
|
|
169
|
-
depositAmount: string;
|
|
170
|
-
orderExpectedAmount: string;
|
|
171
|
-
};
|
|
172
161
|
private calculateDepositPaidAmount;
|
|
173
162
|
private resolveNextOrderPaymentType;
|
|
174
163
|
private normalizePaymentSource;
|
|
@@ -197,7 +186,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
197
186
|
private clearManualDepositOverride;
|
|
198
187
|
private getOriginalSalesSnapshot;
|
|
199
188
|
private isSnapshotPayableAmountUnchanged;
|
|
200
|
-
private hasShopDiscountChangedFromSnapshot;
|
|
201
189
|
private restoreOriginalSnapshotIfProductsUnchanged;
|
|
202
190
|
private clearPersistedAmountFieldsForFullRecalc;
|
|
203
191
|
private getPaymentTargetAmount;
|
|
@@ -231,8 +219,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
231
219
|
* const ids = this.collectBookingHolderRecords(booking);
|
|
232
220
|
*/
|
|
233
221
|
private collectBookingHolderRecords;
|
|
234
|
-
private setProductHolderFromBooking;
|
|
235
|
-
private syncLinkedBookingHoldersToProducts;
|
|
236
222
|
/**
|
|
237
223
|
* 按 form_record 顺序读取 booking holder 的主字段名称。
|
|
238
224
|
*
|
|
@@ -315,27 +301,13 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
315
301
|
updateOrderPayment(paymentIdentity: string | number, updates: Partial<OrderPaymentData> & Record<string, any>): OrderPaymentData[];
|
|
316
302
|
/** 从当前订单支付项中移除指定支付项。 */
|
|
317
303
|
deleteOrderPayment(paymentIdentity: string | number): OrderPaymentData[];
|
|
318
|
-
private confirmPendingVoucherPaymentsInList;
|
|
319
|
-
private discardPendingVoucherPaymentsFromList;
|
|
320
|
-
private prepareVoucherPaymentsForSubmit;
|
|
321
|
-
private applyPaymentLifecycleChange;
|
|
322
|
-
confirmPendingVoucherPayments(options?: {
|
|
323
|
-
persist?: boolean;
|
|
324
|
-
recalculateSummary?: boolean;
|
|
325
|
-
}): OrderPaymentData[];
|
|
326
|
-
discardPendingVoucherPayments(options?: {
|
|
327
|
-
persist?: boolean;
|
|
328
|
-
recalculateSummary?: boolean;
|
|
329
|
-
}): OrderPaymentData[];
|
|
330
304
|
/**
|
|
331
305
|
* 覆盖当前订单中的 wallet pass 支付项。
|
|
332
306
|
*
|
|
333
307
|
* 判断口径与 PaymentModal 保持一致:voucher_id 存在且不为 0 的支付项
|
|
334
308
|
* 视为 wallet pass;其它支付项保持不变。
|
|
335
309
|
*/
|
|
336
|
-
updateVoucherOrderPayments(payments: OrderPaymentSource[]
|
|
337
|
-
status?: 'paid' | 'payment_pending';
|
|
338
|
-
}): OrderPaymentData[];
|
|
310
|
+
updateVoucherOrderPayments(payments: OrderPaymentSource[]): OrderPaymentData[];
|
|
339
311
|
private shouldMergeProductToOrder;
|
|
340
312
|
private hasOrderProductLineNote;
|
|
341
313
|
/**
|
|
@@ -435,7 +407,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
435
407
|
payments?: OrderPaymentSource[];
|
|
436
408
|
paymentStatus?: SubmitSalesOrderParams['query']['payment_status'];
|
|
437
409
|
smallTicketDataFlag?: number;
|
|
438
|
-
confirmPendingVoucherPayments?: boolean;
|
|
439
410
|
enhancePayload?: SubmitPayloadEnhancer;
|
|
440
411
|
}): Promise<T>;
|
|
441
412
|
submitTempOrderAsync<T = any>(params?: {
|
|
@@ -447,7 +418,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
447
418
|
payments?: OrderPaymentSource[];
|
|
448
419
|
paymentStatus?: SubmitSalesOrderParams['query']['payment_status'];
|
|
449
420
|
smallTicketDataFlag?: number;
|
|
450
|
-
confirmPendingVoucherPayments?: boolean;
|
|
451
421
|
enhancePayload?: SubmitPayloadEnhancer;
|
|
452
422
|
}): Promise<T>;
|
|
453
423
|
private runSubmitTempOrder;
|
|
@@ -527,6 +497,5 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
527
497
|
private normalizeHydratedOrderProduct;
|
|
528
498
|
getLastOrderInfo(): Record<string, any> | undefined;
|
|
529
499
|
getOrderInfo(order_id: number): Promise<any>;
|
|
530
|
-
getVouchers(): any[];
|
|
531
500
|
}
|
|
532
501
|
export type { UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, } from './types';
|