@pisell/pisellos 2.1.161 → 2.1.163
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 +50 -0
- package/dist/model/strategy/adapter/dataVariant/adapter.js +167 -0
- package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
- package/dist/model/strategy/adapter/dataVariant/evaluator.js +780 -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 +148 -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/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/modules/Discount/index.d.ts +5 -2
- package/dist/modules/Discount/index.js +21 -1
- package/dist/modules/Discount/types.d.ts +6 -0
- package/dist/modules/Order/index.d.ts +1 -0
- package/dist/modules/Order/index.js +18 -6
- package/dist/modules/Order/types.d.ts +2 -0
- package/dist/modules/ProductList/index.d.ts +3 -1
- package/dist/modules/ProductList/index.js +22 -11
- package/dist/modules/Rules/index.js +13 -0
- package/dist/modules/Schedule/getDateIsInSchedule.js +5 -0
- package/dist/modules/Summary/utils.js +42 -21
- package/dist/solution/BookingByStep/index.d.ts +2 -2
- package/dist/solution/ScanOrder/index.js +1 -1
- package/dist/solution/ShopDiscount/index.js +16 -15
- package/dist/solution/VenueBooking/index.d.ts +23 -3
- package/dist/solution/VenueBooking/index.js +267 -168
- 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 +70 -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 +50 -0
- package/lib/model/strategy/adapter/dataVariant/adapter.js +149 -0
- package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +583 -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 +148 -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/Discount/index.d.ts +5 -2
- package/lib/modules/Discount/index.js +11 -1
- package/lib/modules/Discount/types.d.ts +6 -0
- package/lib/modules/Order/index.d.ts +1 -0
- package/lib/modules/Order/index.js +11 -1
- package/lib/modules/Order/types.d.ts +2 -0
- package/lib/modules/ProductList/index.d.ts +3 -1
- package/lib/modules/ProductList/index.js +45 -39
- package/lib/modules/Rules/index.js +8 -0
- package/lib/modules/Schedule/getDateIsInSchedule.js +4 -0
- package/lib/modules/Summary/utils.js +23 -3
- package/lib/solution/BookingByStep/index.d.ts +2 -2
- package/lib/solution/ScanOrder/index.js +1 -1
- package/lib/solution/ShopDiscount/index.js +3 -2
- package/lib/solution/VenueBooking/index.d.ts +23 -3
- package/lib/solution/VenueBooking/index.js +164 -69
- 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 +70 -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
|
@@ -66,6 +66,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
66
66
|
if (!this.store.tempOrder) {
|
|
67
67
|
this.store.tempOrder = null;
|
|
68
68
|
}
|
|
69
|
+
if (!Array.isArray(this.store.availableWalletIds)) {
|
|
70
|
+
this.store.availableWalletIds = [];
|
|
71
|
+
}
|
|
69
72
|
this.request = this.core.getPlugin('request');
|
|
70
73
|
this.window = this.core.getPlugin('window');
|
|
71
74
|
otherParams = options.otherParams || {};
|
|
@@ -76,15 +79,15 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
76
79
|
this.restoreTempOrderFromStorage();
|
|
77
80
|
appPlugin = this.core.getPlugin('app');
|
|
78
81
|
if (appPlugin) {
|
|
79
|
-
_context.next =
|
|
82
|
+
_context.next = 15;
|
|
80
83
|
break;
|
|
81
84
|
}
|
|
82
85
|
throw new Error('Order 模块需要 app 插件支持');
|
|
83
|
-
case
|
|
86
|
+
case 15:
|
|
84
87
|
app = appPlugin.getApp();
|
|
85
88
|
this.logger = app.logger;
|
|
86
89
|
this.logInfo('OrderModule initialized successfully');
|
|
87
|
-
case
|
|
90
|
+
case 18:
|
|
88
91
|
case "end":
|
|
89
92
|
return _context.stop();
|
|
90
93
|
}
|
|
@@ -185,7 +188,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
185
188
|
value: function () {
|
|
186
189
|
var _loadDiscountConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
|
|
187
190
|
var _this$store$discount, _this$store$tempOrder;
|
|
188
|
-
var discountList, _this$store$discount2;
|
|
191
|
+
var prepareConfig, discountList, _this$store$discount2;
|
|
189
192
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
190
193
|
while (1) switch (_context2.prev = _context2.next) {
|
|
191
194
|
case 0:
|
|
@@ -196,17 +199,21 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
196
199
|
with_good_pass: 1,
|
|
197
200
|
with_discount_card: 1,
|
|
198
201
|
with_wallet_pass_holder: 1,
|
|
202
|
+
with_available_wallet_flag: 1,
|
|
203
|
+
with_available_wallet_pass_flag: 1,
|
|
199
204
|
request_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
200
205
|
});
|
|
201
206
|
case 2:
|
|
202
|
-
|
|
207
|
+
prepareConfig = _context2.sent;
|
|
208
|
+
discountList = prepareConfig === null || prepareConfig === void 0 ? void 0 : prepareConfig.discountList;
|
|
209
|
+
this.store.availableWalletIds = (prepareConfig === null || prepareConfig === void 0 ? void 0 : prepareConfig.availableWalletIds) || [];
|
|
203
210
|
if (discountList) {
|
|
204
211
|
(_this$store$discount2 = this.store.discount) === null || _this$store$discount2 === void 0 || _this$store$discount2.setDiscountList(discountList);
|
|
205
212
|
}
|
|
206
213
|
if ((_this$store$tempOrder = this.store.tempOrder) !== null && _this$store$tempOrder !== void 0 && (_this$store$tempOrder = _this$store$tempOrder.products) !== null && _this$store$tempOrder !== void 0 && _this$store$tempOrder.length) {
|
|
207
214
|
this.applyDiscount();
|
|
208
215
|
}
|
|
209
|
-
case
|
|
216
|
+
case 7:
|
|
210
217
|
case "end":
|
|
211
218
|
return _context2.stop();
|
|
212
219
|
}
|
|
@@ -223,6 +230,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
223
230
|
var _this$store$discount3;
|
|
224
231
|
return ((_this$store$discount3 = this.store.discount) === null || _this$store$discount3 === void 0 ? void 0 : _this$store$discount3.getDiscountList()) || [];
|
|
225
232
|
}
|
|
233
|
+
}, {
|
|
234
|
+
key: "getAvailableWalletIds",
|
|
235
|
+
value: function getAvailableWalletIds() {
|
|
236
|
+
return this.store.availableWalletIds || [];
|
|
237
|
+
}
|
|
226
238
|
}, {
|
|
227
239
|
key: "scanCode",
|
|
228
240
|
value: function () {
|
|
@@ -15,6 +15,7 @@ export interface OrderState {
|
|
|
15
15
|
discountList: any[];
|
|
16
16
|
discount: DiscountModule | null;
|
|
17
17
|
rules: RulesModule | null;
|
|
18
|
+
availableWalletIds?: number[];
|
|
18
19
|
}
|
|
19
20
|
/** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 identity_key / 选项指纹等 */
|
|
20
21
|
export interface UpdateProductInOrderParams {
|
|
@@ -248,5 +249,6 @@ export interface OrderModuleAPI {
|
|
|
248
249
|
action?: 'create';
|
|
249
250
|
}) => Promise<void>;
|
|
250
251
|
getDiscountList: () => Discount[];
|
|
252
|
+
getAvailableWalletIds: () => number[];
|
|
251
253
|
applyDiscount: () => void;
|
|
252
254
|
}
|
|
@@ -11,7 +11,7 @@ export declare class ProductList extends BaseModule implements Module {
|
|
|
11
11
|
constructor(name?: string, version?: string);
|
|
12
12
|
initialize(core: PisellCore, options: any): Promise<void>;
|
|
13
13
|
storeChange(path?: string, value?: any): Promise<void>;
|
|
14
|
-
loadProducts({ category_ids, product_ids, collection, menu_list_ids, customer_id: paramsCustomerId, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, }: {
|
|
14
|
+
loadProducts({ category_ids, product_ids, collection, menu_list_ids, customer_id: paramsCustomerId, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, with_extra, }: {
|
|
15
15
|
category_ids?: number[];
|
|
16
16
|
product_ids?: number[];
|
|
17
17
|
collection?: number | string[];
|
|
@@ -22,6 +22,8 @@ export declare class ProductList extends BaseModule implements Module {
|
|
|
22
22
|
menu_list_ids?: number[];
|
|
23
23
|
with_count?: string[];
|
|
24
24
|
with_schedule?: number;
|
|
25
|
+
/** 追加到默认 with 字段(如 dataVariants) */
|
|
26
|
+
with_extra?: string[];
|
|
25
27
|
}): Promise<any>;
|
|
26
28
|
loadProductsPrice({ ids, customer_id, schedule_date, channel, }: {
|
|
27
29
|
ids?: number[];
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
2
8
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
9
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
10
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -85,11 +91,11 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
85
91
|
key: "loadProducts",
|
|
86
92
|
value: function () {
|
|
87
93
|
var _loadProducts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref) {
|
|
88
|
-
var _ref$category_ids, category_ids, _ref$product_ids, product_ids, _ref$collection, collection, _ref$menu_list_ids, menu_list_ids, paramsCustomerId, _ref$with_count, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, userPlugin, customer_id, _userPlugin$get, productsData, sortedList;
|
|
94
|
+
var _ref$category_ids, category_ids, _ref$product_ids, product_ids, _ref$collection, collection, _ref$menu_list_ids, menu_list_ids, paramsCustomerId, _ref$with_count, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, _ref$with_extra, with_extra, userPlugin, customer_id, _userPlugin$get, productsData, sortedList;
|
|
89
95
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
90
96
|
while (1) switch (_context3.prev = _context3.next) {
|
|
91
97
|
case 0:
|
|
92
|
-
_ref$category_ids = _ref.category_ids, category_ids = _ref$category_ids === void 0 ? [] : _ref$category_ids, _ref$product_ids = _ref.product_ids, product_ids = _ref$product_ids === void 0 ? [] : _ref$product_ids, _ref$collection = _ref.collection, collection = _ref$collection === void 0 ? [] : _ref$collection, _ref$menu_list_ids = _ref.menu_list_ids, menu_list_ids = _ref$menu_list_ids === void 0 ? [] : _ref$menu_list_ids, paramsCustomerId = _ref.customer_id, _ref$with_count = _ref.with_count, with_count = _ref$with_count === void 0 ? [] : _ref$with_count, schedule_datetime = _ref.schedule_datetime, schedule_date = _ref.schedule_date, cacheId = _ref.cacheId, with_schedule = _ref.with_schedule;
|
|
98
|
+
_ref$category_ids = _ref.category_ids, category_ids = _ref$category_ids === void 0 ? [] : _ref$category_ids, _ref$product_ids = _ref.product_ids, product_ids = _ref$product_ids === void 0 ? [] : _ref$product_ids, _ref$collection = _ref.collection, collection = _ref$collection === void 0 ? [] : _ref$collection, _ref$menu_list_ids = _ref.menu_list_ids, menu_list_ids = _ref$menu_list_ids === void 0 ? [] : _ref$menu_list_ids, paramsCustomerId = _ref.customer_id, _ref$with_count = _ref.with_count, with_count = _ref$with_count === void 0 ? [] : _ref$with_count, schedule_datetime = _ref.schedule_datetime, schedule_date = _ref.schedule_date, cacheId = _ref.cacheId, with_schedule = _ref.with_schedule, _ref$with_extra = _ref.with_extra, with_extra = _ref$with_extra === void 0 ? [] : _ref$with_extra;
|
|
93
99
|
// // 如果 schedule_ids 为空,则需要尝试从 schedule 模块里获取
|
|
94
100
|
// if (!schedule_ids?.length) {
|
|
95
101
|
// const schedule_ids_data = this.store.schedule
|
|
@@ -109,13 +115,13 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
109
115
|
} catch (error) {
|
|
110
116
|
console.error(error);
|
|
111
117
|
}
|
|
112
|
-
|
|
113
|
-
_context3.next =
|
|
118
|
+
_context3.prev = 4;
|
|
119
|
+
_context3.next = 7;
|
|
114
120
|
return this.request.post("/product/query", {
|
|
115
121
|
open_quotation: 1,
|
|
116
122
|
open_bundle: 0,
|
|
117
123
|
exclude_extension_type: ['product_party', 'product_event', 'product_series_event', 'product_package_ticket', 'ticket', 'event_item'],
|
|
118
|
-
with: ['category', 'collection', 'resourceRelation'],
|
|
124
|
+
with: ['category', 'collection', 'resourceRelation'].concat(_toConsumableArray(with_extra)),
|
|
119
125
|
status: 'published',
|
|
120
126
|
num: 500,
|
|
121
127
|
skip: 1,
|
|
@@ -124,20 +130,21 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
124
130
|
ids: product_ids,
|
|
125
131
|
collection: collection,
|
|
126
132
|
front_end_cache_id: cacheId,
|
|
127
|
-
menu_list_ids: menu_list_ids,
|
|
128
133
|
with_count: with_count,
|
|
129
134
|
// client_schedule_ids: schedule_ids,
|
|
130
135
|
schedule_date: schedule_date,
|
|
136
|
+
schedule_datetime: schedule_datetime,
|
|
131
137
|
// application_code: this.otherParams?.channel === 'online_store' ? 'online-store' : this.otherParams?.channel,
|
|
132
138
|
application_code: 'online-store',
|
|
133
139
|
with_schedule: with_schedule,
|
|
134
|
-
|
|
135
|
-
|
|
140
|
+
is_eject: 1,
|
|
141
|
+
menu_list_ids: menu_list_ids,
|
|
142
|
+
open_deposit: 1
|
|
136
143
|
}, {
|
|
137
144
|
useCache: true,
|
|
138
145
|
customToast: function customToast() {}
|
|
139
146
|
});
|
|
140
|
-
case
|
|
147
|
+
case 7:
|
|
141
148
|
productsData = _context3.sent;
|
|
142
149
|
sortedList = (productsData.data.list || []).slice().sort(function (a, b) {
|
|
143
150
|
return Number(b.sort) - Number(a.sort);
|
|
@@ -150,11 +157,15 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
150
157
|
// }
|
|
151
158
|
this.addProduct(sortedList);
|
|
152
159
|
return _context3.abrupt("return", sortedList);
|
|
153
|
-
case
|
|
160
|
+
case 13:
|
|
161
|
+
_context3.prev = 13;
|
|
162
|
+
_context3.t0 = _context3["catch"](4);
|
|
163
|
+
return _context3.abrupt("return", _context3.t0);
|
|
164
|
+
case 16:
|
|
154
165
|
case "end":
|
|
155
166
|
return _context3.stop();
|
|
156
167
|
}
|
|
157
|
-
}, _callee3, this);
|
|
168
|
+
}, _callee3, this, [[4, 13]]);
|
|
158
169
|
}));
|
|
159
170
|
function loadProducts(_x5) {
|
|
160
171
|
return _loadProducts.apply(this, arguments);
|
|
@@ -538,6 +538,15 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
538
538
|
return priceB.minus(priceA).toNumber();
|
|
539
539
|
});
|
|
540
540
|
|
|
541
|
+
// 检查商品是否被排除(全品类)
|
|
542
|
+
var isProductIncludedByLimitedData = function isProductIncludedByLimitedData(limitedData, productId) {
|
|
543
|
+
var excludedIds = (limitedData === null || limitedData === void 0 ? void 0 : limitedData.exclude_product_ids) || [];
|
|
544
|
+
var isExcluded = (limitedData === null || limitedData === void 0 ? void 0 : limitedData.filter) === 1 && excludedIds.some(function (id) {
|
|
545
|
+
return String(id) === String(productId);
|
|
546
|
+
});
|
|
547
|
+
return !isExcluded;
|
|
548
|
+
};
|
|
549
|
+
|
|
541
550
|
/**
|
|
542
551
|
// 对productList按价格降序排序(用于应用优惠券时优先选择高价商品) 价格相同时使用quantity 排序
|
|
543
552
|
const sortedProductList = [...productList].sort((a, b) => {
|
|
@@ -926,6 +935,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
926
935
|
|
|
927
936
|
// 判断优惠券是否适用于该商品
|
|
928
937
|
if (limitedData.type === 'product_all') {
|
|
938
|
+
if (!isProductIncludedByLimitedData(limitedData, product.id)) {
|
|
939
|
+
return false;
|
|
940
|
+
}
|
|
941
|
+
|
|
929
942
|
// 检查 package_sub_item_usage_rules
|
|
930
943
|
if (!_this3.checkPackageSubItemUsageRules(discount, flatItem)) {
|
|
931
944
|
return false;
|
|
@@ -6,6 +6,11 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol
|
|
|
6
6
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
7
7
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
8
8
|
import dayjs from "dayjs";
|
|
9
|
+
import isSameOrAfter from "dayjs/plugin/isSameOrAfter";
|
|
10
|
+
import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
|
|
11
|
+
dayjs.extend(isSameOrAfter);
|
|
12
|
+
dayjs.extend(isSameOrBefore);
|
|
13
|
+
|
|
9
14
|
// 获取时间是否在日程范围内
|
|
10
15
|
export var getDateIsInSchedule = function getDateIsInSchedule(dateTime, scheduleList) {
|
|
11
16
|
if (!dateTime || !scheduleList || scheduleList.length === 0) {
|
|
@@ -595,6 +595,27 @@ export var calculateTaxFee = function calculateTaxFee(shopInfo, items) {
|
|
|
595
595
|
}, new Decimal(0));
|
|
596
596
|
return totalTaxFee;
|
|
597
597
|
};
|
|
598
|
+
var getCartItemDepositData = function getCartItemDepositData(item) {
|
|
599
|
+
var _target$_productOrigi, _target$_origin, _target$_origin2;
|
|
600
|
+
var target = item;
|
|
601
|
+
return (target === null || target === void 0 || (_target$_productOrigi = target._productOrigin) === null || _target$_productOrigi === void 0 ? void 0 : _target$_productOrigi.custom_deposit_data) || (target === null || target === void 0 || (_target$_origin = target._origin) === null || _target$_origin === void 0 ? void 0 : _target$_origin.custom_deposit_data) || (target === null || target === void 0 || (_target$_origin2 = target._origin) === null || _target$_origin2 === void 0 || (_target$_origin2 = _target$_origin2.product) === null || _target$_origin2 === void 0 ? void 0 : _target$_origin2.custom_deposit_data);
|
|
602
|
+
};
|
|
603
|
+
var getCartItemQuantity = function getCartItemQuantity(item) {
|
|
604
|
+
return new Decimal((item === null || item === void 0 ? void 0 : item.num) || 1);
|
|
605
|
+
};
|
|
606
|
+
var calculateCartItemDepositTotal = function calculateCartItemDepositTotal(item) {
|
|
607
|
+
var _item$deposit;
|
|
608
|
+
var depositData = getCartItemDepositData(item);
|
|
609
|
+
if ((depositData === null || depositData === void 0 ? void 0 : depositData.has_deposit) == 1 && typeof (depositData === null || depositData === void 0 ? void 0 : depositData.deposit_fixed) === 'string' && typeof (depositData === null || depositData === void 0 ? void 0 : depositData.deposit_percentage) === 'string') {
|
|
610
|
+
var _ref7, _summaryTotal;
|
|
611
|
+
var lineTotal = new Decimal((_ref7 = (_summaryTotal = item.summaryTotal) !== null && _summaryTotal !== void 0 ? _summaryTotal : item.total) !== null && _ref7 !== void 0 ? _ref7 : 0);
|
|
612
|
+
var quantity = getCartItemQuantity(item);
|
|
613
|
+
var fixedTotal = new Decimal(depositData.deposit_fixed || 0).times(quantity);
|
|
614
|
+
var percentageTotal = new Decimal(depositData.deposit_percentage || 0).times(lineTotal);
|
|
615
|
+
return fixedTotal.plus(percentageTotal);
|
|
616
|
+
}
|
|
617
|
+
return new Decimal((item === null || item === void 0 || (_item$deposit = item.deposit) === null || _item$deposit === void 0 ? void 0 : _item$deposit.total) || 0);
|
|
618
|
+
};
|
|
598
619
|
|
|
599
620
|
/**
|
|
600
621
|
* @title: 计算定金
|
|
@@ -609,9 +630,9 @@ export var calculateDeposit = function calculateDeposit(items) {
|
|
|
609
630
|
var hasDeposit = false;
|
|
610
631
|
var total = items.reduce(function (sum, item) {
|
|
611
632
|
if (item !== null && item !== void 0 && item.deposit) {
|
|
612
|
-
var _item$
|
|
633
|
+
var _item$deposit2;
|
|
613
634
|
hasDeposit = true;
|
|
614
|
-
var cartItemTotalPrice =
|
|
635
|
+
var cartItemTotalPrice = calculateCartItemDepositTotal(item);
|
|
615
636
|
// 将协议数据去重合并
|
|
616
637
|
item === null || item === void 0 || (_item$deposit2 = item.deposit) === null || _item$deposit2 === void 0 || (_item$deposit2 = _item$deposit2.protocols) === null || _item$deposit2 === void 0 || _item$deposit2.forEach(function (protocol) {
|
|
617
638
|
if (protocols.findIndex(function (p) {
|
|
@@ -648,9 +669,9 @@ export var calculateDeposit = function calculateDeposit(items) {
|
|
|
648
669
|
* @param options.isEdit 是否处于“编辑中”。`false` 时会优先走后端金额直取逻辑(若存在)
|
|
649
670
|
* @returns 订单附加费金额(number,金额单位与商品价格一致)
|
|
650
671
|
*/
|
|
651
|
-
export var getSurchargeAmount = function getSurchargeAmount(
|
|
652
|
-
var bookingDetail =
|
|
653
|
-
bookingId =
|
|
672
|
+
export var getSurchargeAmount = function getSurchargeAmount(_ref8, surcharge, options) {
|
|
673
|
+
var bookingDetail = _ref8.bookingDetail,
|
|
674
|
+
bookingId = _ref8.bookingId;
|
|
654
675
|
var isEdit = options.isEdit;
|
|
655
676
|
// 订单未变更过
|
|
656
677
|
if (!isEdit) {
|
|
@@ -695,17 +716,17 @@ var getDiscountAmount = function getDiscountAmount(discounts) {
|
|
|
695
716
|
* 获取主商品加价减价后的总价 (主商品价格 + 子商品加价减价)
|
|
696
717
|
*/
|
|
697
718
|
var getMainProductTotal = function getMainProductTotal(item) {
|
|
698
|
-
var
|
|
719
|
+
var _ref9, _ref10, _item$main_product_se, _item$metadata, _item$metadata2, _item$metadata3, _item$metadata4;
|
|
699
720
|
// 新语义 v2 下 `main_product_selling_price` / `metadata.main_product_selling_price`
|
|
700
721
|
// 已经是"含 option、含主商品折扣"的主价,直接作为主商品基准,无需再减折扣或加 option。
|
|
701
722
|
// 仅需叠加 markup / markdown 类 bundle(原价 bundle 的税费单独处理)。
|
|
702
|
-
var total = new Decimal((
|
|
723
|
+
var total = new Decimal((_ref9 = (_ref10 = (_item$main_product_se = item === null || item === void 0 ? void 0 : item.main_product_selling_price) !== null && _item$main_product_se !== void 0 ? _item$main_product_se : item === null || item === void 0 || (_item$metadata = item.metadata) === null || _item$metadata === void 0 ? void 0 : _item$metadata.main_product_selling_price) !== null && _ref10 !== void 0 ? _ref10 : item === null || item === void 0 || (_item$metadata2 = item.metadata) === null || _item$metadata2 === void 0 ? void 0 : _item$metadata2.main_product_original_price) !== null && _ref9 !== void 0 ? _ref9 : 0);
|
|
703
724
|
|
|
704
725
|
// 做个兜底 如果新语义价格字段都没有,则切换回老逻辑
|
|
705
726
|
var hasMainProductPrice = (item === null || item === void 0 ? void 0 : item.main_product_selling_price) != null || (item === null || item === void 0 || (_item$metadata3 = item.metadata) === null || _item$metadata3 === void 0 ? void 0 : _item$metadata3.main_product_selling_price) != null || (item === null || item === void 0 || (_item$metadata4 = item.metadata) === null || _item$metadata4 === void 0 ? void 0 : _item$metadata4.main_product_original_price) != null;
|
|
706
727
|
if (!hasMainProductPrice) {
|
|
707
|
-
var
|
|
708
|
-
total = new Decimal((
|
|
728
|
+
var _ref11, _ref12, _item$main_product_se2, _item$metadata5, _item$_origin3, _item$_originData;
|
|
729
|
+
total = new Decimal((_ref11 = (_ref12 = (_item$main_product_se2 = item === null || item === void 0 ? void 0 : item.main_product_selling_price) !== null && _item$main_product_se2 !== void 0 ? _item$main_product_se2 : item === null || item === void 0 || (_item$metadata5 = item.metadata) === null || _item$metadata5 === void 0 ? void 0 : _item$metadata5.main_product_selling_price) !== null && _ref12 !== void 0 ? _ref12 : item.price) !== null && _ref11 !== void 0 ? _ref11 : 0);
|
|
709
730
|
var discount = (item === null || item === void 0 || (_item$_origin3 = item._origin) === null || _item$_origin3 === void 0 || (_item$_origin3 = _item$_origin3.product) === null || _item$_origin3 === void 0 ? void 0 : _item$_origin3.discount_list) || (item === null || item === void 0 || (_item$_originData = item._originData) === null || _item$_originData === void 0 || (_item$_originData = _item$_originData.product) === null || _item$_originData === void 0 || (_item$_originData = _item$_originData.discount_list) === null || _item$_originData === void 0 ? void 0 : _item$_originData.filter(function (item) {
|
|
710
731
|
var _item$metadata6;
|
|
711
732
|
return !(item !== null && item !== void 0 && (_item$metadata6 = item.metadata) !== null && _item$metadata6 !== void 0 && _item$metadata6.custom_product_bundle_map_id);
|
|
@@ -726,9 +747,9 @@ var getMainProductTotal = function getMainProductTotal(item) {
|
|
|
726
747
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
727
748
|
var bundleItem = _step4.value;
|
|
728
749
|
if (getBundleItemIsMarkupOrDiscountPrice(bundleItem)) {
|
|
729
|
-
var
|
|
750
|
+
var _ref13, _bundleItem$bundle_se2;
|
|
730
751
|
// IMPORTANT: 套餐子商品如果应用了 discount,bundle_selling_price 和 price 其实都已经是折后价格了,不需要单独再减一次
|
|
731
|
-
var bundleItemTotal = new Decimal((
|
|
752
|
+
var bundleItemTotal = new Decimal((_ref13 = (_bundleItem$bundle_se2 = bundleItem.bundle_selling_price) !== null && _bundleItem$bundle_se2 !== void 0 ? _bundleItem$bundle_se2 : bundleItem.price) !== null && _ref13 !== void 0 ? _ref13 : 0);
|
|
732
753
|
total = total.add(bundleItemTotal);
|
|
733
754
|
}
|
|
734
755
|
}
|
|
@@ -848,12 +869,12 @@ var isProductMatchSurchargeCondition = function isProductMatchSurchargeCondition
|
|
|
848
869
|
* @param options.scheduleById schedule 映射表:`{ [scheduleId]: schedule }`(用于根据配置的 `available_schedule_ids` 做日程匹配)
|
|
849
870
|
* @returns 附加费列表(仅返回金额 > 0 的项)
|
|
850
871
|
*/
|
|
851
|
-
export var getSurcharge = function getSurcharge(
|
|
872
|
+
export var getSurcharge = function getSurcharge(_ref14, options) {
|
|
852
873
|
var _service$filter;
|
|
853
|
-
var service =
|
|
854
|
-
addons =
|
|
855
|
-
bookingDetail =
|
|
856
|
-
bookingId =
|
|
874
|
+
var service = _ref14.service,
|
|
875
|
+
addons = _ref14.addons,
|
|
876
|
+
bookingDetail = _ref14.bookingDetail,
|
|
877
|
+
bookingId = _ref14.bookingId;
|
|
857
878
|
var isEdit = options.isEdit,
|
|
858
879
|
isInScheduleByDate = options.isInScheduleByDate,
|
|
859
880
|
surcharge_list = options.surcharge_list,
|
|
@@ -975,11 +996,11 @@ export var getSurcharge = function getSurcharge(_ref13, options) {
|
|
|
975
996
|
scheduleById: scheduleById || {},
|
|
976
997
|
isInScheduleByDate: isInScheduleByDate
|
|
977
998
|
})) {
|
|
978
|
-
var
|
|
999
|
+
var _ref15, _bundleItem$bundle_se3;
|
|
979
1000
|
var _mainQuantity = item.num || 1;
|
|
980
1001
|
matchedItems.push({
|
|
981
1002
|
isMain: false,
|
|
982
|
-
total: Number((
|
|
1003
|
+
total: Number((_ref15 = (_bundleItem$bundle_se3 = bundleItem.bundle_selling_price) !== null && _bundleItem$bundle_se3 !== void 0 ? _bundleItem$bundle_se3 : bundleItem.price) !== null && _ref15 !== void 0 ? _ref15 : 0),
|
|
983
1004
|
quantity: bundleItem.num || bundleItem.quantity || 1,
|
|
984
1005
|
item: bundleItem,
|
|
985
1006
|
mainQuantity: _mainQuantity // 子商品的mainQuantity是所属主商品的quantity
|
|
@@ -1195,9 +1216,9 @@ export var getSurcharge = function getSurcharge(_ref13, options) {
|
|
|
1195
1216
|
}
|
|
1196
1217
|
return surchargeWithAmount;
|
|
1197
1218
|
};
|
|
1198
|
-
function resetItemsSurchargeSideEffects(
|
|
1199
|
-
var service =
|
|
1200
|
-
addons =
|
|
1219
|
+
function resetItemsSurchargeSideEffects(_ref16) {
|
|
1220
|
+
var service = _ref16.service,
|
|
1221
|
+
addons = _ref16.addons;
|
|
1201
1222
|
var resetItem = function resetItem(item) {
|
|
1202
1223
|
if (!item) return;
|
|
1203
1224
|
item.surcharge_fee = 0;
|
|
@@ -310,7 +310,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
310
310
|
date: string;
|
|
311
311
|
status: string;
|
|
312
312
|
week: string;
|
|
313
|
-
weekNum: 0 |
|
|
313
|
+
weekNum: 0 | 1 | 5 | 4 | 2 | 3 | 6;
|
|
314
314
|
}[]>;
|
|
315
315
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
316
316
|
private getScheduleDataByIds;
|
|
@@ -329,7 +329,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
329
329
|
count: number;
|
|
330
330
|
left: number;
|
|
331
331
|
summaryCount: number;
|
|
332
|
-
status: "
|
|
332
|
+
status: "sold_out" | "lots_of_space" | "filling_up_fast";
|
|
333
333
|
}[];
|
|
334
334
|
/**
|
|
335
335
|
* 找到多个资源的公共可用时间段
|
|
@@ -857,7 +857,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
857
857
|
var tempOrder = this.store.order.ensureTempOrder();
|
|
858
858
|
tempOrder.metadata = _objectSpread(_objectSpread({}, tempOrder.metadata || {}), {}, {
|
|
859
859
|
shop_service_data: _objectSpread(_objectSpread({}, (tempOrder.metadata || {}).shop_service_data || {}), {}, {
|
|
860
|
-
service_type: ((_this$otherParams4 = this.otherParams) === null || _this$otherParams4 === void 0 ? void 0 : _this$otherParams4.businessCode) === 'dine_in' ? 'dine_in' : '
|
|
860
|
+
service_type: ((_this$otherParams4 = this.otherParams) === null || _this$otherParams4 === void 0 ? void 0 : _this$otherParams4.businessCode) === 'dine_in' ? 'dine_in' : '',
|
|
861
861
|
pickup_reference_mode: mode
|
|
862
862
|
})
|
|
863
863
|
});
|
|
@@ -783,7 +783,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
783
783
|
key: "loadPrepareConfig",
|
|
784
784
|
value: function () {
|
|
785
785
|
var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(params) {
|
|
786
|
-
var _this$getCustomer2, _this$store$discount8, _this$getDiscountList, _this$store$discount9, _this$store$productLi2, orderId, customerId, goodPassList, scanDiscount, scanDiscountIds, newGoodPassList, newDiscountList, filteredDiscountList, _result3;
|
|
786
|
+
var _this$getCustomer2, _this$store$discount8, _this$getDiscountList, _this$store$discount9, _this$store$productLi2, orderId, customerId, prepareConfig, goodPassList, scanDiscount, scanDiscountIds, newGoodPassList, newDiscountList, filteredDiscountList, _result3;
|
|
787
787
|
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
788
788
|
while (1) switch (_context10.prev = _context10.next) {
|
|
789
789
|
case 0:
|
|
@@ -804,47 +804,48 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
804
804
|
order_id: orderId
|
|
805
805
|
} : {}));
|
|
806
806
|
case 5:
|
|
807
|
-
|
|
807
|
+
prepareConfig = _context10.sent;
|
|
808
|
+
goodPassList = (prepareConfig === null || prepareConfig === void 0 ? void 0 : prepareConfig.discountList) || [];
|
|
808
809
|
scanDiscount = (_this$getDiscountList = this.getDiscountList()) === null || _this$getDiscountList === void 0 ? void 0 : _this$getDiscountList.filter(function (item) {
|
|
809
810
|
return item.isScan;
|
|
810
811
|
}); // goodPassList 里可能有 scanDiscount 重合的部分,goodPassList 需要剔除
|
|
811
812
|
scanDiscountIds = scanDiscount.map(function (n) {
|
|
812
813
|
return n.id;
|
|
813
814
|
});
|
|
814
|
-
newGoodPassList = goodPassList
|
|
815
|
+
newGoodPassList = goodPassList.filter(function (n) {
|
|
815
816
|
return !scanDiscountIds.includes(n.id);
|
|
816
817
|
});
|
|
817
818
|
newDiscountList = [].concat(_toConsumableArray(scanDiscount), _toConsumableArray(newGoodPassList || [])); // 存储原始优惠券列表
|
|
818
819
|
this.store.originalDiscountList = newDiscountList;
|
|
819
|
-
_context10.next =
|
|
820
|
+
_context10.next = 14;
|
|
820
821
|
return (_this$store$discount9 = this.store.discount) === null || _this$store$discount9 === void 0 ? void 0 : _this$store$discount9.setOriginalDiscountList(newDiscountList);
|
|
821
|
-
case
|
|
822
|
+
case 14:
|
|
822
823
|
// 根据当前预约时间过滤优惠券列表
|
|
823
824
|
filteredDiscountList = this.filterDiscountListByBookingTime(newDiscountList, this.store.currentBookingTime);
|
|
824
825
|
this.store.filteredDiscountList = filteredDiscountList;
|
|
825
826
|
this.setDiscountList(filteredDiscountList || []);
|
|
826
827
|
if (!((_this$store$productLi2 = this.store.productList) !== null && _this$store$productLi2 !== void 0 && _this$store$productLi2.length)) {
|
|
827
|
-
_context10.next =
|
|
828
|
+
_context10.next = 21;
|
|
828
829
|
break;
|
|
829
830
|
}
|
|
830
831
|
_result3 = this.calcDiscount(this.store.productList);
|
|
831
|
-
_context10.next =
|
|
832
|
+
_context10.next = 21;
|
|
832
833
|
return this.core.effects.emit("".concat(this.name, ":onLoadPrepareCalcResult"), _result3);
|
|
833
|
-
case
|
|
834
|
-
_context10.next =
|
|
834
|
+
case 21:
|
|
835
|
+
_context10.next = 23;
|
|
835
836
|
return this.core.effects.emit("".concat(this.name, ":onLoadDiscountList"), filteredDiscountList);
|
|
836
|
-
case
|
|
837
|
-
_context10.next =
|
|
837
|
+
case 23:
|
|
838
|
+
_context10.next = 28;
|
|
838
839
|
break;
|
|
839
|
-
case
|
|
840
|
-
_context10.prev =
|
|
840
|
+
case 25:
|
|
841
|
+
_context10.prev = 25;
|
|
841
842
|
_context10.t0 = _context10["catch"](0);
|
|
842
843
|
console.error('[ShopDiscount] 加载准备配置出错:', _context10.t0);
|
|
843
|
-
case
|
|
844
|
+
case 28:
|
|
844
845
|
case "end":
|
|
845
846
|
return _context10.stop();
|
|
846
847
|
}
|
|
847
|
-
}, _callee10, this, [[0,
|
|
848
|
+
}, _callee10, this, [[0, 25]]);
|
|
848
849
|
}));
|
|
849
850
|
function loadPrepareConfig(_x10) {
|
|
850
851
|
return _loadPrepareConfig.apply(this, arguments);
|
|
@@ -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';
|
|
@@ -40,6 +41,10 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
40
41
|
private productsLoaded;
|
|
41
42
|
private loadOpenDataConfigInFlight;
|
|
42
43
|
private static readonly OPEN_DATA_CACHE_TTL;
|
|
44
|
+
/** 按日期缓存 slot 智能定价 Map,避免同周重复 resolveProducts */
|
|
45
|
+
private slotPriceMapCache;
|
|
46
|
+
/** loadProducts 后缓存的全量商品(venue + addon),供分段算价复用 */
|
|
47
|
+
private smartPricingProductCatalog;
|
|
43
48
|
private getLoggerContext;
|
|
44
49
|
private safeStringify;
|
|
45
50
|
private pickErrorMessage;
|
|
@@ -68,6 +73,22 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
68
73
|
passed: boolean | null;
|
|
69
74
|
failures: QuantityCheckResult[];
|
|
70
75
|
};
|
|
76
|
+
/** 清除 slot 价格分段缓存(商品重载 / 登录后 customerId 变化时调用) */
|
|
77
|
+
private clearSlotPriceMapCache;
|
|
78
|
+
/** 读取当前登录 customerId */
|
|
79
|
+
private resolveCustomerIdForSmartPricing;
|
|
80
|
+
private resolveAvailableWalletIdsForSmartPricing;
|
|
81
|
+
/** 读取 schedule 全量列表,供智能定价 schedule_match 使用 */
|
|
82
|
+
private getScheduleListForSmartPricing;
|
|
83
|
+
/** 构建智能定价上下文,对齐 OS Server buildProductFormatterContext */
|
|
84
|
+
private buildSmartPricingContext;
|
|
85
|
+
/** venue + addon 全量商品,供智能定价评估 */
|
|
86
|
+
private getAllProductsForSmartPricing;
|
|
87
|
+
private getSlotPriceMapCacheKey;
|
|
88
|
+
/**
|
|
89
|
+
* 按 schedule 分段构建 slot 价格 Map,带实例级缓存。
|
|
90
|
+
*/
|
|
91
|
+
private buildSlotPriceMapForDate;
|
|
71
92
|
loadAllProducts(): Promise<{
|
|
72
93
|
venueProducts: ProductData[];
|
|
73
94
|
addonProducts: ProductData[];
|
|
@@ -140,8 +161,7 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
140
161
|
setSlotConfig(config: Partial<VenueBookingSlotConfig>): void;
|
|
141
162
|
getSlotConfig(): VenueBookingSlotConfig;
|
|
142
163
|
loadSchedules(): Promise<void>;
|
|
143
|
-
|
|
144
|
-
getScheduleListByIds(ids: number[]): import("../../modules/Schedule/types").ScheduleItem[];
|
|
164
|
+
getScheduleListByIds(ids: number[]): ScheduleItem[];
|
|
145
165
|
getTempOrder(): import("./types").ScanOrderTempOrder | null;
|
|
146
166
|
updateTempOrderNote(note: string): string;
|
|
147
167
|
updateTempOrderContactsInfo(contactsInfo: any[]): any[];
|
|
@@ -149,7 +169,7 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
149
169
|
onCustomerLogin(params: {
|
|
150
170
|
customerId: number;
|
|
151
171
|
}): Promise<void>;
|
|
152
|
-
private
|
|
172
|
+
private recalculateOrderPricesFromSmartPricing;
|
|
153
173
|
scanCode(code: string, customerId?: number): Promise<{
|
|
154
174
|
isAvailable: boolean;
|
|
155
175
|
discountList: import("../../modules/Discount").Discount[];
|