@pisell/pisellos 2.3.74 → 2.3.76
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 +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +134 -134
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +88 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +81 -118
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +25 -23
- package/lib/modules/ResourcePlanner/localClock.js +54 -119
- package/lib/modules/ResourcePlanner/planner.js +589 -770
- package/lib/modules/ResourcePlanner/types.js +10 -29
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3050 -2665
- package/lib/server/modules/floor-plan/index.js +118 -134
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +142 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +784 -1002
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +583 -471
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +220 -186
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1220 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +607 -522
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
- package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
- package/lib/solution/UnifiedBookingSales/types.js +10 -32
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,107 +1,48 @@
|
|
|
1
|
-
|
|
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);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(types_exports, {
|
|
22
|
-
BookingByStepHooks: () => BookingByStepHooks,
|
|
23
|
-
createModule: () => createModule
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
24
5
|
});
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
exports.BookingByStepHooks = void 0;
|
|
7
|
+
exports.createModule = createModule;
|
|
8
|
+
var _modules = require("../../modules");
|
|
27
9
|
function createModule(moduleName, solutionName, name, version) {
|
|
28
10
|
switch (moduleName) {
|
|
29
|
-
case
|
|
30
|
-
return new
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
);
|
|
39
|
-
case
|
|
40
|
-
return new
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
);
|
|
49
|
-
case
|
|
50
|
-
return new
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
);
|
|
11
|
+
case 'cart':
|
|
12
|
+
return new _modules.CartModule(`${solutionName}_${name || moduleName}`, version);
|
|
13
|
+
case 'summary':
|
|
14
|
+
return new _modules.SummaryModule(`${solutionName}_${name || moduleName}`, version);
|
|
15
|
+
case 'salesSummary':
|
|
16
|
+
return new _modules.SalesSummaryModule(`${solutionName}_${name || moduleName}`, version);
|
|
17
|
+
case 'step':
|
|
18
|
+
return new _modules.StepModule(`${solutionName}_${name || moduleName}`, version);
|
|
19
|
+
case 'products':
|
|
20
|
+
return new _modules.ProductList(`${solutionName}_${name || moduleName}`, version);
|
|
21
|
+
case 'date':
|
|
22
|
+
return new _modules.DateModule(`${solutionName}_${name || moduleName}`, version);
|
|
23
|
+
case 'accountList':
|
|
24
|
+
return new _modules.AccountListModule(`${solutionName}_${name || moduleName}`, version);
|
|
25
|
+
case 'order':
|
|
26
|
+
return new _modules.OrderModule(`${solutionName}_${name || moduleName}`, version);
|
|
27
|
+
case 'payment':
|
|
28
|
+
return new _modules.PaymentModule(`${solutionName}_${name || moduleName}`, version);
|
|
29
|
+
case 'schedule':
|
|
30
|
+
return new _modules.ScheduleModule(`${solutionName}_${name || moduleName}`, version);
|
|
31
|
+
case 'scanOrderLogger':
|
|
32
|
+
return new _modules.ScanOrderLoggerModule(`${solutionName}_${name || moduleName}`, version);
|
|
33
|
+
case 'holder':
|
|
34
|
+
return new _modules.HolderModule(`${solutionName}_${name || moduleName}`, version);
|
|
89
35
|
default:
|
|
90
36
|
throw new Error(`Unknown module type: ${moduleName}`);
|
|
91
37
|
}
|
|
92
38
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return
|
|
102
|
-
}
|
|
103
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
104
|
-
0 && (module.exports = {
|
|
105
|
-
BookingByStepHooks,
|
|
106
|
-
createModule
|
|
107
|
-
});
|
|
39
|
+
let BookingByStepHooks = exports.BookingByStepHooks = /*#__PURE__*/function (BookingByStepHooks) {
|
|
40
|
+
BookingByStepHooks["onInited"] = "bookingByStep:onInited";
|
|
41
|
+
BookingByStepHooks["onDestroy"] = "bookingByStep:onDestroy";
|
|
42
|
+
BookingByStepHooks["onProductsLoaded"] = "bookingByStep:onProductsLoaded";
|
|
43
|
+
BookingByStepHooks["onGuestsLoaded"] = "bookingByStep:onGuestsLoaded";
|
|
44
|
+
BookingByStepHooks["onDateLoaded"] = "bookingByStep:onDateLoaded";
|
|
45
|
+
BookingByStepHooks["onResourcesLoaded"] = "bookingByStep:onResourcesLoaded";
|
|
46
|
+
BookingByStepHooks["onAccountLoaded"] = "bookingByStep:onAccountLoaded";
|
|
47
|
+
return BookingByStepHooks;
|
|
48
|
+
}({});
|
|
@@ -1,84 +1,57 @@
|
|
|
1
|
-
|
|
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);
|
|
1
|
+
"use strict";
|
|
28
2
|
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
40
5
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
6
|
+
exports.calculateCartItemsCapacityUsageByResourceType = calculateCartItemsCapacityUsageByResourceType;
|
|
7
|
+
exports.checkSubResourcesCapacity = exports.checkResourceCanUseByCapacity = void 0;
|
|
8
|
+
exports.checkTimeSlotCapacity = checkTimeSlotCapacity;
|
|
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 = ({
|
|
44
23
|
capacity,
|
|
45
24
|
product_bundle
|
|
46
25
|
}) => {
|
|
47
|
-
if (
|
|
48
|
-
return (product_bundle || []).map(
|
|
26
|
+
if (capacity?.type === 'package') {
|
|
27
|
+
return (product_bundle || []).map(d => {
|
|
49
28
|
const id = d.bundle_product_id;
|
|
50
29
|
const variantId = d.bundle_variant_id;
|
|
51
|
-
const item = (
|
|
52
|
-
|
|
53
|
-
);
|
|
54
|
-
if (!item && (window == null ? void 0 : window.sendWarningLog)) {
|
|
30
|
+
const item = (capacity?.package || []).find(item => item.product_id == id || item.product_id == variantId);
|
|
31
|
+
if (!item && window?.sendWarningLog) {
|
|
55
32
|
window.sendWarningLog({
|
|
56
|
-
title:
|
|
57
|
-
content: [
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
key: "package",
|
|
68
|
-
value: JSON.stringify((capacity == null ? void 0 : capacity.package) || [])
|
|
69
|
-
}
|
|
70
|
-
]
|
|
33
|
+
title: '未找到套餐 capacity 配置',
|
|
34
|
+
content: [{
|
|
35
|
+
key: 'product_id',
|
|
36
|
+
value: id
|
|
37
|
+
}, {
|
|
38
|
+
key: 'variant_id',
|
|
39
|
+
value: variantId
|
|
40
|
+
}, {
|
|
41
|
+
key: 'package',
|
|
42
|
+
value: JSON.stringify(capacity?.package || [])
|
|
43
|
+
}]
|
|
71
44
|
});
|
|
72
45
|
}
|
|
73
46
|
return {
|
|
74
|
-
id,
|
|
47
|
+
id: id,
|
|
75
48
|
value: item ? d.num || 0 : 0,
|
|
76
|
-
name:
|
|
49
|
+
name: item?.name || d?.title
|
|
77
50
|
};
|
|
78
51
|
});
|
|
79
52
|
}
|
|
80
|
-
if (
|
|
81
|
-
return (
|
|
53
|
+
if (capacity?.type === 'custom') {
|
|
54
|
+
return (capacity?.custom || []).map(d => {
|
|
82
55
|
return {
|
|
83
56
|
id: d.id,
|
|
84
57
|
value: d.min,
|
|
@@ -86,178 +59,248 @@ var formatDefaultCapacitys = ({
|
|
|
86
59
|
};
|
|
87
60
|
});
|
|
88
61
|
}
|
|
89
|
-
|
|
62
|
+
|
|
63
|
+
// 默认为1
|
|
64
|
+
return [{
|
|
65
|
+
id: 0,
|
|
66
|
+
value: 1,
|
|
67
|
+
name: ''
|
|
68
|
+
}];
|
|
90
69
|
};
|
|
91
|
-
|
|
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
|
+
}) => {
|
|
92
83
|
let sum = 0;
|
|
93
84
|
for (let item of capacity || []) {
|
|
94
85
|
sum += item.value;
|
|
95
86
|
}
|
|
96
87
|
return sum * num;
|
|
97
88
|
};
|
|
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;
|
|
100
99
|
const formatCapacity = formatDefaultCapacitys({
|
|
101
|
-
capacity:
|
|
100
|
+
capacity: targetCartItem._productOrigin?.capacity,
|
|
102
101
|
product_bundle: targetCartItem._origin.product.product_bundle
|
|
103
102
|
});
|
|
104
|
-
const currentCapacity = getSumCapacity({
|
|
103
|
+
const currentCapacity = getSumCapacity({
|
|
104
|
+
capacity: formatCapacity,
|
|
105
|
+
num: targetCartItem?.num || 1
|
|
106
|
+
});
|
|
105
107
|
return {
|
|
106
108
|
formatCapacity,
|
|
107
109
|
currentCapacity
|
|
108
110
|
};
|
|
109
111
|
}
|
|
110
|
-
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @title: 传入资源,如果有子资源,会根据组合资源的 capacity 计算修改子资源的 capacity
|
|
115
|
+
* @description:
|
|
116
|
+
* @param {object} resource
|
|
117
|
+
* @return {*}
|
|
118
|
+
* @Author: jinglin.tan
|
|
119
|
+
*/
|
|
120
|
+
const checkSubResourcesCapacity = resource => {
|
|
111
121
|
if (resource.children && resource.children.length) {
|
|
112
|
-
let countCapacity = resource.capacity;
|
|
122
|
+
let countCapacity = resource.capacity; // 100
|
|
113
123
|
resource.children.forEach((child, index) => {
|
|
114
124
|
if (index === resource.children.length - 1) {
|
|
125
|
+
// 如果是最后一个资源,直接拿剩余未分配完的容量去占用
|
|
126
|
+
// 哪怕这个东西会超过资源本身的 capacity也得让他占,PRD 里有写
|
|
115
127
|
child.capacity = countCapacity;
|
|
116
128
|
return;
|
|
117
129
|
}
|
|
118
130
|
if (child.capacity <= countCapacity) {
|
|
119
|
-
countCapacity -= child.capacity;
|
|
131
|
+
countCapacity -= child.capacity; // 100 - = 90
|
|
120
132
|
} else {
|
|
121
|
-
child.capacity = countCapacity;
|
|
122
|
-
countCapacity = 0;
|
|
133
|
+
child.capacity = countCapacity; // 10
|
|
134
|
+
countCapacity = 0; // 0
|
|
123
135
|
}
|
|
124
136
|
});
|
|
125
137
|
}
|
|
126
138
|
};
|
|
127
|
-
|
|
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
|
|
128
150
|
if (currentCapacity < 0 || requiredCapacity < 0 || maxCapacity <= 0) {
|
|
129
151
|
return false;
|
|
130
152
|
}
|
|
131
153
|
return currentCapacity + requiredCapacity <= maxCapacity;
|
|
132
154
|
};
|
|
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;
|
|
133
166
|
function calculateCartItemsCapacityUsageByResourceType({
|
|
134
167
|
cartItems,
|
|
135
168
|
timeSlotStart,
|
|
136
169
|
timeSlotEnd,
|
|
137
170
|
allProductResources
|
|
138
171
|
}) {
|
|
172
|
+
// 按 form_id 分组当前商品的资源
|
|
139
173
|
const resourceTypeMap = {};
|
|
140
|
-
allProductResources.forEach(
|
|
141
|
-
|
|
142
|
-
const formId = ((_a = resource.form_id) == null ? void 0 : _a.toString()) || "default";
|
|
174
|
+
allProductResources.forEach(resource => {
|
|
175
|
+
const formId = resource.form_id?.toString() || 'default';
|
|
143
176
|
if (!resourceTypeMap[formId]) {
|
|
144
177
|
resourceTypeMap[formId] = [];
|
|
145
178
|
}
|
|
146
179
|
resourceTypeMap[formId].push(resource);
|
|
147
180
|
});
|
|
181
|
+
|
|
182
|
+
// 计算每种资源类型的容量占用
|
|
148
183
|
const capacityUsageByType = {};
|
|
149
|
-
Object.keys(resourceTypeMap).forEach(
|
|
184
|
+
Object.keys(resourceTypeMap).forEach(formId => {
|
|
150
185
|
let totalUsage = 0;
|
|
151
186
|
const resourcesInThisType = resourceTypeMap[formId];
|
|
152
|
-
const resourceIdsInThisType = resourcesInThisType.map(
|
|
153
|
-
cartItems.forEach(
|
|
154
|
-
|
|
155
|
-
|
|
187
|
+
const resourceIdsInThisType = resourcesInThisType.map(r => r.id);
|
|
188
|
+
cartItems.forEach(cartItem => {
|
|
189
|
+
// 检查该商品是否已经选定了时间
|
|
190
|
+
if (!cartItem.start_time || !cartItem.end_time) return;
|
|
191
|
+
|
|
192
|
+
// 构建该商品的时间段
|
|
156
193
|
const itemStart = `${cartItem.start_date} ${cartItem.start_time}`;
|
|
157
194
|
const itemEnd = `${cartItem.end_date || cartItem.start_date} ${cartItem.end_time}`;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
195
|
+
|
|
196
|
+
// 检查时间段是否有重叠
|
|
197
|
+
const hasTimeOverlap = !((0, _dayjs.default)(itemEnd).isBefore((0, _dayjs.default)(timeSlotStart)) || (0, _dayjs.default)(itemStart).isAfter((0, _dayjs.default)(timeSlotEnd)));
|
|
198
|
+
if (!hasTimeOverlap) return;
|
|
199
|
+
|
|
200
|
+
// 检查该商品的资源配置中是否需要这种类型的资源
|
|
201
|
+
// 由于购物车商品只选定了时间,没有选定具体资源,我们需要看商品的资源配置
|
|
161
202
|
const productResourceIds = getResourcesIdsByProduct(cartItem._productOrigin);
|
|
162
|
-
const hasResourceTypeOverlap = productResourceIds.some(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
203
|
+
const hasResourceTypeOverlap = productResourceIds.some(id => resourceIdsInThisType.includes(id));
|
|
204
|
+
if (!hasResourceTypeOverlap) return;
|
|
205
|
+
|
|
206
|
+
// 计算该商品的容量占用
|
|
207
|
+
const {
|
|
208
|
+
currentCapacity
|
|
209
|
+
} = getCapacityInfoByCartItem(cartItem);
|
|
168
210
|
totalUsage += currentCapacity;
|
|
169
211
|
});
|
|
170
212
|
capacityUsageByType[formId] = totalUsage;
|
|
171
213
|
});
|
|
172
214
|
return capacityUsageByType;
|
|
173
215
|
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* 获取商品的资源ID列表
|
|
219
|
+
*/
|
|
174
220
|
function getResourcesIdsByProduct(product) {
|
|
175
|
-
var _a, _b, _c;
|
|
176
221
|
const tempResourceIds = [];
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
tempResourceIds.push(...resource == null ? void 0 : resource.optional_resource);
|
|
222
|
+
product?.product_resource?.resources?.forEach?.(resource => {
|
|
223
|
+
if (resource?.status == 1) {
|
|
224
|
+
if (resource?.default_resource?.length) {
|
|
225
|
+
tempResourceIds.push(...resource?.default_resource);
|
|
226
|
+
} else if (resource?.optional_resource?.length) {
|
|
227
|
+
tempResourceIds.push(...resource?.optional_resource);
|
|
184
228
|
}
|
|
185
229
|
}
|
|
186
230
|
});
|
|
187
231
|
return tempResourceIds;
|
|
188
232
|
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* 检查特定时间段的容量是否足够
|
|
236
|
+
*/
|
|
189
237
|
function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResources) {
|
|
190
|
-
|
|
238
|
+
// 按资源类型分组
|
|
191
239
|
const resourceTypeMap = {};
|
|
192
|
-
allResources.forEach(
|
|
193
|
-
|
|
194
|
-
const formId = ((_a2 = resource.form_id) == null ? void 0 : _a2.toString()) || "default";
|
|
240
|
+
allResources.forEach(resource => {
|
|
241
|
+
const formId = resource.form_id?.toString() || 'default';
|
|
195
242
|
if (!resourceTypeMap[formId]) {
|
|
196
243
|
resourceTypeMap[formId] = [];
|
|
197
244
|
}
|
|
198
245
|
resourceTypeMap[formId].push(resource);
|
|
199
246
|
});
|
|
247
|
+
|
|
248
|
+
// 计算每种资源类型需要的总容量
|
|
200
249
|
const requiredCapacityByType = {};
|
|
201
|
-
cartItems.forEach(
|
|
250
|
+
cartItems.forEach(cartItem => {
|
|
202
251
|
const productResourceIds = getResourcesIdsByProduct(cartItem._productOrigin);
|
|
203
|
-
const {
|
|
204
|
-
|
|
205
|
-
|
|
252
|
+
const {
|
|
253
|
+
currentCapacity
|
|
254
|
+
} = getCapacityInfoByCartItem(cartItem);
|
|
255
|
+
Object.keys(resourceTypeMap).forEach(formId => {
|
|
206
256
|
const resourcesInType = resourceTypeMap[formId];
|
|
207
|
-
const resourceIdsInType = resourcesInType.map(
|
|
208
|
-
const selectType =
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const needsThisResourceType = productResourceIds.some(
|
|
213
|
-
(id) => resourceIdsInType.includes(id)
|
|
214
|
-
);
|
|
257
|
+
const resourceIdsInType = resourcesInType.map(r => r.id);
|
|
258
|
+
const selectType = cartItem._productOrigin?.product_resource?.resources?.find(r => r.id?.toString() === formId)?.type;
|
|
259
|
+
|
|
260
|
+
// 检查该商品是否需要这种类型的资源
|
|
261
|
+
const needsThisResourceType = productResourceIds.some(id => resourceIdsInType.includes(id));
|
|
215
262
|
if (needsThisResourceType) {
|
|
216
|
-
|
|
217
|
-
|
|
263
|
+
// 需要判断是单个预约还是多个预约,如果是单个预约,不用加 capacity,只用+1
|
|
264
|
+
if (selectType === 'single') {
|
|
265
|
+
requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + (cartItem?.num || 1);
|
|
218
266
|
} else {
|
|
219
267
|
requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + currentCapacity;
|
|
220
268
|
}
|
|
269
|
+
// requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + currentCapacity;
|
|
221
270
|
}
|
|
222
271
|
});
|
|
223
272
|
});
|
|
273
|
+
|
|
274
|
+
// 检查每种资源类型是否有足够的容量
|
|
224
275
|
for (const [formId, requiredCapacity] of Object.entries(requiredCapacityByType)) {
|
|
225
276
|
const resourcesInType = resourceTypeMap[formId];
|
|
226
|
-
if (resourcesInType.length === 0)
|
|
227
|
-
|
|
277
|
+
if (resourcesInType.length === 0) continue;
|
|
278
|
+
|
|
279
|
+
// 从购物车商品中获取正确的资源类型配置
|
|
228
280
|
let resourceTypeConfig = null;
|
|
229
281
|
for (const cartItem of cartItems) {
|
|
230
|
-
if (
|
|
231
|
-
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(
|
|
232
|
-
|
|
233
|
-
var _a2;
|
|
234
|
-
return ((_a2 = r.id) == null ? void 0 : _a2.toString()) === formId && r.status === 1;
|
|
235
|
-
}
|
|
236
|
-
);
|
|
237
|
-
if (resourceTypeConfig)
|
|
238
|
-
break;
|
|
282
|
+
if (cartItem._productOrigin?.product_resource?.resources) {
|
|
283
|
+
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(r => r.id?.toString() === formId && r.status === 1);
|
|
284
|
+
if (resourceTypeConfig) break;
|
|
239
285
|
}
|
|
240
286
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
type: resourceTypeConfig == null ? void 0 : resourceTypeConfig.type,
|
|
245
|
-
isMultipleBooking,
|
|
246
|
-
requiredCapacity
|
|
247
|
-
});
|
|
287
|
+
|
|
288
|
+
// 确定这种资源类型的预约类型
|
|
289
|
+
const isMultipleBooking = resourceTypeConfig?.type === 'multiple';
|
|
248
290
|
if (isMultipleBooking) {
|
|
291
|
+
// 多个预约:计算总可用容量
|
|
249
292
|
let totalAvailableCapacity = 0;
|
|
250
|
-
resourcesInType.forEach(
|
|
251
|
-
|
|
252
|
-
|
|
293
|
+
resourcesInType.forEach(resource => {
|
|
294
|
+
// 过滤出在时间段内的资源时间片
|
|
295
|
+
const availableTimes = resource.times.filter(time => {
|
|
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');
|
|
253
297
|
});
|
|
254
298
|
if (availableTimes.length > 0) {
|
|
299
|
+
// 简化逻辑:如果资源在时间段内有可用时间,就计算其容量
|
|
255
300
|
totalAvailableCapacity += resource.capacity || 0;
|
|
256
301
|
}
|
|
257
302
|
});
|
|
258
|
-
console.log(`capacity.ts - 资源类型 ${formId} 多个预约检查: 总容量 ${totalAvailableCapacity}, 需求 ${requiredCapacity}`);
|
|
259
303
|
if (totalAvailableCapacity < requiredCapacity) {
|
|
260
|
-
console.log(`资源类型 ${formId} 容量不足: 需要 ${requiredCapacity}, 可用 ${totalAvailableCapacity}`);
|
|
261
304
|
return {
|
|
262
305
|
success: false,
|
|
263
306
|
required: requiredCapacity,
|
|
@@ -265,18 +308,18 @@ function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResourc
|
|
|
265
308
|
};
|
|
266
309
|
}
|
|
267
310
|
} else {
|
|
311
|
+
// 单个预约:计算可用资源数量
|
|
268
312
|
let availableResourceCount = 0;
|
|
269
|
-
resourcesInType.forEach(
|
|
270
|
-
|
|
271
|
-
|
|
313
|
+
resourcesInType.forEach(resource => {
|
|
314
|
+
// 过滤出在时间段内的资源时间片
|
|
315
|
+
const availableTimes = resource.times.filter(time => {
|
|
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');
|
|
272
317
|
});
|
|
273
318
|
if (availableTimes.length > 0) {
|
|
274
319
|
availableResourceCount++;
|
|
275
320
|
}
|
|
276
321
|
});
|
|
277
|
-
console.log(`capacity.ts - 资源类型 ${formId} 单个预约检查: 可用资源数 ${availableResourceCount}, 需求 ${requiredCapacity}`);
|
|
278
322
|
if (availableResourceCount < requiredCapacity) {
|
|
279
|
-
console.log(`资源类型 ${formId} 数量不足: 需要 ${requiredCapacity}, 可用 ${availableResourceCount}`);
|
|
280
323
|
return {
|
|
281
324
|
success: false,
|
|
282
325
|
required: requiredCapacity,
|
|
@@ -290,15 +333,4 @@ function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResourc
|
|
|
290
333
|
required: 0,
|
|
291
334
|
available: 0
|
|
292
335
|
};
|
|
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
|
-
});
|
|
336
|
+
}
|