@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
|
@@ -1,48 +1,107 @@
|
|
|
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/solution/BookingByStep/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
BookingByStepHooks: () => BookingByStepHooks,
|
|
23
|
+
createModule: () => createModule
|
|
5
24
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var _modules = require("../../modules");
|
|
25
|
+
module.exports = __toCommonJS(types_exports);
|
|
26
|
+
var import_modules = require("../../modules");
|
|
9
27
|
function createModule(moduleName, solutionName, name, version) {
|
|
10
28
|
switch (moduleName) {
|
|
11
|
-
case
|
|
12
|
-
return new
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
case
|
|
22
|
-
return new
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
case
|
|
32
|
-
return new
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
case "cart":
|
|
30
|
+
return new import_modules.CartModule(
|
|
31
|
+
`${solutionName}_${name || moduleName}`,
|
|
32
|
+
version
|
|
33
|
+
);
|
|
34
|
+
case "summary":
|
|
35
|
+
return new import_modules.SummaryModule(
|
|
36
|
+
`${solutionName}_${name || moduleName}`,
|
|
37
|
+
version
|
|
38
|
+
);
|
|
39
|
+
case "salesSummary":
|
|
40
|
+
return new import_modules.SalesSummaryModule(
|
|
41
|
+
`${solutionName}_${name || moduleName}`,
|
|
42
|
+
version
|
|
43
|
+
);
|
|
44
|
+
case "step":
|
|
45
|
+
return new import_modules.StepModule(
|
|
46
|
+
`${solutionName}_${name || moduleName}`,
|
|
47
|
+
version
|
|
48
|
+
);
|
|
49
|
+
case "products":
|
|
50
|
+
return new import_modules.ProductList(
|
|
51
|
+
`${solutionName}_${name || moduleName}`,
|
|
52
|
+
version
|
|
53
|
+
);
|
|
54
|
+
case "date":
|
|
55
|
+
return new import_modules.DateModule(
|
|
56
|
+
`${solutionName}_${name || moduleName}`,
|
|
57
|
+
version
|
|
58
|
+
);
|
|
59
|
+
case "accountList":
|
|
60
|
+
return new import_modules.AccountListModule(
|
|
61
|
+
`${solutionName}_${name || moduleName}`,
|
|
62
|
+
version
|
|
63
|
+
);
|
|
64
|
+
case "order":
|
|
65
|
+
return new import_modules.OrderModule(
|
|
66
|
+
`${solutionName}_${name || moduleName}`,
|
|
67
|
+
version
|
|
68
|
+
);
|
|
69
|
+
case "payment":
|
|
70
|
+
return new import_modules.PaymentModule(
|
|
71
|
+
`${solutionName}_${name || moduleName}`,
|
|
72
|
+
version
|
|
73
|
+
);
|
|
74
|
+
case "schedule":
|
|
75
|
+
return new import_modules.ScheduleModule(
|
|
76
|
+
`${solutionName}_${name || moduleName}`,
|
|
77
|
+
version
|
|
78
|
+
);
|
|
79
|
+
case "scanOrderLogger":
|
|
80
|
+
return new import_modules.ScanOrderLoggerModule(
|
|
81
|
+
`${solutionName}_${name || moduleName}`,
|
|
82
|
+
version
|
|
83
|
+
);
|
|
84
|
+
case "holder":
|
|
85
|
+
return new import_modules.HolderModule(
|
|
86
|
+
`${solutionName}_${name || moduleName}`,
|
|
87
|
+
version
|
|
88
|
+
);
|
|
35
89
|
default:
|
|
36
90
|
throw new Error(`Unknown module type: ${moduleName}`);
|
|
37
91
|
}
|
|
38
92
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return
|
|
48
|
-
}({});
|
|
93
|
+
var BookingByStepHooks = /* @__PURE__ */ ((BookingByStepHooks2) => {
|
|
94
|
+
BookingByStepHooks2["onInited"] = "bookingByStep:onInited";
|
|
95
|
+
BookingByStepHooks2["onDestroy"] = "bookingByStep:onDestroy";
|
|
96
|
+
BookingByStepHooks2["onProductsLoaded"] = "bookingByStep:onProductsLoaded";
|
|
97
|
+
BookingByStepHooks2["onGuestsLoaded"] = "bookingByStep:onGuestsLoaded";
|
|
98
|
+
BookingByStepHooks2["onDateLoaded"] = "bookingByStep:onDateLoaded";
|
|
99
|
+
BookingByStepHooks2["onResourcesLoaded"] = "bookingByStep:onResourcesLoaded";
|
|
100
|
+
BookingByStepHooks2["onAccountLoaded"] = "bookingByStep:onAccountLoaded";
|
|
101
|
+
return BookingByStepHooks2;
|
|
102
|
+
})(BookingByStepHooks || {});
|
|
103
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
104
|
+
0 && (module.exports = {
|
|
105
|
+
BookingByStepHooks,
|
|
106
|
+
createModule
|
|
107
|
+
});
|
|
@@ -1,57 +1,84 @@
|
|
|
1
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
28
|
|
|
3
|
-
|
|
4
|
-
|
|
29
|
+
// src/solution/BookingByStep/utils/capacity.ts
|
|
30
|
+
var capacity_exports = {};
|
|
31
|
+
__export(capacity_exports, {
|
|
32
|
+
calculateCartItemsCapacityUsageByResourceType: () => calculateCartItemsCapacityUsageByResourceType,
|
|
33
|
+
checkResourceCanUseByCapacity: () => checkResourceCanUseByCapacity,
|
|
34
|
+
checkSubResourcesCapacity: () => checkSubResourcesCapacity,
|
|
35
|
+
checkTimeSlotCapacity: () => checkTimeSlotCapacity,
|
|
36
|
+
formatDefaultCapacitys: () => formatDefaultCapacitys,
|
|
37
|
+
getCapacityInfoByCartItem: () => getCapacityInfoByCartItem,
|
|
38
|
+
getResourcesIdsByProduct: () => getResourcesIdsByProduct,
|
|
39
|
+
getSumCapacity: () => getSumCapacity
|
|
5
40
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
exports.formatDefaultCapacitys = void 0;
|
|
10
|
-
exports.getCapacityInfoByCartItem = getCapacityInfoByCartItem;
|
|
11
|
-
exports.getResourcesIdsByProduct = getResourcesIdsByProduct;
|
|
12
|
-
exports.getSumCapacity = void 0;
|
|
13
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
/**
|
|
16
|
-
* @title: 基于选择的商品格式化容量
|
|
17
|
-
* @description:
|
|
18
|
-
* @param {any} param1
|
|
19
|
-
* @return {*}
|
|
20
|
-
* @Author: zhiwei.Wang
|
|
21
|
-
*/
|
|
22
|
-
const formatDefaultCapacitys = ({
|
|
41
|
+
module.exports = __toCommonJS(capacity_exports);
|
|
42
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
43
|
+
var formatDefaultCapacitys = ({
|
|
23
44
|
capacity,
|
|
24
45
|
product_bundle
|
|
25
46
|
}) => {
|
|
26
|
-
if (capacity
|
|
27
|
-
return (product_bundle || []).map(d => {
|
|
47
|
+
if ((capacity == null ? void 0 : capacity.type) === "package") {
|
|
48
|
+
return (product_bundle || []).map((d) => {
|
|
28
49
|
const id = d.bundle_product_id;
|
|
29
50
|
const variantId = d.bundle_variant_id;
|
|
30
|
-
const item = (capacity
|
|
31
|
-
|
|
51
|
+
const item = ((capacity == null ? void 0 : capacity.package) || []).find(
|
|
52
|
+
(item2) => item2.product_id == id || item2.product_id == variantId
|
|
53
|
+
);
|
|
54
|
+
if (!item && (window == null ? void 0 : window.sendWarningLog)) {
|
|
32
55
|
window.sendWarningLog({
|
|
33
|
-
title:
|
|
34
|
-
content: [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
56
|
+
title: "未找到套餐 capacity 配置",
|
|
57
|
+
content: [
|
|
58
|
+
{
|
|
59
|
+
key: "product_id",
|
|
60
|
+
value: id
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
key: "variant_id",
|
|
64
|
+
value: variantId
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: "package",
|
|
68
|
+
value: JSON.stringify((capacity == null ? void 0 : capacity.package) || [])
|
|
69
|
+
}
|
|
70
|
+
]
|
|
44
71
|
});
|
|
45
72
|
}
|
|
46
73
|
return {
|
|
47
|
-
id
|
|
74
|
+
id,
|
|
48
75
|
value: item ? d.num || 0 : 0,
|
|
49
|
-
name: item
|
|
76
|
+
name: (item == null ? void 0 : item.name) || (d == null ? void 0 : d.title)
|
|
50
77
|
};
|
|
51
78
|
});
|
|
52
79
|
}
|
|
53
|
-
if (capacity
|
|
54
|
-
return (capacity
|
|
80
|
+
if ((capacity == null ? void 0 : capacity.type) === "custom") {
|
|
81
|
+
return ((capacity == null ? void 0 : capacity.custom) || []).map((d) => {
|
|
55
82
|
return {
|
|
56
83
|
id: d.id,
|
|
57
84
|
value: d.min,
|
|
@@ -59,248 +86,178 @@ const formatDefaultCapacitys = ({
|
|
|
59
86
|
};
|
|
60
87
|
});
|
|
61
88
|
}
|
|
62
|
-
|
|
63
|
-
// 默认为1
|
|
64
|
-
return [{
|
|
65
|
-
id: 0,
|
|
66
|
-
value: 1,
|
|
67
|
-
name: ''
|
|
68
|
-
}];
|
|
89
|
+
return [{ id: 0, value: 1, name: "" }];
|
|
69
90
|
};
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* @title: 获取总容量
|
|
73
|
-
* @description:
|
|
74
|
-
* @param {object} capacity 为 formatDefaultCapacitys()的结果
|
|
75
|
-
* @return {*}
|
|
76
|
-
* @Author: zhiwei.Wang
|
|
77
|
-
*/
|
|
78
|
-
exports.formatDefaultCapacitys = formatDefaultCapacitys;
|
|
79
|
-
const getSumCapacity = ({
|
|
80
|
-
capacity,
|
|
81
|
-
num = 1
|
|
82
|
-
}) => {
|
|
91
|
+
var getSumCapacity = ({ capacity, num = 1 }) => {
|
|
83
92
|
let sum = 0;
|
|
84
93
|
for (let item of capacity || []) {
|
|
85
94
|
sum += item.value;
|
|
86
95
|
}
|
|
87
96
|
return sum * num;
|
|
88
97
|
};
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* 给定购物车数据,返回对应的 capacity 信息和套餐 capacity
|
|
92
|
-
*
|
|
93
|
-
* @export
|
|
94
|
-
* @param {CartItem} targetCartItem
|
|
95
|
-
* @return {*}
|
|
96
|
-
*/
|
|
97
|
-
exports.getSumCapacity = getSumCapacity;
|
|
98
98
|
function getCapacityInfoByCartItem(targetCartItem) {
|
|
99
|
+
var _a;
|
|
99
100
|
const formatCapacity = formatDefaultCapacitys({
|
|
100
|
-
capacity: targetCartItem._productOrigin
|
|
101
|
+
capacity: (_a = targetCartItem._productOrigin) == null ? void 0 : _a.capacity,
|
|
101
102
|
product_bundle: targetCartItem._origin.product.product_bundle
|
|
102
103
|
});
|
|
103
|
-
const currentCapacity = getSumCapacity({
|
|
104
|
-
capacity: formatCapacity,
|
|
105
|
-
num: targetCartItem?.num || 1
|
|
106
|
-
});
|
|
104
|
+
const currentCapacity = getSumCapacity({ capacity: formatCapacity, num: (targetCartItem == null ? void 0 : targetCartItem.num) || 1 });
|
|
107
105
|
return {
|
|
108
106
|
formatCapacity,
|
|
109
107
|
currentCapacity
|
|
110
108
|
};
|
|
111
109
|
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* @title: 传入资源,如果有子资源,会根据组合资源的 capacity 计算修改子资源的 capacity
|
|
115
|
-
* @description:
|
|
116
|
-
* @param {object} resource
|
|
117
|
-
* @return {*}
|
|
118
|
-
* @Author: jinglin.tan
|
|
119
|
-
*/
|
|
120
|
-
const checkSubResourcesCapacity = resource => {
|
|
110
|
+
var checkSubResourcesCapacity = (resource) => {
|
|
121
111
|
if (resource.children && resource.children.length) {
|
|
122
|
-
let countCapacity = resource.capacity;
|
|
112
|
+
let countCapacity = resource.capacity;
|
|
123
113
|
resource.children.forEach((child, index) => {
|
|
124
114
|
if (index === resource.children.length - 1) {
|
|
125
|
-
// 如果是最后一个资源,直接拿剩余未分配完的容量去占用
|
|
126
|
-
// 哪怕这个东西会超过资源本身的 capacity也得让他占,PRD 里有写
|
|
127
115
|
child.capacity = countCapacity;
|
|
128
116
|
return;
|
|
129
117
|
}
|
|
130
118
|
if (child.capacity <= countCapacity) {
|
|
131
|
-
countCapacity -= child.capacity;
|
|
119
|
+
countCapacity -= child.capacity;
|
|
132
120
|
} else {
|
|
133
|
-
child.capacity = countCapacity;
|
|
134
|
-
countCapacity = 0;
|
|
121
|
+
child.capacity = countCapacity;
|
|
122
|
+
countCapacity = 0;
|
|
135
123
|
}
|
|
136
124
|
});
|
|
137
125
|
}
|
|
138
126
|
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* 检查资源是否有足够的容量供额外使用
|
|
142
|
-
* @param currentCapacity - 当前已使用的容量
|
|
143
|
-
* @param requiredCapacity - 需要的额外容量
|
|
144
|
-
* @param maxCapacity - 最大允许容量
|
|
145
|
-
* @returns 如果资源可以容纳额外的容量则返回 true
|
|
146
|
-
*/
|
|
147
|
-
exports.checkSubResourcesCapacity = checkSubResourcesCapacity;
|
|
148
|
-
const checkResourceCanUseByCapacity = (currentCapacity, requiredCapacity, maxCapacity) => {
|
|
149
|
-
// Handle edge cases early
|
|
127
|
+
var checkResourceCanUseByCapacity = (currentCapacity, requiredCapacity, maxCapacity) => {
|
|
150
128
|
if (currentCapacity < 0 || requiredCapacity < 0 || maxCapacity <= 0) {
|
|
151
129
|
return false;
|
|
152
130
|
}
|
|
153
131
|
return currentCapacity + requiredCapacity <= maxCapacity;
|
|
154
132
|
};
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* 计算按资源类型分组的容量占用情况
|
|
158
|
-
*
|
|
159
|
-
* @param {CartItem[]} cartItems 购物车商品列表
|
|
160
|
-
* @param {string} timeSlotStart 时间段开始时间
|
|
161
|
-
* @param {string} timeSlotEnd 时间段结束时间
|
|
162
|
-
* @param {ResourceItem[]} allProductResources 当前商品的所有资源列表
|
|
163
|
-
* @return {Record<string, number>} 返回每种资源类型(form_id)的容量占用
|
|
164
|
-
*/
|
|
165
|
-
exports.checkResourceCanUseByCapacity = checkResourceCanUseByCapacity;
|
|
166
133
|
function calculateCartItemsCapacityUsageByResourceType({
|
|
167
134
|
cartItems,
|
|
168
135
|
timeSlotStart,
|
|
169
136
|
timeSlotEnd,
|
|
170
137
|
allProductResources
|
|
171
138
|
}) {
|
|
172
|
-
// 按 form_id 分组当前商品的资源
|
|
173
139
|
const resourceTypeMap = {};
|
|
174
|
-
allProductResources.forEach(resource => {
|
|
175
|
-
|
|
140
|
+
allProductResources.forEach((resource) => {
|
|
141
|
+
var _a;
|
|
142
|
+
const formId = ((_a = resource.form_id) == null ? void 0 : _a.toString()) || "default";
|
|
176
143
|
if (!resourceTypeMap[formId]) {
|
|
177
144
|
resourceTypeMap[formId] = [];
|
|
178
145
|
}
|
|
179
146
|
resourceTypeMap[formId].push(resource);
|
|
180
147
|
});
|
|
181
|
-
|
|
182
|
-
// 计算每种资源类型的容量占用
|
|
183
148
|
const capacityUsageByType = {};
|
|
184
|
-
Object.keys(resourceTypeMap).forEach(formId => {
|
|
149
|
+
Object.keys(resourceTypeMap).forEach((formId) => {
|
|
185
150
|
let totalUsage = 0;
|
|
186
151
|
const resourcesInThisType = resourceTypeMap[formId];
|
|
187
|
-
const resourceIdsInThisType = resourcesInThisType.map(r => r.id);
|
|
188
|
-
cartItems.forEach(cartItem => {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// 构建该商品的时间段
|
|
152
|
+
const resourceIdsInThisType = resourcesInThisType.map((r) => r.id);
|
|
153
|
+
cartItems.forEach((cartItem) => {
|
|
154
|
+
if (!cartItem.start_time || !cartItem.end_time)
|
|
155
|
+
return;
|
|
193
156
|
const itemStart = `${cartItem.start_date} ${cartItem.start_time}`;
|
|
194
157
|
const itemEnd = `${cartItem.end_date || cartItem.start_date} ${cartItem.end_time}`;
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (!hasTimeOverlap) return;
|
|
199
|
-
|
|
200
|
-
// 检查该商品的资源配置中是否需要这种类型的资源
|
|
201
|
-
// 由于购物车商品只选定了时间,没有选定具体资源,我们需要看商品的资源配置
|
|
158
|
+
const hasTimeOverlap = !((0, import_dayjs.default)(itemEnd).isBefore((0, import_dayjs.default)(timeSlotStart)) || (0, import_dayjs.default)(itemStart).isAfter((0, import_dayjs.default)(timeSlotEnd)));
|
|
159
|
+
if (!hasTimeOverlap)
|
|
160
|
+
return;
|
|
202
161
|
const productResourceIds = getResourcesIdsByProduct(cartItem._productOrigin);
|
|
203
|
-
const hasResourceTypeOverlap = productResourceIds.some(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
} = getCapacityInfoByCartItem(cartItem);
|
|
162
|
+
const hasResourceTypeOverlap = productResourceIds.some(
|
|
163
|
+
(id) => resourceIdsInThisType.includes(id)
|
|
164
|
+
);
|
|
165
|
+
if (!hasResourceTypeOverlap)
|
|
166
|
+
return;
|
|
167
|
+
const { currentCapacity } = getCapacityInfoByCartItem(cartItem);
|
|
210
168
|
totalUsage += currentCapacity;
|
|
211
169
|
});
|
|
212
170
|
capacityUsageByType[formId] = totalUsage;
|
|
213
171
|
});
|
|
214
172
|
return capacityUsageByType;
|
|
215
173
|
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* 获取商品的资源ID列表
|
|
219
|
-
*/
|
|
220
174
|
function getResourcesIdsByProduct(product) {
|
|
175
|
+
var _a, _b, _c;
|
|
221
176
|
const tempResourceIds = [];
|
|
222
|
-
product
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
177
|
+
(_c = (_b = (_a = product == null ? void 0 : product.product_resource) == null ? void 0 : _a.resources) == null ? void 0 : _b.forEach) == null ? void 0 : _c.call(_b, (resource) => {
|
|
178
|
+
var _a2, _b2;
|
|
179
|
+
if ((resource == null ? void 0 : resource.status) == 1) {
|
|
180
|
+
if ((_a2 = resource == null ? void 0 : resource.default_resource) == null ? void 0 : _a2.length) {
|
|
181
|
+
tempResourceIds.push(...resource == null ? void 0 : resource.default_resource);
|
|
182
|
+
} else if ((_b2 = resource == null ? void 0 : resource.optional_resource) == null ? void 0 : _b2.length) {
|
|
183
|
+
tempResourceIds.push(...resource == null ? void 0 : resource.optional_resource);
|
|
228
184
|
}
|
|
229
185
|
}
|
|
230
186
|
});
|
|
231
187
|
return tempResourceIds;
|
|
232
188
|
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* 检查特定时间段的容量是否足够
|
|
236
|
-
*/
|
|
237
189
|
function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResources) {
|
|
238
|
-
|
|
190
|
+
var _a, _b;
|
|
239
191
|
const resourceTypeMap = {};
|
|
240
|
-
allResources.forEach(resource => {
|
|
241
|
-
|
|
192
|
+
allResources.forEach((resource) => {
|
|
193
|
+
var _a2;
|
|
194
|
+
const formId = ((_a2 = resource.form_id) == null ? void 0 : _a2.toString()) || "default";
|
|
242
195
|
if (!resourceTypeMap[formId]) {
|
|
243
196
|
resourceTypeMap[formId] = [];
|
|
244
197
|
}
|
|
245
198
|
resourceTypeMap[formId].push(resource);
|
|
246
199
|
});
|
|
247
|
-
|
|
248
|
-
// 计算每种资源类型需要的总容量
|
|
249
200
|
const requiredCapacityByType = {};
|
|
250
|
-
cartItems.forEach(cartItem => {
|
|
201
|
+
cartItems.forEach((cartItem) => {
|
|
251
202
|
const productResourceIds = getResourcesIdsByProduct(cartItem._productOrigin);
|
|
252
|
-
const {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
Object.keys(resourceTypeMap).forEach(formId => {
|
|
203
|
+
const { currentCapacity } = getCapacityInfoByCartItem(cartItem);
|
|
204
|
+
Object.keys(resourceTypeMap).forEach((formId) => {
|
|
205
|
+
var _a2, _b2, _c, _d;
|
|
256
206
|
const resourcesInType = resourceTypeMap[formId];
|
|
257
|
-
const resourceIdsInType = resourcesInType.map(r => r.id);
|
|
258
|
-
const selectType = cartItem._productOrigin
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
207
|
+
const resourceIdsInType = resourcesInType.map((r) => r.id);
|
|
208
|
+
const selectType = (_d = (_c = (_b2 = (_a2 = cartItem._productOrigin) == null ? void 0 : _a2.product_resource) == null ? void 0 : _b2.resources) == null ? void 0 : _c.find((r) => {
|
|
209
|
+
var _a3;
|
|
210
|
+
return ((_a3 = r.id) == null ? void 0 : _a3.toString()) === formId;
|
|
211
|
+
})) == null ? void 0 : _d.type;
|
|
212
|
+
const needsThisResourceType = productResourceIds.some(
|
|
213
|
+
(id) => resourceIdsInType.includes(id)
|
|
214
|
+
);
|
|
262
215
|
if (needsThisResourceType) {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + (cartItem?.num || 1);
|
|
216
|
+
if (selectType === "single") {
|
|
217
|
+
requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + ((cartItem == null ? void 0 : cartItem.num) || 1);
|
|
266
218
|
} else {
|
|
267
219
|
requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + currentCapacity;
|
|
268
220
|
}
|
|
269
|
-
// requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + currentCapacity;
|
|
270
221
|
}
|
|
271
222
|
});
|
|
272
223
|
});
|
|
273
|
-
|
|
274
|
-
// 检查每种资源类型是否有足够的容量
|
|
275
224
|
for (const [formId, requiredCapacity] of Object.entries(requiredCapacityByType)) {
|
|
276
225
|
const resourcesInType = resourceTypeMap[formId];
|
|
277
|
-
if (resourcesInType.length === 0)
|
|
278
|
-
|
|
279
|
-
// 从购物车商品中获取正确的资源类型配置
|
|
226
|
+
if (resourcesInType.length === 0)
|
|
227
|
+
continue;
|
|
280
228
|
let resourceTypeConfig = null;
|
|
281
229
|
for (const cartItem of cartItems) {
|
|
282
|
-
if (cartItem._productOrigin
|
|
283
|
-
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(
|
|
284
|
-
|
|
230
|
+
if ((_b = (_a = cartItem._productOrigin) == null ? void 0 : _a.product_resource) == null ? void 0 : _b.resources) {
|
|
231
|
+
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(
|
|
232
|
+
(r) => {
|
|
233
|
+
var _a2;
|
|
234
|
+
return ((_a2 = r.id) == null ? void 0 : _a2.toString()) === formId && r.status === 1;
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
if (resourceTypeConfig)
|
|
238
|
+
break;
|
|
285
239
|
}
|
|
286
240
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
241
|
+
const isMultipleBooking = (resourceTypeConfig == null ? void 0 : resourceTypeConfig.type) === "multiple";
|
|
242
|
+
console.log(`capacity.ts - 资源类型 ${formId} 配置:`, {
|
|
243
|
+
resourceTypeConfig,
|
|
244
|
+
type: resourceTypeConfig == null ? void 0 : resourceTypeConfig.type,
|
|
245
|
+
isMultipleBooking,
|
|
246
|
+
requiredCapacity
|
|
247
|
+
});
|
|
290
248
|
if (isMultipleBooking) {
|
|
291
|
-
// 多个预约:计算总可用容量
|
|
292
249
|
let totalAvailableCapacity = 0;
|
|
293
|
-
resourcesInType.forEach(resource => {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
return !(0, _dayjs.default)(time.start_at).isAfter((0, _dayjs.default)(timeSlotStart), 'minute') && !(0, _dayjs.default)(time.end_at).isBefore((0, _dayjs.default)(timeSlotEnd), 'minute') || resource.onlyComputed && (0, _dayjs.default)(time.start_at).isBefore((0, _dayjs.default)(timeSlotEnd), 'minute') && (0, _dayjs.default)(time.end_at).isAfter((0, _dayjs.default)(timeSlotStart), 'minute');
|
|
250
|
+
resourcesInType.forEach((resource) => {
|
|
251
|
+
const availableTimes = resource.times.filter((time) => {
|
|
252
|
+
return !(0, import_dayjs.default)(time.start_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute") && !(0, import_dayjs.default)(time.end_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") || resource.onlyComputed && (0, import_dayjs.default)(time.start_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") && (0, import_dayjs.default)(time.end_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute");
|
|
297
253
|
});
|
|
298
254
|
if (availableTimes.length > 0) {
|
|
299
|
-
// 简化逻辑:如果资源在时间段内有可用时间,就计算其容量
|
|
300
255
|
totalAvailableCapacity += resource.capacity || 0;
|
|
301
256
|
}
|
|
302
257
|
});
|
|
258
|
+
console.log(`capacity.ts - 资源类型 ${formId} 多个预约检查: 总容量 ${totalAvailableCapacity}, 需求 ${requiredCapacity}`);
|
|
303
259
|
if (totalAvailableCapacity < requiredCapacity) {
|
|
260
|
+
console.log(`资源类型 ${formId} 容量不足: 需要 ${requiredCapacity}, 可用 ${totalAvailableCapacity}`);
|
|
304
261
|
return {
|
|
305
262
|
success: false,
|
|
306
263
|
required: requiredCapacity,
|
|
@@ -308,18 +265,18 @@ function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResourc
|
|
|
308
265
|
};
|
|
309
266
|
}
|
|
310
267
|
} else {
|
|
311
|
-
// 单个预约:计算可用资源数量
|
|
312
268
|
let availableResourceCount = 0;
|
|
313
|
-
resourcesInType.forEach(resource => {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
return !(0, _dayjs.default)(time.start_at).isAfter((0, _dayjs.default)(timeSlotStart), 'minute') && !(0, _dayjs.default)(time.end_at).isBefore((0, _dayjs.default)(timeSlotEnd), 'minute') || (0, _dayjs.default)(time.start_at).isBefore((0, _dayjs.default)(timeSlotEnd), 'minute') && (0, _dayjs.default)(time.end_at).isAfter((0, _dayjs.default)(timeSlotStart), 'minute');
|
|
269
|
+
resourcesInType.forEach((resource) => {
|
|
270
|
+
const availableTimes = resource.times.filter((time) => {
|
|
271
|
+
return !(0, import_dayjs.default)(time.start_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute") && !(0, import_dayjs.default)(time.end_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") || (0, import_dayjs.default)(time.start_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") && (0, import_dayjs.default)(time.end_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute");
|
|
317
272
|
});
|
|
318
273
|
if (availableTimes.length > 0) {
|
|
319
274
|
availableResourceCount++;
|
|
320
275
|
}
|
|
321
276
|
});
|
|
277
|
+
console.log(`capacity.ts - 资源类型 ${formId} 单个预约检查: 可用资源数 ${availableResourceCount}, 需求 ${requiredCapacity}`);
|
|
322
278
|
if (availableResourceCount < requiredCapacity) {
|
|
279
|
+
console.log(`资源类型 ${formId} 数量不足: 需要 ${requiredCapacity}, 可用 ${availableResourceCount}`);
|
|
323
280
|
return {
|
|
324
281
|
success: false,
|
|
325
282
|
required: requiredCapacity,
|
|
@@ -333,4 +290,15 @@ function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResourc
|
|
|
333
290
|
required: 0,
|
|
334
291
|
available: 0
|
|
335
292
|
};
|
|
336
|
-
}
|
|
293
|
+
}
|
|
294
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
295
|
+
0 && (module.exports = {
|
|
296
|
+
calculateCartItemsCapacityUsageByResourceType,
|
|
297
|
+
checkResourceCanUseByCapacity,
|
|
298
|
+
checkSubResourcesCapacity,
|
|
299
|
+
checkTimeSlotCapacity,
|
|
300
|
+
formatDefaultCapacitys,
|
|
301
|
+
getCapacityInfoByCartItem,
|
|
302
|
+
getResourcesIdsByProduct,
|
|
303
|
+
getSumCapacity
|
|
304
|
+
});
|