@pisell/pisellos 2.2.282 → 2.2.284

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