@pisell/pisellos 0.0.569 → 0.10.2
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/core/index.js +10 -6
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
- package/dist/model/strategy/adapter/walletPass/example.js +26 -3
- package/dist/model/strategy/adapter/walletPass/index.js +5 -5
- package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
- package/dist/model/strategy/strategy-example.js +19 -5
- package/dist/modules/BaseModule.d.ts +1 -1
- package/dist/modules/BaseModule.js +8 -10
- package/dist/modules/Cart/index.js +3 -0
- package/dist/modules/Cart/utils/cartProduct.js +1 -0
- package/dist/modules/Cart/utils/cartResource.js +0 -2
- package/dist/modules/Cart/utils/changePrice.js +9 -16
- package/dist/modules/Date/index.js +5 -1
- package/dist/modules/Discount/index.d.ts +0 -1
- package/dist/modules/Discount/index.js +7 -22
- package/dist/modules/Discount/types.d.ts +0 -1
- package/dist/modules/OpenData/index.js +2 -0
- package/dist/modules/Order/index.js +70 -40
- package/dist/modules/Payment/index.js +162 -97
- package/dist/modules/Payment/types.d.ts +4 -8
- package/dist/modules/Payment/walletpass.d.ts +0 -2
- package/dist/modules/Payment/walletpass.js +5 -4
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +3 -12
- package/dist/modules/ProductList/types.d.ts +0 -1
- package/dist/modules/Rules/index.js +126 -427
- package/dist/modules/SalesSummary/utils.js +1 -2
- package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
- package/dist/modules/Schedule/index.js +1 -0
- package/dist/modules/Schedule/utils.js +1 -0
- package/dist/modules/Step/index.js +1 -0
- package/dist/modules/Summary/utils.js +22 -43
- package/dist/plugins/request.js +4 -1
- package/dist/plugins/window.js +6 -2
- package/dist/server/index.js +129 -97
- package/dist/server/modules/menu/index.js +41 -32
- package/dist/server/modules/order/index.js +4 -2
- package/dist/server/modules/products/index.js +42 -24
- package/dist/server/modules/quotation/index.js +38 -29
- package/dist/server/modules/resource/index.js +4 -3
- package/dist/server/modules/schedule/index.js +35 -27
- package/dist/server/utils/product.js +1 -0
- package/dist/solution/BaseSales/index.js +41 -38
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +60 -11
- package/dist/solution/BookingByStep/utils/capacity.js +11 -1
- package/dist/solution/BookingByStep/utils/resources.js +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +2 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
- package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
- package/dist/solution/BuyTickets/index.js +12 -9
- package/dist/solution/Checkout/index.js +252 -177
- package/dist/solution/Checkout/utils/index.js +16 -4
- package/dist/solution/RegisterAndLogin/index.js +76 -30
- package/dist/solution/ScanOrder/index.js +60 -50
- package/dist/solution/ShopDiscount/index.js +14 -15
- package/dist/solution/ShopDiscount/types.d.ts +4 -5
- package/dist/solution/ShopDiscount/utils.d.ts +0 -9
- package/dist/solution/ShopDiscount/utils.js +0 -9
- package/dist/solution/VenueBooking/index.d.ts +3 -31
- package/dist/solution/VenueBooking/index.js +496 -651
- package/dist/solution/VenueBooking/types.d.ts +1 -3
- package/dist/solution/VenueBooking/types.js +0 -1
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/task.js +18 -15
- package/dist/utils/watch.js +1 -0
- package/lib/apis/picoding.js +0 -2
- package/lib/core/index.js +132 -130
- package/lib/effects/index.js +57 -46
- package/lib/index.d.ts +0 -1
- package/lib/index.js +50 -92
- package/lib/model/index.js +21 -14
- package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
- package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
- package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
- package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
- package/lib/model/strategy/adapter/index.js +64 -100
- package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
- package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
- package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
- package/lib/model/strategy/adapter/itemRule/index.js +57 -83
- package/lib/model/strategy/adapter/itemRule/type.js +36 -97
- package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
- package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
- package/lib/model/strategy/adapter/promotion/examples.js +159 -139
- package/lib/model/strategy/adapter/promotion/index.js +49 -1
- package/lib/model/strategy/adapter/promotion/type.js +35 -199
- package/lib/model/strategy/adapter/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
- package/lib/model/strategy/adapter/walletPass/example.js +190 -217
- package/lib/model/strategy/adapter/walletPass/index.js +51 -75
- package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
- package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/lib/model/strategy/adapter/walletPass/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
- package/lib/model/strategy/engine.js +168 -270
- package/lib/model/strategy/index.js +34 -49
- package/lib/model/strategy/strategy-example.js +239 -243
- package/lib/model/strategy/type.js +40 -100
- package/lib/modules/Account/index.js +53 -39
- package/lib/modules/Account/types.js +33 -20
- package/lib/modules/AccountList/index.js +154 -116
- package/lib/modules/AccountList/types.js +31 -30
- package/lib/modules/AccountList/utils.js +30 -18
- package/lib/modules/BaseModule.d.ts +1 -1
- package/lib/modules/BaseModule.js +46 -25
- package/lib/modules/BookingContext/index.js +136 -158
- package/lib/modules/BookingContext/types.js +32 -46
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
- package/lib/modules/BookingContext/utils/flexible.js +55 -38
- package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
- package/lib/modules/BookingContext/utils/index.js +41 -124
- package/lib/modules/BookingContext/utils/noResource.js +70 -58
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
- package/lib/modules/BookingContext/utils/productExtend.js +155 -202
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
- package/lib/modules/BookingContext/utils/resources.js +167 -209
- package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
- package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
- package/lib/modules/Cart/index.js +124 -170
- package/lib/modules/Cart/types.js +51 -46
- package/lib/modules/Cart/utils/cartAccount.js +39 -40
- package/lib/modules/Cart/utils/cartDate.js +61 -56
- package/lib/modules/Cart/utils/cartDiscount.js +33 -28
- package/lib/modules/Cart/utils/cartNote.js +32 -27
- package/lib/modules/Cart/utils/cartProduct.js +251 -321
- package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
- package/lib/modules/Cart/utils/cartResource.js +78 -72
- package/lib/modules/Cart/utils/changePrice.js +50 -28
- package/lib/modules/Cart/utils/index.js +48 -106
- package/lib/modules/Customer/constants.js +34 -13
- package/lib/modules/Customer/index.js +169 -232
- package/lib/modules/Customer/types.js +35 -38
- package/lib/modules/Date/index.js +115 -116
- package/lib/modules/Date/types.js +28 -16
- package/lib/modules/Date/utils.js +123 -174
- package/lib/modules/Discount/index.d.ts +0 -1
- package/lib/modules/Discount/index.js +128 -130
- package/lib/modules/Discount/types.d.ts +0 -1
- package/lib/modules/Discount/types.js +31 -9
- package/lib/modules/Guests/index.js +56 -30
- package/lib/modules/Guests/types.js +33 -23
- package/lib/modules/Holder/index.js +189 -209
- package/lib/modules/Holder/types.js +16 -4
- package/lib/modules/Holder/utils.js +49 -20
- package/lib/modules/OpenData/index.js +76 -69
- package/lib/modules/OpenData/types.js +16 -4
- package/lib/modules/OpenData/utils.js +78 -44
- package/lib/modules/Order/index.js +1909 -1572
- package/lib/modules/Order/types.js +35 -78
- package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
- package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
- package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
- package/lib/modules/Order/utils.js +634 -799
- package/lib/modules/Payment/cash.js +33 -20
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
- package/lib/modules/Payment/eftpos.js +30 -16
- package/lib/modules/Payment/index.js +378 -518
- package/lib/modules/Payment/mx51.js +0 -1
- package/lib/modules/Payment/types.d.ts +4 -8
- package/lib/modules/Payment/types.js +107 -216
- package/lib/modules/Payment/utils.js +48 -51
- package/lib/modules/Payment/walletpass.d.ts +0 -2
- package/lib/modules/Payment/walletpass.js +211 -226
- package/lib/modules/Product/index.js +46 -51
- package/lib/modules/Product/types.js +16 -4
- package/lib/modules/Product/utils.js +33 -32
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +117 -117
- package/lib/modules/ProductList/types.d.ts +0 -1
- package/lib/modules/ProductList/types.js +31 -9
- package/lib/modules/Quotation/index.js +100 -66
- package/lib/modules/Quotation/types.js +16 -4
- package/lib/modules/Resource/index.js +59 -27
- package/lib/modules/Resource/types.js +32 -22
- package/lib/modules/Resource/utils.js +38 -30
- package/lib/modules/ResourcePlanner/index.js +61 -60
- package/lib/modules/ResourcePlanner/planner.js +384 -346
- package/lib/modules/ResourcePlanner/types.js +16 -4
- package/lib/modules/Rules/index.js +903 -1475
- package/lib/modules/Rules/types.js +40 -17
- package/lib/modules/SalesSummary/index.js +90 -85
- package/lib/modules/SalesSummary/types.js +16 -4
- package/lib/modules/SalesSummary/utils.js +427 -351
- package/lib/modules/ScanOrderLogger/index.js +79 -59
- package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
- package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
- package/lib/modules/ScanOrderLogger/types.js +16 -4
- package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
- package/lib/modules/Schedule/index.js +114 -100
- package/lib/modules/Schedule/type.js +16 -4
- package/lib/modules/Schedule/types.js +16 -4
- package/lib/modules/Schedule/utils.js +291 -433
- package/lib/modules/Step/index.js +52 -40
- package/lib/modules/Step/tyeps.js +16 -4
- package/lib/modules/Summary/index.js +71 -66
- package/lib/modules/Summary/types.js +16 -4
- package/lib/modules/Summary/utils.js +418 -791
- package/lib/modules/SurchargeList/index.js +60 -46
- package/lib/modules/SurchargeList/types.js +16 -4
- package/lib/modules/index.js +63 -245
- package/lib/plugins/app.js +16 -4
- package/lib/plugins/index.js +25 -36
- package/lib/plugins/request.js +126 -137
- package/lib/plugins/shopStore.js +16 -4
- package/lib/plugins/user.js +16 -4
- package/lib/plugins/window.js +179 -171
- package/lib/server/index.js +2337 -2675
- package/lib/server/modules/floor-plan/index.js +123 -102
- package/lib/server/modules/floor-plan/types.js +30 -15
- package/lib/server/modules/index.js +68 -106
- package/lib/server/modules/menu/index.js +122 -146
- package/lib/server/modules/menu/types.js +31 -18
- package/lib/server/modules/order/index.js +642 -567
- package/lib/server/modules/order/types.js +32 -117
- package/lib/server/modules/order/utils/filterBookings.js +194 -219
- package/lib/server/modules/order/utils/filterOrders.js +92 -118
- package/lib/server/modules/payment/index.js +83 -59
- package/lib/server/modules/payment/types.js +16 -4
- package/lib/server/modules/products/index.js +459 -575
- package/lib/server/modules/products/types.js +34 -44
- package/lib/server/modules/quotation/index.js +172 -137
- package/lib/server/modules/quotation/types.js +31 -21
- package/lib/server/modules/resource/index.js +184 -213
- package/lib/server/modules/resource/types.js +33 -42
- package/lib/server/modules/schedule/index.js +123 -135
- package/lib/server/modules/schedule/types.js +21 -14
- package/lib/server/modules/schedule/utils.js +163 -334
- package/lib/server/types.js +16 -4
- package/lib/server/utils/index.js +23 -25
- package/lib/server/utils/product.js +139 -196
- package/lib/server/utils/schedule.js +41 -34
- package/lib/server/utils/small-ticket.js +456 -478
- package/lib/server/utils/time.js +49 -40
- package/lib/solution/BaseSales/index.js +1016 -850
- package/lib/solution/BaseSales/types.js +37 -41
- package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
- package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
- package/lib/solution/BaseSales/utils.js +140 -155
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1340 -1530
- package/lib/solution/BookingByStep/types.js +99 -40
- package/lib/solution/BookingByStep/utils/capacity.js +160 -192
- package/lib/solution/BookingByStep/utils/products.js +52 -42
- package/lib/solution/BookingByStep/utils/resources.js +330 -527
- package/lib/solution/BookingByStep/utils/stock.js +44 -65
- package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +459 -543
- package/lib/solution/BookingTicket/types.js +77 -99
- package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
- package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
- package/lib/solution/BookingTicket/utils/cartView.js +94 -110
- package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
- package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
- package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
- package/lib/solution/BuyTickets/index.js +70 -67
- package/lib/solution/BuyTickets/types.js +38 -22
- package/lib/solution/Checkout/index.js +1158 -1451
- package/lib/solution/Checkout/types.js +61 -91
- package/lib/solution/Checkout/utils/index.js +156 -228
- package/lib/solution/PlaceOrder/index.js +0 -55
- package/lib/solution/RegisterAndLogin/config.js +460 -493
- package/lib/solution/RegisterAndLogin/index.js +630 -633
- package/lib/solution/RegisterAndLogin/types.js +76 -189
- package/lib/solution/RegisterAndLogin/utils.js +125 -183
- package/lib/solution/Sales/index.js +320 -317
- package/lib/solution/Sales/types.js +33 -27
- package/lib/solution/ScanOrder/index.js +862 -831
- package/lib/solution/ScanOrder/types.js +34 -33
- package/lib/solution/ScanOrder/utils.js +371 -406
- package/lib/solution/ShopDiscount/index.js +233 -235
- package/lib/solution/ShopDiscount/types.d.ts +4 -5
- package/lib/solution/ShopDiscount/types.js +37 -15
- package/lib/solution/ShopDiscount/utils.d.ts +0 -9
- package/lib/solution/ShopDiscount/utils.js +172 -309
- package/lib/solution/UnifiedBookingSales/index.js +405 -379
- package/lib/solution/UnifiedBookingSales/types.js +31 -12
- package/lib/solution/VenueBooking/index.d.ts +3 -31
- package/lib/solution/VenueBooking/index.js +916 -967
- package/lib/solution/VenueBooking/types.d.ts +1 -3
- package/lib/solution/VenueBooking/types.js +39 -20
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
- package/lib/solution/VenueBooking/utils/resource.js +54 -31
- package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
- package/lib/solution/VenueBooking/utils.js +67 -130
- package/lib/solution/index.js +41 -124
- package/lib/store/createStore.js +29 -32
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +16 -4
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +47 -81
- package/package.json +2 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
package/lib/server/types.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
14
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
15
|
+
// src/server/types.ts
|
|
16
|
+
var types_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
15
|
|
|
3
|
-
|
|
4
|
-
|
|
16
|
+
// src/server/utils/index.ts
|
|
17
|
+
var utils_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(utils_exports);
|
|
19
|
+
__reExport(utils_exports, require("./time"), module.exports);
|
|
20
|
+
__reExport(utils_exports, require("./schedule"), module.exports);
|
|
21
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
22
|
+
0 && (module.exports = {
|
|
23
|
+
...require("./time"),
|
|
24
|
+
...require("./schedule")
|
|
5
25
|
});
|
|
6
|
-
var _time = require("./time");
|
|
7
|
-
Object.keys(_time).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _time[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function () {
|
|
13
|
-
return _time[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
var _schedule = require("./schedule");
|
|
18
|
-
Object.keys(_schedule).forEach(function (key) {
|
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
|
20
|
-
if (key in exports && exports[key] === _schedule[key]) return;
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _schedule[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
@@ -1,105 +1,90 @@
|
|
|
1
|
-
|
|
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);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/utils/product.ts
|
|
20
|
+
var product_exports = {};
|
|
21
|
+
__export(product_exports, {
|
|
22
|
+
applyDetailValueToProducts: () => applyDetailValueToProducts,
|
|
23
|
+
applyI18nToProducts: () => applyI18nToProducts,
|
|
24
|
+
applyPriceDataToProducts: () => applyPriceDataToProducts,
|
|
25
|
+
getIsSessionProduct: () => getIsSessionProduct,
|
|
26
|
+
perfMark: () => perfMark
|
|
5
27
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.getIsSessionProduct = void 0;
|
|
10
|
-
exports.perfMark = perfMark;
|
|
11
|
-
var _utils = require("../modules/schedule/utils");
|
|
12
|
-
var _utils2 = require("../../modules/Cart/utils");
|
|
28
|
+
module.exports = __toCommonJS(product_exports);
|
|
29
|
+
var import_utils = require("../modules/schedule/utils");
|
|
30
|
+
var import_utils2 = require("../../modules/Cart/utils");
|
|
13
31
|
function perfMark(label, durationMs, meta) {
|
|
14
32
|
try {
|
|
15
|
-
const w = typeof window !==
|
|
16
|
-
if (!w)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
w.__PERF__.records.push({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
ts: Date.now(),
|
|
24
|
-
...meta
|
|
25
|
-
});
|
|
26
|
-
} catch {/* noop */}
|
|
33
|
+
const w = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : null;
|
|
34
|
+
if (!w)
|
|
35
|
+
return;
|
|
36
|
+
if (!w.__PERF__)
|
|
37
|
+
w.__PERF__ = { records: [] };
|
|
38
|
+
w.__PERF__.records.push({ label, duration: Math.round(durationMs * 100) / 100, ts: Date.now(), ...meta });
|
|
39
|
+
} catch {
|
|
40
|
+
}
|
|
27
41
|
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* 构建价格数据的 Map 索引结构
|
|
31
|
-
* 使用三层 Map 实现 O(1) 查询,大幅提升性能
|
|
32
|
-
* @param priceData 价格数据数组
|
|
33
|
-
* @returns 三层 Map 索引:商品、variant、bundle
|
|
34
|
-
*/
|
|
35
42
|
function buildPriceIndexMap(priceData) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
priceData.forEach(p => {
|
|
43
|
+
const priceMap = new Map(
|
|
44
|
+
priceData.map((p) => [p.id, p])
|
|
45
|
+
);
|
|
46
|
+
const variantMap = /* @__PURE__ */ new Map();
|
|
47
|
+
priceData.forEach((p) => {
|
|
42
48
|
if (p.variant && p.variant.length > 0) {
|
|
43
|
-
const variantById = new Map(p.variant.map(v => [v.id, v]));
|
|
49
|
+
const variantById = new Map(p.variant.map((v) => [v.id, v]));
|
|
44
50
|
variantMap.set(p.id, variantById);
|
|
45
51
|
}
|
|
46
52
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const bundleMap = new Map();
|
|
50
|
-
priceData.forEach(p => {
|
|
53
|
+
const bundleMap = /* @__PURE__ */ new Map();
|
|
54
|
+
priceData.forEach((p) => {
|
|
51
55
|
if (p.bundle_group && p.bundle_group.length > 0) {
|
|
52
|
-
const groupMap = new Map();
|
|
53
|
-
p.bundle_group.forEach(bg => {
|
|
54
|
-
const itemMap = new Map((bg.bundle_item || []).map(bi => [bi.id, bi]));
|
|
56
|
+
const groupMap = /* @__PURE__ */ new Map();
|
|
57
|
+
p.bundle_group.forEach((bg) => {
|
|
58
|
+
const itemMap = new Map((bg.bundle_item || []).map((bi) => [bi.id, bi]));
|
|
55
59
|
groupMap.set(bg.id, itemMap);
|
|
56
60
|
});
|
|
57
61
|
bundleMap.set(p.id, groupMap);
|
|
58
62
|
}
|
|
59
63
|
});
|
|
60
|
-
return {
|
|
61
|
-
priceMap,
|
|
62
|
-
variantMap,
|
|
63
|
-
bundleMap
|
|
64
|
-
};
|
|
64
|
+
return { priceMap, variantMap, bundleMap };
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* 将价格数据应用到商品列表(高性能版本)
|
|
69
|
-
* 通过预构建 Map 索引,将时间复杂度从 O(n×m) 优化到 O(n+m)
|
|
70
|
-
* @param products 商品列表
|
|
71
|
-
* @param priceData 价格数据
|
|
72
|
-
* @returns 应用价格后的商品列表
|
|
73
|
-
*/
|
|
74
66
|
function applyPriceDataToProducts(products, priceData) {
|
|
75
67
|
const t0 = performance.now();
|
|
76
68
|
if (!priceData || priceData.length === 0) {
|
|
69
|
+
console.log("[applyPriceDataToProducts] 没有价格数据,返回原商品");
|
|
77
70
|
return products;
|
|
78
71
|
}
|
|
79
72
|
const t1 = performance.now();
|
|
80
|
-
const {
|
|
81
|
-
|
|
82
|
-
variantMap,
|
|
83
|
-
bundleMap
|
|
84
|
-
} = buildPriceIndexMap(priceData);
|
|
85
|
-
perfMark('buildPriceIndexMap', performance.now() - t1, {
|
|
86
|
-
priceCount: priceData.length
|
|
87
|
-
});
|
|
73
|
+
const { priceMap, variantMap, bundleMap } = buildPriceIndexMap(priceData);
|
|
74
|
+
perfMark("buildPriceIndexMap", performance.now() - t1, { priceCount: priceData.length });
|
|
88
75
|
const t2 = performance.now();
|
|
89
|
-
const updatedProducts = products.map(product => {
|
|
76
|
+
const updatedProducts = products.map((product) => {
|
|
90
77
|
const priceInfo = priceMap.get(product.id);
|
|
91
78
|
if (!priceInfo) {
|
|
92
79
|
return product;
|
|
93
80
|
}
|
|
94
|
-
const updatedProduct = {
|
|
95
|
-
...product
|
|
96
|
-
};
|
|
81
|
+
const updatedProduct = { ...product };
|
|
97
82
|
updatedProduct.price = priceInfo.price;
|
|
98
83
|
updatedProduct.base_price = priceInfo.base_price;
|
|
99
84
|
if (updatedProduct.variant && updatedProduct.variant.length > 0) {
|
|
100
85
|
const productVariantMap = variantMap.get(product.id);
|
|
101
86
|
if (productVariantMap) {
|
|
102
|
-
updatedProduct.variant = updatedProduct.variant.map(v => {
|
|
87
|
+
updatedProduct.variant = updatedProduct.variant.map((v) => {
|
|
103
88
|
const priceVariant = productVariantMap.get(v.id);
|
|
104
89
|
if (priceVariant) {
|
|
105
90
|
return {
|
|
@@ -115,155 +100,127 @@ function applyPriceDataToProducts(products, priceData) {
|
|
|
115
100
|
if (updatedProduct.bundle_group && updatedProduct.bundle_group.length > 0) {
|
|
116
101
|
const productBundleMap = bundleMap.get(product.id);
|
|
117
102
|
if (productBundleMap) {
|
|
118
|
-
updatedProduct.bundle_group = updatedProduct.bundle_group.map(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
103
|
+
updatedProduct.bundle_group = updatedProduct.bundle_group.map(
|
|
104
|
+
(bg) => {
|
|
105
|
+
const groupItemMap = productBundleMap.get(bg.id);
|
|
106
|
+
if (!groupItemMap)
|
|
107
|
+
return bg;
|
|
108
|
+
return {
|
|
109
|
+
...bg,
|
|
110
|
+
bundle_item: bg.bundle_item.map((bi) => {
|
|
111
|
+
const priceBi = groupItemMap.get(bi.id);
|
|
112
|
+
if (priceBi) {
|
|
113
|
+
let price = priceBi.price;
|
|
114
|
+
return {
|
|
115
|
+
...bi,
|
|
116
|
+
price: String(price),
|
|
117
|
+
base_price: String(priceBi.base_price)
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return bi;
|
|
121
|
+
})
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
);
|
|
137
125
|
}
|
|
138
126
|
}
|
|
139
127
|
return updatedProduct;
|
|
140
128
|
});
|
|
141
|
-
perfMark(
|
|
142
|
-
|
|
143
|
-
});
|
|
144
|
-
perfMark('applyPriceDataToProducts', performance.now() - t0, {
|
|
129
|
+
perfMark("applyPriceDataToProducts.mapProducts", performance.now() - t2, { count: products.length });
|
|
130
|
+
perfMark("applyPriceDataToProducts", performance.now() - t0, {
|
|
145
131
|
productCount: products.length,
|
|
146
132
|
priceCount: priceData.length
|
|
147
133
|
});
|
|
148
134
|
return updatedProducts;
|
|
149
135
|
}
|
|
150
|
-
|
|
151
|
-
return [
|
|
136
|
+
var getIsSessionProduct = (product) => {
|
|
137
|
+
return ["session_product", "session_ticket"].includes(product.extension_type);
|
|
152
138
|
};
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* 获取是否打开详情弹窗
|
|
156
|
-
* @param product 商品
|
|
157
|
-
* @param context 格式化器上下文
|
|
158
|
-
* @returns 是否打开详情弹窗
|
|
159
|
-
*/
|
|
160
|
-
exports.getIsSessionProduct = getIsSessionProduct;
|
|
161
|
-
const getIsOpenDetailModal = (product, context) => {
|
|
162
|
-
/** 是否为套餐组商品 */
|
|
139
|
+
var getIsOpenDetailModal = (product, context) => {
|
|
163
140
|
const isBundleProduct = product.bundle_group_count > 0;
|
|
164
|
-
|
|
165
|
-
/** 是否为选项组商品 */
|
|
166
141
|
const isOptionProduct = product.option_group_count > 0;
|
|
167
|
-
|
|
168
|
-
/** 是否为组合规格商品 */
|
|
169
142
|
const isVariantProduct = product.is_variant > 0;
|
|
170
|
-
|
|
171
|
-
/** 是否为日程商品 */
|
|
172
143
|
const isSessionProduct = getIsSessionProduct(product);
|
|
173
|
-
|
|
174
|
-
// 获取商品关联的日程时间段
|
|
175
144
|
let scheduleTimeSlots = [];
|
|
176
|
-
if (isSessionProduct && product[
|
|
177
|
-
const scheduleIds = product[
|
|
178
|
-
// 从 context 中获取完整的 scheduleList,然后过滤出商品关联的 schedule
|
|
145
|
+
if (isSessionProduct && product["schedule.ids"] && context.scheduleModule) {
|
|
146
|
+
const scheduleIds = product["schedule.ids"];
|
|
179
147
|
const productSchedules = context.scheduleModule.getScheduleByIds(scheduleIds);
|
|
180
|
-
|
|
181
|
-
|
|
148
|
+
scheduleTimeSlots = (0, import_utils.getScheduleStartEndTimePoints)(
|
|
149
|
+
context.schedule_date,
|
|
150
|
+
productSchedules
|
|
151
|
+
);
|
|
182
152
|
}
|
|
183
|
-
|
|
184
|
-
// 是否打开详情弹窗 套餐组、选项组、组合规格、日程商品、日程时间段大于1个 打开详情弹窗
|
|
185
153
|
const isOpenDetailModal = isBundleProduct || isOptionProduct || isVariantProduct || scheduleTimeSlots.length > 1;
|
|
186
154
|
return {
|
|
187
155
|
isOpenDetailModal,
|
|
188
156
|
scheduleTimeSlots
|
|
189
157
|
};
|
|
190
158
|
};
|
|
191
|
-
|
|
192
|
-
title_i18n:
|
|
193
|
-
subtitle_i18n:
|
|
194
|
-
description_i18n:
|
|
195
|
-
cover_i18n:
|
|
159
|
+
var I18N_FIELD_MAP = {
|
|
160
|
+
title_i18n: "title",
|
|
161
|
+
subtitle_i18n: "subtitle",
|
|
162
|
+
description_i18n: "description",
|
|
163
|
+
cover_i18n: "cover"
|
|
196
164
|
};
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* 根据 locale 将商品的 i18n 字段覆盖到对应原始字段
|
|
200
|
-
*/
|
|
201
165
|
function applyI18nToProducts(products, locale) {
|
|
202
|
-
if (!locale)
|
|
203
|
-
|
|
166
|
+
if (!locale)
|
|
167
|
+
return products;
|
|
168
|
+
return products.map((product) => {
|
|
204
169
|
let patched = null;
|
|
205
170
|
for (const [i18nKey, originalKey] of Object.entries(I18N_FIELD_MAP)) {
|
|
206
171
|
const i18nDict = product[i18nKey];
|
|
207
|
-
if (!i18nDict)
|
|
172
|
+
if (!i18nDict)
|
|
173
|
+
continue;
|
|
208
174
|
const localizedValue = i18nDict[locale];
|
|
209
175
|
if (localizedValue) {
|
|
210
|
-
if (!patched)
|
|
211
|
-
...product
|
|
212
|
-
};
|
|
176
|
+
if (!patched)
|
|
177
|
+
patched = { ...product };
|
|
213
178
|
patched[originalKey] = localizedValue;
|
|
214
179
|
}
|
|
215
180
|
}
|
|
216
181
|
return patched ?? product;
|
|
217
182
|
});
|
|
218
183
|
}
|
|
219
|
-
|
|
184
|
+
var formatDataKey = (data) => {
|
|
185
|
+
var _a, _b, _c, _d;
|
|
220
186
|
const _data = {
|
|
221
187
|
...data
|
|
222
188
|
};
|
|
223
189
|
let key = `${_data.product_id}`;
|
|
224
190
|
let rowKey = key;
|
|
225
|
-
|
|
226
|
-
// 组合规格
|
|
227
191
|
if (_data.product_variant_id) {
|
|
228
192
|
let str = `_${_data.product_variant_id}`;
|
|
229
193
|
key += str;
|
|
230
194
|
rowKey += str;
|
|
231
195
|
}
|
|
232
|
-
|
|
233
|
-
// 单规格
|
|
234
|
-
if (_data?.option?.length) {
|
|
196
|
+
if ((_a = _data == null ? void 0 : _data.option) == null ? void 0 : _a.length) {
|
|
235
197
|
for (const item of _data.option) {
|
|
236
198
|
let str = `_${item.option_group_id}_${item.option_group_item_id}`;
|
|
237
199
|
key += str;
|
|
238
200
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
239
201
|
}
|
|
240
202
|
}
|
|
241
|
-
|
|
242
|
-
// 套餐
|
|
243
|
-
if (_data?.bundle?.length) {
|
|
203
|
+
if ((_b = _data == null ? void 0 : _data.bundle) == null ? void 0 : _b.length) {
|
|
244
204
|
for (const item of _data.bundle) {
|
|
245
205
|
let str = `_${item.group_id}_${item.bundle_product_id}`;
|
|
246
206
|
key += str;
|
|
247
207
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
248
|
-
|
|
249
|
-
if (item?.option) {
|
|
208
|
+
if (item == null ? void 0 : item.option) {
|
|
250
209
|
for (const opt of item.option) {
|
|
251
|
-
let
|
|
252
|
-
key +=
|
|
253
|
-
rowKey += `${
|
|
210
|
+
let str2 = `_${opt.option_group_id}_${opt.option_group_item_id}`;
|
|
211
|
+
key += str2;
|
|
212
|
+
rowKey += `${str2}_${opt.quantity || opt.num}`;
|
|
254
213
|
}
|
|
255
214
|
}
|
|
256
215
|
}
|
|
257
216
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
if (_data?.session) {
|
|
261
|
-
let str = `_${_data?.session?.key}`;
|
|
217
|
+
if (_data == null ? void 0 : _data.session) {
|
|
218
|
+
let str = `_${(_c = _data == null ? void 0 : _data.session) == null ? void 0 : _c.key}`;
|
|
262
219
|
key += str;
|
|
263
220
|
rowKey += str;
|
|
264
221
|
}
|
|
265
|
-
if (_data
|
|
266
|
-
let str = `_${_data
|
|
222
|
+
if (_data == null ? void 0 : _data.schedule) {
|
|
223
|
+
let str = `_${(_d = _data == null ? void 0 : _data.schedule) == null ? void 0 : _d.key}`;
|
|
267
224
|
key += str;
|
|
268
225
|
rowKey += str;
|
|
269
226
|
}
|
|
@@ -271,66 +228,46 @@ const formatDataKey = data => {
|
|
|
271
228
|
_data.rowKey = rowKey;
|
|
272
229
|
return _data;
|
|
273
230
|
};
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* 生成购物车详情值
|
|
277
|
-
* @param product 商品
|
|
278
|
-
* @param context 格式化器上下文
|
|
279
|
-
* @returns 购物车详情值
|
|
280
|
-
*/
|
|
281
|
-
const genCartDetailValue = (product, scheduleTimeSlots) => {
|
|
231
|
+
var genCartDetailValue = (product, scheduleTimeSlots) => {
|
|
282
232
|
const params = {
|
|
283
|
-
product_id: product
|
|
233
|
+
product_id: product == null ? void 0 : product.id,
|
|
284
234
|
option: [],
|
|
285
235
|
bundle: [],
|
|
286
236
|
product_variant_id: 0,
|
|
287
237
|
quantity: 1,
|
|
288
|
-
unique: (0,
|
|
238
|
+
unique: (0, import_utils2.getUniqueId)(),
|
|
289
239
|
session: null
|
|
290
240
|
};
|
|
291
241
|
if (scheduleTimeSlots.length) {
|
|
292
|
-
params.session = scheduleTimeSlots.map(item => ({
|
|
242
|
+
params.session = scheduleTimeSlots.map((item) => ({
|
|
293
243
|
...item,
|
|
294
|
-
unique: (0,
|
|
244
|
+
unique: (0, import_utils2.getUniqueId)()
|
|
295
245
|
}))[0];
|
|
296
246
|
}
|
|
297
|
-
if (product
|
|
298
|
-
params.service_times = product
|
|
247
|
+
if (product == null ? void 0 : product.service_times) {
|
|
248
|
+
params.service_times = product == null ? void 0 : product.service_times;
|
|
299
249
|
}
|
|
300
|
-
|
|
301
|
-
// 票务订单需要返回对应的扩展属性
|
|
302
|
-
if (product?.machine_code) {
|
|
250
|
+
if (product == null ? void 0 : product.machine_code) {
|
|
303
251
|
params.machine_code = product.machine_code;
|
|
304
252
|
}
|
|
305
|
-
if (product
|
|
306
|
-
params.schedule_id = product[
|
|
253
|
+
if (product == null ? void 0 : product["schedule.ids"]) {
|
|
254
|
+
params.schedule_id = product["schedule.ids"];
|
|
307
255
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
if (product?.policy) {
|
|
311
|
-
params.policy_id = product?.policy;
|
|
256
|
+
if (product == null ? void 0 : product.policy) {
|
|
257
|
+
params.policy_id = product == null ? void 0 : product.policy;
|
|
312
258
|
}
|
|
313
|
-
|
|
314
|
-
// appointment预约商品
|
|
315
|
-
if (product?.duration) {
|
|
259
|
+
if (product == null ? void 0 : product.duration) {
|
|
316
260
|
params.duration = product.duration;
|
|
317
261
|
}
|
|
318
262
|
return formatDataKey(params);
|
|
319
263
|
};
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* 将详情值数据应用到商品列表
|
|
323
|
-
* @param products 商品列表
|
|
324
|
-
* @param context 格式化器上下文
|
|
325
|
-
* @returns 应用详情值后的商品列表
|
|
326
|
-
*/
|
|
327
264
|
function applyDetailValueToProducts(products, context) {
|
|
328
265
|
const t0 = performance.now();
|
|
329
|
-
const newProducts = products.map(product => {
|
|
330
|
-
const {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
266
|
+
const newProducts = products.map((product) => {
|
|
267
|
+
const { isOpenDetailModal, scheduleTimeSlots } = getIsOpenDetailModal(
|
|
268
|
+
product,
|
|
269
|
+
context
|
|
270
|
+
);
|
|
334
271
|
let cartDetailValue = null;
|
|
335
272
|
if (!isOpenDetailModal) {
|
|
336
273
|
cartDetailValue = genCartDetailValue(product, scheduleTimeSlots);
|
|
@@ -341,8 +278,14 @@ function applyDetailValueToProducts(products, context) {
|
|
|
341
278
|
cartDetailValue
|
|
342
279
|
};
|
|
343
280
|
});
|
|
344
|
-
perfMark(
|
|
345
|
-
count: products.length
|
|
346
|
-
});
|
|
281
|
+
perfMark("applyDetailValueToProducts", performance.now() - t0, { count: products.length });
|
|
347
282
|
return newProducts;
|
|
348
|
-
}
|
|
283
|
+
}
|
|
284
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
285
|
+
0 && (module.exports = {
|
|
286
|
+
applyDetailValueToProducts,
|
|
287
|
+
applyI18nToProducts,
|
|
288
|
+
applyPriceDataToProducts,
|
|
289
|
+
getIsSessionProduct,
|
|
290
|
+
perfMark
|
|
291
|
+
});
|
|
@@ -1,16 +1,29 @@
|
|
|
1
|
-
|
|
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);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/utils/schedule.ts
|
|
20
|
+
var schedule_exports = {};
|
|
21
|
+
__export(schedule_exports, {
|
|
22
|
+
extractScheduleIdsFromMenus: () => extractScheduleIdsFromMenus,
|
|
23
|
+
extractTimePointsFromSchedules: () => extractTimePointsFromSchedules
|
|
5
24
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var _time = require("./time");
|
|
9
|
-
/**
|
|
10
|
-
* 从餐牌列表中提取所有 schedule IDs
|
|
11
|
-
* @param menus 餐牌列表
|
|
12
|
-
* @returns 去重后的日程ID数组
|
|
13
|
-
*/
|
|
25
|
+
module.exports = __toCommonJS(schedule_exports);
|
|
26
|
+
var import_time = require("./time");
|
|
14
27
|
function extractScheduleIdsFromMenus(menus) {
|
|
15
28
|
const scheduleIds = menus.reduce((ids, menu) => {
|
|
16
29
|
if (menu.schedule && Array.isArray(menu.schedule)) {
|
|
@@ -18,33 +31,25 @@ function extractScheduleIdsFromMenus(menus) {
|
|
|
18
31
|
}
|
|
19
32
|
return ids;
|
|
20
33
|
}, []);
|
|
21
|
-
|
|
22
|
-
// 去重
|
|
23
34
|
return Array.from(new Set(scheduleIds));
|
|
24
35
|
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* 从日程列表中提取所有时间点
|
|
28
|
-
* @param schedules 日程列表
|
|
29
|
-
* @returns 排序后的时间点数组,格式为 ["10:00", "12:00", "14:00", "18:00"]
|
|
30
|
-
*/
|
|
31
36
|
function extractTimePointsFromSchedules(schedules) {
|
|
32
|
-
const timePointsSet = new Set();
|
|
37
|
+
const timePointsSet = /* @__PURE__ */ new Set();
|
|
33
38
|
for (const schedule of schedules) {
|
|
34
39
|
switch (schedule.type) {
|
|
35
|
-
case
|
|
36
|
-
// 标准类型:从 start_time 和 end_time 中提取时间部分
|
|
40
|
+
case "standard":
|
|
37
41
|
if (schedule.start_time) {
|
|
38
|
-
const startTime = (0,
|
|
39
|
-
if (startTime)
|
|
42
|
+
const startTime = (0, import_time.extractTimeFromDateTime)(schedule.start_time);
|
|
43
|
+
if (startTime)
|
|
44
|
+
timePointsSet.add(startTime);
|
|
40
45
|
}
|
|
41
46
|
if (schedule.end_time) {
|
|
42
|
-
const endTime = (0,
|
|
43
|
-
if (endTime)
|
|
47
|
+
const endTime = (0, import_time.extractTimeFromDateTime)(schedule.end_time);
|
|
48
|
+
if (endTime)
|
|
49
|
+
timePointsSet.add(endTime);
|
|
44
50
|
}
|
|
45
51
|
break;
|
|
46
|
-
case
|
|
47
|
-
// 时间段类型:从 time_slot 数组中提取时间
|
|
52
|
+
case "time-slots":
|
|
48
53
|
if (schedule.time_slot && Array.isArray(schedule.time_slot)) {
|
|
49
54
|
for (const slot of schedule.time_slot) {
|
|
50
55
|
if (slot.start_time) {
|
|
@@ -56,8 +61,7 @@ function extractTimePointsFromSchedules(schedules) {
|
|
|
56
61
|
}
|
|
57
62
|
}
|
|
58
63
|
break;
|
|
59
|
-
case
|
|
60
|
-
// 指定日期类型:从 designation 中提取时间
|
|
64
|
+
case "designation":
|
|
61
65
|
if (schedule.designation) {
|
|
62
66
|
const designations = Array.isArray(schedule.designation) ? schedule.designation : [schedule.designation];
|
|
63
67
|
for (const des of designations) {
|
|
@@ -74,8 +78,11 @@ function extractTimePointsFromSchedules(schedules) {
|
|
|
74
78
|
console.warn(`[ScheduleUtils] 未知的日程类型: ${schedule.type}`);
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
|
-
|
|
78
|
-
// 转换为数组并排序
|
|
79
81
|
const timePoints = Array.from(timePointsSet);
|
|
80
|
-
return (0,
|
|
81
|
-
}
|
|
82
|
+
return (0, import_time.sortTimePoints)(timePoints);
|
|
83
|
+
}
|
|
84
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
+
0 && (module.exports = {
|
|
86
|
+
extractScheduleIdsFromMenus,
|
|
87
|
+
extractTimePointsFromSchedules
|
|
88
|
+
});
|