@pisell/pisellos 2.3.74 → 2.3.75

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.
Files changed (276) hide show
  1. package/dist/core/index.js +6 -10
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.js +36 -64
  11. package/dist/modules/Payment/index.js +97 -162
  12. package/dist/modules/Rules/index.js +1 -4
  13. package/dist/modules/Schedule/index.js +0 -1
  14. package/dist/modules/Schedule/utils.js +0 -1
  15. package/dist/modules/Step/index.js +0 -1
  16. package/dist/plugins/request.js +1 -4
  17. package/dist/plugins/window.js +2 -6
  18. package/dist/server/index.js +97 -129
  19. package/dist/server/modules/menu/index.js +32 -41
  20. package/dist/server/modules/order/index.js +2 -4
  21. package/dist/server/modules/products/index.js +24 -42
  22. package/dist/server/modules/quotation/index.js +29 -38
  23. package/dist/server/modules/resource/index.js +3 -4
  24. package/dist/server/modules/schedule/index.js +27 -35
  25. package/dist/server/utils/product.js +0 -1
  26. package/dist/solution/BaseSales/index.js +38 -41
  27. package/dist/solution/BookingByStep/index.js +7 -59
  28. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  29. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  30. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  31. package/dist/solution/BookingTicket/index.js +0 -2
  32. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  33. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  34. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  35. package/dist/solution/BuyTickets/index.js +9 -12
  36. package/dist/solution/Checkout/index.js +177 -252
  37. package/dist/solution/Checkout/utils/index.js +4 -16
  38. package/dist/solution/RegisterAndLogin/index.js +30 -76
  39. package/dist/solution/ScanOrder/index.js +50 -60
  40. package/dist/solution/ShopDiscount/index.js +2 -7
  41. package/dist/solution/VenueBooking/index.js +45 -55
  42. package/dist/utils/task.js +15 -18
  43. package/dist/utils/watch.js +0 -1
  44. package/lib/apis/picoding.js +2 -0
  45. package/lib/core/index.js +134 -134
  46. package/lib/effects/index.js +46 -57
  47. package/lib/index.js +82 -49
  48. package/lib/model/index.js +14 -21
  49. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  50. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  51. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  52. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  53. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  54. package/lib/model/strategy/adapter/index.js +100 -64
  55. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  56. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  57. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  58. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  59. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  60. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  61. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  62. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  63. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  64. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  65. package/lib/model/strategy/adapter/type.js +4 -16
  66. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  67. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  68. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  69. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  70. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  72. package/lib/model/strategy/engine.js +270 -168
  73. package/lib/model/strategy/index.js +49 -34
  74. package/lib/model/strategy/strategy-example.js +243 -239
  75. package/lib/model/strategy/type.js +100 -40
  76. package/lib/modules/Account/index.js +39 -53
  77. package/lib/modules/Account/types.js +20 -33
  78. package/lib/modules/AccountList/index.js +116 -154
  79. package/lib/modules/AccountList/types.js +30 -31
  80. package/lib/modules/AccountList/utils.js +18 -30
  81. package/lib/modules/BaseModule.js +23 -42
  82. package/lib/modules/BookingContext/index.js +158 -136
  83. package/lib/modules/BookingContext/types.js +46 -32
  84. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  85. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  86. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  87. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  88. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  89. package/lib/modules/BookingContext/utils/index.js +124 -41
  90. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  91. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  92. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  93. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  94. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  95. package/lib/modules/BookingContext/utils/resources.js +209 -167
  96. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  97. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  98. package/lib/modules/Cart/index.js +170 -124
  99. package/lib/modules/Cart/types.js +46 -51
  100. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  101. package/lib/modules/Cart/utils/cartDate.js +56 -61
  102. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  103. package/lib/modules/Cart/utils/cartNote.js +27 -32
  104. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  105. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  106. package/lib/modules/Cart/utils/cartResource.js +70 -78
  107. package/lib/modules/Cart/utils/changePrice.js +22 -50
  108. package/lib/modules/Cart/utils/index.js +106 -48
  109. package/lib/modules/Customer/constants.js +13 -34
  110. package/lib/modules/Customer/index.js +235 -172
  111. package/lib/modules/Customer/types.js +38 -35
  112. package/lib/modules/Date/index.js +116 -115
  113. package/lib/modules/Date/types.js +16 -28
  114. package/lib/modules/Date/utils.js +174 -123
  115. package/lib/modules/Discount/index.js +122 -127
  116. package/lib/modules/Discount/types.js +9 -31
  117. package/lib/modules/Guests/index.js +30 -56
  118. package/lib/modules/Guests/types.js +23 -33
  119. package/lib/modules/Holder/index.js +209 -189
  120. package/lib/modules/Holder/types.js +4 -16
  121. package/lib/modules/Holder/utils.js +20 -49
  122. package/lib/modules/OpenData/index.js +70 -76
  123. package/lib/modules/OpenData/types.js +4 -16
  124. package/lib/modules/OpenData/utils.js +44 -78
  125. package/lib/modules/Order/index.js +1713 -2118
  126. package/lib/modules/Order/payment-utils.js +77 -120
  127. package/lib/modules/Order/types.js +88 -35
  128. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  129. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  130. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  131. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  132. package/lib/modules/Order/utils.js +814 -647
  133. package/lib/modules/Payment/cash.js +20 -33
  134. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  135. package/lib/modules/Payment/eftpos.js +16 -30
  136. package/lib/modules/Payment/index.js +532 -399
  137. package/lib/modules/Payment/mx51.js +1 -0
  138. package/lib/modules/Payment/types.js +230 -108
  139. package/lib/modules/Payment/utils.js +52 -51
  140. package/lib/modules/Payment/walletpass.js +485 -660
  141. package/lib/modules/Product/index.js +51 -46
  142. package/lib/modules/Product/types.js +4 -16
  143. package/lib/modules/Product/utils.js +32 -33
  144. package/lib/modules/ProductList/index.js +113 -123
  145. package/lib/modules/ProductList/types.js +9 -31
  146. package/lib/modules/Quotation/index.js +81 -118
  147. package/lib/modules/Quotation/types.js +4 -16
  148. package/lib/modules/Resource/index.js +27 -59
  149. package/lib/modules/Resource/types.js +22 -32
  150. package/lib/modules/Resource/utils.js +30 -38
  151. package/lib/modules/ResourcePlanner/index.js +25 -23
  152. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  153. package/lib/modules/ResourcePlanner/planner.js +589 -770
  154. package/lib/modules/ResourcePlanner/types.js +10 -29
  155. package/lib/modules/Rules/index.js +1218 -959
  156. package/lib/modules/Rules/types.js +17 -40
  157. package/lib/modules/SalesSummary/index.js +85 -90
  158. package/lib/modules/SalesSummary/types.js +4 -16
  159. package/lib/modules/SalesSummary/utils.js +355 -430
  160. package/lib/modules/ScanOrderLogger/index.js +59 -79
  161. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  162. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  163. package/lib/modules/ScanOrderLogger/types.js +4 -16
  164. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  165. package/lib/modules/Schedule/index.js +100 -114
  166. package/lib/modules/Schedule/type.js +4 -16
  167. package/lib/modules/Schedule/types.js +4 -16
  168. package/lib/modules/Schedule/utils.js +433 -291
  169. package/lib/modules/Step/index.js +40 -52
  170. package/lib/modules/Step/tyeps.js +4 -16
  171. package/lib/modules/Summary/index.js +66 -71
  172. package/lib/modules/Summary/types.js +4 -16
  173. package/lib/modules/Summary/utils.js +773 -418
  174. package/lib/modules/SurchargeList/index.js +46 -60
  175. package/lib/modules/SurchargeList/types.js +4 -16
  176. package/lib/modules/index.js +245 -63
  177. package/lib/plugins/app.js +4 -16
  178. package/lib/plugins/index.js +36 -25
  179. package/lib/plugins/request.js +137 -126
  180. package/lib/plugins/shopStore.js +4 -16
  181. package/lib/plugins/user.js +4 -16
  182. package/lib/plugins/window.js +171 -179
  183. package/lib/server/index.js +3050 -2665
  184. package/lib/server/modules/floor-plan/index.js +118 -134
  185. package/lib/server/modules/floor-plan/types.js +15 -30
  186. package/lib/server/modules/index.js +106 -68
  187. package/lib/server/modules/menu/index.js +142 -122
  188. package/lib/server/modules/menu/types.js +18 -31
  189. package/lib/server/modules/order/index.js +784 -1002
  190. package/lib/server/modules/order/types.js +122 -33
  191. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  192. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  193. package/lib/server/modules/payment/index.js +59 -83
  194. package/lib/server/modules/payment/types.js +4 -16
  195. package/lib/server/modules/products/index.js +583 -471
  196. package/lib/server/modules/products/types.js +44 -34
  197. package/lib/server/modules/quotation/index.js +137 -172
  198. package/lib/server/modules/quotation/types.js +21 -31
  199. package/lib/server/modules/resource/index.js +220 -186
  200. package/lib/server/modules/resource/types.js +42 -33
  201. package/lib/server/modules/schedule/index.js +135 -123
  202. package/lib/server/modules/schedule/types.js +14 -21
  203. package/lib/server/modules/schedule/utils.js +334 -163
  204. package/lib/server/types.js +4 -16
  205. package/lib/server/utils/index.js +25 -23
  206. package/lib/server/utils/product.js +196 -139
  207. package/lib/server/utils/schedule.js +34 -41
  208. package/lib/server/utils/small-ticket.js +479 -456
  209. package/lib/server/utils/time.js +40 -49
  210. package/lib/solution/BaseSales/index.js +1186 -1410
  211. package/lib/solution/BaseSales/types.js +42 -38
  212. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  213. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  214. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  215. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  216. package/lib/solution/BaseSales/utils.js +158 -143
  217. package/lib/solution/BookingByStep/index.js +1527 -1340
  218. package/lib/solution/BookingByStep/types.js +40 -99
  219. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  220. package/lib/solution/BookingByStep/utils/products.js +42 -52
  221. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  222. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  223. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  224. package/lib/solution/BookingTicket/index.js +607 -522
  225. package/lib/solution/BookingTicket/types.js +99 -77
  226. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  227. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  228. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  229. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  230. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  231. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  232. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  233. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  234. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  235. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  236. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  237. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  238. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  239. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  240. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  241. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  242. package/lib/solution/BuyTickets/index.js +67 -70
  243. package/lib/solution/BuyTickets/types.js +22 -38
  244. package/lib/solution/Checkout/index.js +1451 -1158
  245. package/lib/solution/Checkout/types.js +91 -61
  246. package/lib/solution/Checkout/utils/index.js +228 -156
  247. package/lib/solution/PlaceOrder/index.js +55 -0
  248. package/lib/solution/RegisterAndLogin/config.js +493 -460
  249. package/lib/solution/RegisterAndLogin/index.js +633 -630
  250. package/lib/solution/RegisterAndLogin/types.js +189 -76
  251. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  252. package/lib/solution/Sales/index.js +328 -324
  253. package/lib/solution/Sales/types.js +27 -33
  254. package/lib/solution/ScanOrder/index.js +832 -864
  255. package/lib/solution/ScanOrder/types.js +33 -34
  256. package/lib/solution/ScanOrder/utils.js +409 -374
  257. package/lib/solution/ShopDiscount/index.js +226 -232
  258. package/lib/solution/ShopDiscount/types.js +15 -37
  259. package/lib/solution/ShopDiscount/utils.js +300 -172
  260. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  261. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  262. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  263. package/lib/solution/VenueBooking/index.js +811 -879
  264. package/lib/solution/VenueBooking/types.js +19 -39
  265. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  266. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  267. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  268. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  269. package/lib/solution/VenueBooking/utils.js +130 -67
  270. package/lib/solution/index.js +124 -41
  271. package/lib/store/createStore.js +32 -29
  272. package/lib/types/index.js +4 -16
  273. package/lib/utils/payment-number.js +26 -46
  274. package/lib/utils/task.js +36 -36
  275. package/lib/utils/watch.js +81 -47
  276. package/package.json +2 -1
@@ -1,107 +1,48 @@
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);
1
+ "use strict";
18
2
 
19
- // src/solution/BookingByStep/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- BookingByStepHooks: () => BookingByStepHooks,
23
- createModule: () => createModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(types_exports);
26
- var import_modules = require("../../modules");
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 "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
- );
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
- 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
- });
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
- 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);
1
+ "use strict";
28
2
 
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
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
40
5
  });
41
- module.exports = __toCommonJS(capacity_exports);
42
- var import_dayjs = __toESM(require("dayjs"));
43
- var formatDefaultCapacitys = ({
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 ((capacity == null ? void 0 : capacity.type) === "package") {
48
- return (product_bundle || []).map((d) => {
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 = ((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)) {
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: "未找到套餐 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
- ]
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: (item == null ? void 0 : item.name) || (d == null ? void 0 : d.title)
49
+ name: item?.name || d?.title
77
50
  };
78
51
  });
79
52
  }
80
- if ((capacity == null ? void 0 : capacity.type) === "custom") {
81
- return ((capacity == null ? void 0 : capacity.custom) || []).map((d) => {
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
- return [{ id: 0, value: 1, name: "" }];
62
+
63
+ // 默认为1
64
+ return [{
65
+ id: 0,
66
+ value: 1,
67
+ name: ''
68
+ }];
90
69
  };
91
- var getSumCapacity = ({ capacity, num = 1 }) => {
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: (_a = targetCartItem._productOrigin) == null ? void 0 : _a.capacity,
100
+ capacity: targetCartItem._productOrigin?.capacity,
102
101
  product_bundle: targetCartItem._origin.product.product_bundle
103
102
  });
104
- const currentCapacity = getSumCapacity({ capacity: formatCapacity, num: (targetCartItem == null ? void 0 : targetCartItem.num) || 1 });
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
- var checkSubResourcesCapacity = (resource) => {
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
- var checkResourceCanUseByCapacity = (currentCapacity, requiredCapacity, maxCapacity) => {
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((resource) => {
141
- var _a;
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((formId) => {
184
+ Object.keys(resourceTypeMap).forEach(formId => {
150
185
  let totalUsage = 0;
151
186
  const resourcesInThisType = resourceTypeMap[formId];
152
- const resourceIdsInThisType = resourcesInThisType.map((r) => r.id);
153
- cartItems.forEach((cartItem) => {
154
- if (!cartItem.start_time || !cartItem.end_time)
155
- return;
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
- 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;
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
- (id) => resourceIdsInThisType.includes(id)
164
- );
165
- if (!hasResourceTypeOverlap)
166
- return;
167
- const { currentCapacity } = getCapacityInfoByCartItem(cartItem);
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
- (_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);
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
- var _a, _b;
238
+ // 按资源类型分组
191
239
  const resourceTypeMap = {};
192
- allResources.forEach((resource) => {
193
- var _a2;
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((cartItem) => {
250
+ cartItems.forEach(cartItem => {
202
251
  const productResourceIds = getResourcesIdsByProduct(cartItem._productOrigin);
203
- const { currentCapacity } = getCapacityInfoByCartItem(cartItem);
204
- Object.keys(resourceTypeMap).forEach((formId) => {
205
- var _a2, _b2, _c, _d;
252
+ const {
253
+ currentCapacity
254
+ } = getCapacityInfoByCartItem(cartItem);
255
+ Object.keys(resourceTypeMap).forEach(formId => {
206
256
  const resourcesInType = resourceTypeMap[formId];
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
- );
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
- if (selectType === "single") {
217
- requiredCapacityByType[formId] = (requiredCapacityByType[formId] || 0) + ((cartItem == null ? void 0 : cartItem.num) || 1);
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
- continue;
277
+ if (resourcesInType.length === 0) continue;
278
+
279
+ // 从购物车商品中获取正确的资源类型配置
228
280
  let resourceTypeConfig = null;
229
281
  for (const cartItem of cartItems) {
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;
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
- 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
- });
287
+
288
+ // 确定这种资源类型的预约类型
289
+ const isMultipleBooking = resourceTypeConfig?.type === 'multiple';
248
290
  if (isMultipleBooking) {
291
+ // 多个预约:计算总可用容量
249
292
  let totalAvailableCapacity = 0;
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");
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((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");
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
+ }