@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.
Files changed (283) 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.d.ts +1 -1
  11. package/dist/modules/Order/index.js +75 -91
  12. package/dist/modules/Order/types.d.ts +3 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/plugins/request.js +1 -4
  19. package/dist/plugins/window.js +2 -6
  20. package/dist/server/index.js +97 -129
  21. package/dist/server/modules/menu/index.js +32 -41
  22. package/dist/server/modules/order/index.js +2 -4
  23. package/dist/server/modules/products/index.js +24 -42
  24. package/dist/server/modules/quotation/index.js +29 -38
  25. package/dist/server/modules/resource/index.js +3 -4
  26. package/dist/server/modules/schedule/index.js +27 -35
  27. package/dist/server/utils/product.js +0 -1
  28. package/dist/solution/BaseSales/index.js +100 -72
  29. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  30. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  31. package/dist/solution/BookingByStep/index.js +7 -59
  32. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  33. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  34. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  35. package/dist/solution/BookingTicket/index.js +0 -2
  36. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  37. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  38. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  39. package/dist/solution/BuyTickets/index.js +9 -12
  40. package/dist/solution/Checkout/index.js +177 -252
  41. package/dist/solution/Checkout/utils/index.js +4 -16
  42. package/dist/solution/RegisterAndLogin/index.js +30 -76
  43. package/dist/solution/ScanOrder/index.js +50 -60
  44. package/dist/solution/ShopDiscount/index.js +2 -7
  45. package/dist/solution/VenueBooking/index.js +45 -55
  46. package/dist/utils/task.js +15 -18
  47. package/dist/utils/watch.js +0 -1
  48. package/lib/apis/picoding.js +2 -0
  49. package/lib/core/index.js +134 -134
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +82 -49
  52. package/lib/model/index.js +14 -21
  53. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  54. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  55. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  56. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  57. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  58. package/lib/model/strategy/adapter/index.js +100 -64
  59. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  60. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  61. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  62. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  63. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  64. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  66. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  71. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  72. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  73. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  74. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  75. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  76. package/lib/model/strategy/engine.js +270 -168
  77. package/lib/model/strategy/index.js +49 -34
  78. package/lib/model/strategy/strategy-example.js +243 -239
  79. package/lib/model/strategy/type.js +100 -40
  80. package/lib/modules/Account/index.js +39 -53
  81. package/lib/modules/Account/types.js +20 -33
  82. package/lib/modules/AccountList/index.js +116 -154
  83. package/lib/modules/AccountList/types.js +30 -31
  84. package/lib/modules/AccountList/utils.js +18 -30
  85. package/lib/modules/BaseModule.js +23 -42
  86. package/lib/modules/BookingContext/index.js +158 -136
  87. package/lib/modules/BookingContext/types.js +46 -32
  88. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  89. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  90. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  91. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  92. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  93. package/lib/modules/BookingContext/utils/index.js +124 -41
  94. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  95. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  96. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  97. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  98. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  99. package/lib/modules/BookingContext/utils/resources.js +209 -167
  100. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  101. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  102. package/lib/modules/Cart/index.js +170 -124
  103. package/lib/modules/Cart/types.js +46 -51
  104. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  105. package/lib/modules/Cart/utils/cartDate.js +56 -61
  106. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  107. package/lib/modules/Cart/utils/cartNote.js +27 -32
  108. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  109. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  110. package/lib/modules/Cart/utils/cartResource.js +70 -78
  111. package/lib/modules/Cart/utils/changePrice.js +22 -50
  112. package/lib/modules/Cart/utils/index.js +106 -48
  113. package/lib/modules/Customer/constants.js +13 -34
  114. package/lib/modules/Customer/index.js +235 -172
  115. package/lib/modules/Customer/types.js +38 -35
  116. package/lib/modules/Date/index.js +116 -115
  117. package/lib/modules/Date/types.js +16 -28
  118. package/lib/modules/Date/utils.js +174 -123
  119. package/lib/modules/Discount/index.js +122 -127
  120. package/lib/modules/Discount/types.js +9 -31
  121. package/lib/modules/Guests/index.js +30 -56
  122. package/lib/modules/Guests/types.js +23 -33
  123. package/lib/modules/Holder/index.js +209 -189
  124. package/lib/modules/Holder/types.js +4 -16
  125. package/lib/modules/Holder/utils.js +20 -49
  126. package/lib/modules/OpenData/index.js +70 -76
  127. package/lib/modules/OpenData/types.js +4 -16
  128. package/lib/modules/OpenData/utils.js +44 -78
  129. package/lib/modules/Order/index.d.ts +1 -1
  130. package/lib/modules/Order/index.js +1733 -2121
  131. package/lib/modules/Order/payment-utils.js +77 -120
  132. package/lib/modules/Order/types.d.ts +3 -1
  133. package/lib/modules/Order/types.js +88 -35
  134. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  135. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  136. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  137. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  138. package/lib/modules/Order/utils.js +814 -647
  139. package/lib/modules/Payment/cash.js +20 -33
  140. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  141. package/lib/modules/Payment/eftpos.js +16 -30
  142. package/lib/modules/Payment/index.js +532 -399
  143. package/lib/modules/Payment/mx51.js +1 -0
  144. package/lib/modules/Payment/types.js +230 -108
  145. package/lib/modules/Payment/utils.js +52 -51
  146. package/lib/modules/Payment/walletpass.js +485 -660
  147. package/lib/modules/Product/index.js +51 -46
  148. package/lib/modules/Product/types.js +4 -16
  149. package/lib/modules/Product/utils.js +32 -33
  150. package/lib/modules/ProductList/index.js +113 -123
  151. package/lib/modules/ProductList/types.js +9 -31
  152. package/lib/modules/Quotation/index.js +81 -118
  153. package/lib/modules/Quotation/types.js +4 -16
  154. package/lib/modules/Resource/index.js +27 -59
  155. package/lib/modules/Resource/types.js +22 -32
  156. package/lib/modules/Resource/utils.js +30 -38
  157. package/lib/modules/ResourcePlanner/index.js +25 -23
  158. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  159. package/lib/modules/ResourcePlanner/planner.js +589 -770
  160. package/lib/modules/ResourcePlanner/types.js +10 -29
  161. package/lib/modules/Rules/index.js +1218 -959
  162. package/lib/modules/Rules/types.js +17 -40
  163. package/lib/modules/SalesSummary/index.js +85 -90
  164. package/lib/modules/SalesSummary/types.js +4 -16
  165. package/lib/modules/SalesSummary/utils.js +355 -430
  166. package/lib/modules/ScanOrderLogger/index.js +59 -79
  167. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  168. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  169. package/lib/modules/ScanOrderLogger/types.js +4 -16
  170. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  171. package/lib/modules/Schedule/index.js +100 -114
  172. package/lib/modules/Schedule/type.js +4 -16
  173. package/lib/modules/Schedule/types.js +4 -16
  174. package/lib/modules/Schedule/utils.js +433 -291
  175. package/lib/modules/Step/index.js +40 -52
  176. package/lib/modules/Step/tyeps.js +4 -16
  177. package/lib/modules/Summary/index.js +66 -71
  178. package/lib/modules/Summary/types.js +4 -16
  179. package/lib/modules/Summary/utils.js +773 -418
  180. package/lib/modules/SurchargeList/index.js +46 -60
  181. package/lib/modules/SurchargeList/types.js +4 -16
  182. package/lib/modules/index.js +245 -63
  183. package/lib/plugins/app.js +4 -16
  184. package/lib/plugins/index.js +36 -25
  185. package/lib/plugins/request.js +137 -126
  186. package/lib/plugins/shopStore.js +4 -16
  187. package/lib/plugins/user.js +4 -16
  188. package/lib/plugins/window.js +171 -179
  189. package/lib/server/index.js +3050 -2665
  190. package/lib/server/modules/floor-plan/index.js +118 -134
  191. package/lib/server/modules/floor-plan/types.js +15 -30
  192. package/lib/server/modules/index.js +106 -68
  193. package/lib/server/modules/menu/index.js +142 -122
  194. package/lib/server/modules/menu/types.js +18 -31
  195. package/lib/server/modules/order/index.js +784 -1002
  196. package/lib/server/modules/order/types.js +122 -33
  197. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  198. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  199. package/lib/server/modules/payment/index.js +59 -83
  200. package/lib/server/modules/payment/types.js +4 -16
  201. package/lib/server/modules/products/index.js +583 -471
  202. package/lib/server/modules/products/types.js +44 -34
  203. package/lib/server/modules/quotation/index.js +137 -172
  204. package/lib/server/modules/quotation/types.js +21 -31
  205. package/lib/server/modules/resource/index.js +220 -186
  206. package/lib/server/modules/resource/types.js +42 -33
  207. package/lib/server/modules/schedule/index.js +135 -123
  208. package/lib/server/modules/schedule/types.js +14 -21
  209. package/lib/server/modules/schedule/utils.js +334 -163
  210. package/lib/server/types.js +4 -16
  211. package/lib/server/utils/index.js +25 -23
  212. package/lib/server/utils/product.js +196 -139
  213. package/lib/server/utils/schedule.js +34 -41
  214. package/lib/server/utils/small-ticket.js +479 -456
  215. package/lib/server/utils/time.js +40 -49
  216. package/lib/solution/BaseSales/index.js +1220 -1412
  217. package/lib/solution/BaseSales/types.js +42 -38
  218. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  219. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  220. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  221. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  222. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  223. package/lib/solution/BaseSales/utils.js +158 -143
  224. package/lib/solution/BookingByStep/index.js +1527 -1340
  225. package/lib/solution/BookingByStep/types.js +40 -99
  226. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  227. package/lib/solution/BookingByStep/utils/products.js +42 -52
  228. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  229. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  230. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  231. package/lib/solution/BookingTicket/index.js +607 -522
  232. package/lib/solution/BookingTicket/types.js +99 -77
  233. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  234. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  235. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  236. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  237. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  238. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  239. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  240. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  241. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  242. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  243. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  244. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  245. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  246. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  247. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  248. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  249. package/lib/solution/BuyTickets/index.js +67 -70
  250. package/lib/solution/BuyTickets/types.js +22 -38
  251. package/lib/solution/Checkout/index.js +1451 -1158
  252. package/lib/solution/Checkout/types.js +91 -61
  253. package/lib/solution/Checkout/utils/index.js +228 -156
  254. package/lib/solution/PlaceOrder/index.js +55 -0
  255. package/lib/solution/RegisterAndLogin/config.js +493 -460
  256. package/lib/solution/RegisterAndLogin/index.js +633 -630
  257. package/lib/solution/RegisterAndLogin/types.js +189 -76
  258. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  259. package/lib/solution/Sales/index.js +328 -324
  260. package/lib/solution/Sales/types.js +27 -33
  261. package/lib/solution/ScanOrder/index.js +832 -864
  262. package/lib/solution/ScanOrder/types.js +33 -34
  263. package/lib/solution/ScanOrder/utils.js +409 -374
  264. package/lib/solution/ShopDiscount/index.js +226 -232
  265. package/lib/solution/ShopDiscount/types.js +15 -37
  266. package/lib/solution/ShopDiscount/utils.js +300 -172
  267. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  268. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  269. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  270. package/lib/solution/VenueBooking/index.js +811 -879
  271. package/lib/solution/VenueBooking/types.js +19 -39
  272. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  273. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  274. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  275. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  276. package/lib/solution/VenueBooking/utils.js +130 -67
  277. package/lib/solution/index.js +124 -41
  278. package/lib/store/createStore.js +32 -29
  279. package/lib/types/index.js +4 -16
  280. package/lib/utils/payment-number.js +26 -46
  281. package/lib/utils/task.js +36 -36
  282. package/lib/utils/watch.js +81 -47
  283. 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
+ }