@pisell/pisellos 0.0.569 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +1 -1
  13. package/dist/modules/BaseModule.js +8 -10
  14. package/dist/modules/Cart/index.js +3 -0
  15. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  16. package/dist/modules/Cart/utils/cartResource.js +0 -2
  17. package/dist/modules/Cart/utils/changePrice.js +9 -16
  18. package/dist/modules/Date/index.js +5 -1
  19. package/dist/modules/Discount/index.d.ts +0 -1
  20. package/dist/modules/Discount/index.js +7 -22
  21. package/dist/modules/Discount/types.d.ts +0 -1
  22. package/dist/modules/OpenData/index.js +2 -0
  23. package/dist/modules/Order/index.js +70 -40
  24. package/dist/modules/Payment/index.js +162 -97
  25. package/dist/modules/Payment/types.d.ts +4 -8
  26. package/dist/modules/Payment/walletpass.d.ts +0 -2
  27. package/dist/modules/Payment/walletpass.js +5 -4
  28. package/dist/modules/ProductList/index.d.ts +1 -1
  29. package/dist/modules/ProductList/index.js +3 -12
  30. package/dist/modules/ProductList/types.d.ts +0 -1
  31. package/dist/modules/Rules/index.js +126 -427
  32. package/dist/modules/SalesSummary/utils.js +1 -2
  33. package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
  34. package/dist/modules/Schedule/index.js +1 -0
  35. package/dist/modules/Schedule/utils.js +1 -0
  36. package/dist/modules/Step/index.js +1 -0
  37. package/dist/modules/Summary/utils.js +22 -43
  38. package/dist/plugins/request.js +4 -1
  39. package/dist/plugins/window.js +6 -2
  40. package/dist/server/index.js +129 -97
  41. package/dist/server/modules/menu/index.js +41 -32
  42. package/dist/server/modules/order/index.js +4 -2
  43. package/dist/server/modules/products/index.js +42 -24
  44. package/dist/server/modules/quotation/index.js +38 -29
  45. package/dist/server/modules/resource/index.js +4 -3
  46. package/dist/server/modules/schedule/index.js +35 -27
  47. package/dist/server/utils/product.js +1 -0
  48. package/dist/solution/BaseSales/index.js +41 -38
  49. package/dist/solution/BookingByStep/index.d.ts +1 -1
  50. package/dist/solution/BookingByStep/index.js +60 -11
  51. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  52. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  53. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  54. package/dist/solution/BookingTicket/index.d.ts +1 -1
  55. package/dist/solution/BookingTicket/index.js +2 -0
  56. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
  57. package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
  58. package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
  59. package/dist/solution/BuyTickets/index.js +12 -9
  60. package/dist/solution/Checkout/index.js +252 -177
  61. package/dist/solution/Checkout/utils/index.js +16 -4
  62. package/dist/solution/RegisterAndLogin/index.js +76 -30
  63. package/dist/solution/ScanOrder/index.js +60 -50
  64. package/dist/solution/ShopDiscount/index.js +14 -15
  65. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  66. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  67. package/dist/solution/ShopDiscount/utils.js +0 -9
  68. package/dist/solution/VenueBooking/index.d.ts +3 -31
  69. package/dist/solution/VenueBooking/index.js +496 -651
  70. package/dist/solution/VenueBooking/types.d.ts +1 -3
  71. package/dist/solution/VenueBooking/types.js +0 -1
  72. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  73. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  74. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  75. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/utils/task.js +18 -15
  78. package/dist/utils/watch.js +1 -0
  79. package/lib/apis/picoding.js +0 -2
  80. package/lib/core/index.js +132 -130
  81. package/lib/effects/index.js +57 -46
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.js +50 -92
  84. package/lib/model/index.js +21 -14
  85. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  86. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  87. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  88. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  89. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  90. package/lib/model/strategy/adapter/index.js +64 -100
  91. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  92. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  93. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  94. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  95. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  96. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  97. package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
  98. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  99. package/lib/model/strategy/adapter/promotion/index.js +49 -1
  100. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  101. package/lib/model/strategy/adapter/type.js +16 -4
  102. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  103. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  104. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  105. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  106. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  107. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  108. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  109. package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
  110. package/lib/model/strategy/engine.js +168 -270
  111. package/lib/model/strategy/index.js +34 -49
  112. package/lib/model/strategy/strategy-example.js +239 -243
  113. package/lib/model/strategy/type.js +40 -100
  114. package/lib/modules/Account/index.js +53 -39
  115. package/lib/modules/Account/types.js +33 -20
  116. package/lib/modules/AccountList/index.js +154 -116
  117. package/lib/modules/AccountList/types.js +31 -30
  118. package/lib/modules/AccountList/utils.js +30 -18
  119. package/lib/modules/BaseModule.d.ts +1 -1
  120. package/lib/modules/BaseModule.js +46 -25
  121. package/lib/modules/BookingContext/index.js +136 -158
  122. package/lib/modules/BookingContext/types.js +32 -46
  123. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
  124. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
  125. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
  126. package/lib/modules/BookingContext/utils/flexible.js +55 -38
  127. package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
  128. package/lib/modules/BookingContext/utils/index.js +41 -124
  129. package/lib/modules/BookingContext/utils/noResource.js +70 -58
  130. package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
  131. package/lib/modules/BookingContext/utils/productExtend.js +155 -202
  132. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  133. package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
  134. package/lib/modules/BookingContext/utils/resources.js +167 -209
  135. package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
  136. package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
  137. package/lib/modules/Cart/index.js +124 -170
  138. package/lib/modules/Cart/types.js +51 -46
  139. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  140. package/lib/modules/Cart/utils/cartDate.js +61 -56
  141. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  142. package/lib/modules/Cart/utils/cartNote.js +32 -27
  143. package/lib/modules/Cart/utils/cartProduct.js +251 -321
  144. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  145. package/lib/modules/Cart/utils/cartResource.js +78 -72
  146. package/lib/modules/Cart/utils/changePrice.js +50 -28
  147. package/lib/modules/Cart/utils/index.js +48 -106
  148. package/lib/modules/Customer/constants.js +34 -13
  149. package/lib/modules/Customer/index.js +169 -232
  150. package/lib/modules/Customer/types.js +35 -38
  151. package/lib/modules/Date/index.js +115 -116
  152. package/lib/modules/Date/types.js +28 -16
  153. package/lib/modules/Date/utils.js +123 -174
  154. package/lib/modules/Discount/index.d.ts +0 -1
  155. package/lib/modules/Discount/index.js +128 -130
  156. package/lib/modules/Discount/types.d.ts +0 -1
  157. package/lib/modules/Discount/types.js +31 -9
  158. package/lib/modules/Guests/index.js +56 -30
  159. package/lib/modules/Guests/types.js +33 -23
  160. package/lib/modules/Holder/index.js +189 -209
  161. package/lib/modules/Holder/types.js +16 -4
  162. package/lib/modules/Holder/utils.js +49 -20
  163. package/lib/modules/OpenData/index.js +76 -69
  164. package/lib/modules/OpenData/types.js +16 -4
  165. package/lib/modules/OpenData/utils.js +78 -44
  166. package/lib/modules/Order/index.js +1909 -1572
  167. package/lib/modules/Order/types.js +35 -78
  168. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  169. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  171. package/lib/modules/Order/utils.js +634 -799
  172. package/lib/modules/Payment/cash.js +33 -20
  173. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  174. package/lib/modules/Payment/eftpos.js +30 -16
  175. package/lib/modules/Payment/index.js +378 -518
  176. package/lib/modules/Payment/mx51.js +0 -1
  177. package/lib/modules/Payment/types.d.ts +4 -8
  178. package/lib/modules/Payment/types.js +107 -216
  179. package/lib/modules/Payment/utils.js +48 -51
  180. package/lib/modules/Payment/walletpass.d.ts +0 -2
  181. package/lib/modules/Payment/walletpass.js +211 -226
  182. package/lib/modules/Product/index.js +46 -51
  183. package/lib/modules/Product/types.js +16 -4
  184. package/lib/modules/Product/utils.js +33 -32
  185. package/lib/modules/ProductList/index.d.ts +1 -1
  186. package/lib/modules/ProductList/index.js +117 -117
  187. package/lib/modules/ProductList/types.d.ts +0 -1
  188. package/lib/modules/ProductList/types.js +31 -9
  189. package/lib/modules/Quotation/index.js +100 -66
  190. package/lib/modules/Quotation/types.js +16 -4
  191. package/lib/modules/Resource/index.js +59 -27
  192. package/lib/modules/Resource/types.js +32 -22
  193. package/lib/modules/Resource/utils.js +38 -30
  194. package/lib/modules/ResourcePlanner/index.js +61 -60
  195. package/lib/modules/ResourcePlanner/planner.js +384 -346
  196. package/lib/modules/ResourcePlanner/types.js +16 -4
  197. package/lib/modules/Rules/index.js +903 -1475
  198. package/lib/modules/Rules/types.js +40 -17
  199. package/lib/modules/SalesSummary/index.js +90 -85
  200. package/lib/modules/SalesSummary/types.js +16 -4
  201. package/lib/modules/SalesSummary/utils.js +427 -351
  202. package/lib/modules/ScanOrderLogger/index.js +79 -59
  203. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  204. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  205. package/lib/modules/ScanOrderLogger/types.js +16 -4
  206. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  207. package/lib/modules/Schedule/index.js +114 -100
  208. package/lib/modules/Schedule/type.js +16 -4
  209. package/lib/modules/Schedule/types.js +16 -4
  210. package/lib/modules/Schedule/utils.js +291 -433
  211. package/lib/modules/Step/index.js +52 -40
  212. package/lib/modules/Step/tyeps.js +16 -4
  213. package/lib/modules/Summary/index.js +71 -66
  214. package/lib/modules/Summary/types.js +16 -4
  215. package/lib/modules/Summary/utils.js +418 -791
  216. package/lib/modules/SurchargeList/index.js +60 -46
  217. package/lib/modules/SurchargeList/types.js +16 -4
  218. package/lib/modules/index.js +63 -245
  219. package/lib/plugins/app.js +16 -4
  220. package/lib/plugins/index.js +25 -36
  221. package/lib/plugins/request.js +126 -137
  222. package/lib/plugins/shopStore.js +16 -4
  223. package/lib/plugins/user.js +16 -4
  224. package/lib/plugins/window.js +179 -171
  225. package/lib/server/index.js +2337 -2675
  226. package/lib/server/modules/floor-plan/index.js +123 -102
  227. package/lib/server/modules/floor-plan/types.js +30 -15
  228. package/lib/server/modules/index.js +68 -106
  229. package/lib/server/modules/menu/index.js +122 -146
  230. package/lib/server/modules/menu/types.js +31 -18
  231. package/lib/server/modules/order/index.js +642 -567
  232. package/lib/server/modules/order/types.js +32 -117
  233. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  234. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  235. package/lib/server/modules/payment/index.js +83 -59
  236. package/lib/server/modules/payment/types.js +16 -4
  237. package/lib/server/modules/products/index.js +459 -575
  238. package/lib/server/modules/products/types.js +34 -44
  239. package/lib/server/modules/quotation/index.js +172 -137
  240. package/lib/server/modules/quotation/types.js +31 -21
  241. package/lib/server/modules/resource/index.js +184 -213
  242. package/lib/server/modules/resource/types.js +33 -42
  243. package/lib/server/modules/schedule/index.js +123 -135
  244. package/lib/server/modules/schedule/types.js +21 -14
  245. package/lib/server/modules/schedule/utils.js +163 -334
  246. package/lib/server/types.js +16 -4
  247. package/lib/server/utils/index.js +23 -25
  248. package/lib/server/utils/product.js +139 -196
  249. package/lib/server/utils/schedule.js +41 -34
  250. package/lib/server/utils/small-ticket.js +456 -478
  251. package/lib/server/utils/time.js +49 -40
  252. package/lib/solution/BaseSales/index.js +1016 -850
  253. package/lib/solution/BaseSales/types.js +37 -41
  254. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  255. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  256. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  257. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  258. package/lib/solution/BaseSales/utils.js +140 -155
  259. package/lib/solution/BookingByStep/index.d.ts +1 -1
  260. package/lib/solution/BookingByStep/index.js +1340 -1530
  261. package/lib/solution/BookingByStep/types.js +99 -40
  262. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  263. package/lib/solution/BookingByStep/utils/products.js +52 -42
  264. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  265. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  266. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  267. package/lib/solution/BookingTicket/index.d.ts +1 -1
  268. package/lib/solution/BookingTicket/index.js +459 -543
  269. package/lib/solution/BookingTicket/types.js +77 -99
  270. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  271. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  272. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  273. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  274. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  275. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  276. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  277. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  278. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  279. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  280. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  281. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  282. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  283. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  284. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  285. package/lib/solution/BuyTickets/index.js +70 -67
  286. package/lib/solution/BuyTickets/types.js +38 -22
  287. package/lib/solution/Checkout/index.js +1158 -1451
  288. package/lib/solution/Checkout/types.js +61 -91
  289. package/lib/solution/Checkout/utils/index.js +156 -228
  290. package/lib/solution/PlaceOrder/index.js +0 -55
  291. package/lib/solution/RegisterAndLogin/config.js +460 -493
  292. package/lib/solution/RegisterAndLogin/index.js +630 -633
  293. package/lib/solution/RegisterAndLogin/types.js +76 -189
  294. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  295. package/lib/solution/Sales/index.js +320 -317
  296. package/lib/solution/Sales/types.js +33 -27
  297. package/lib/solution/ScanOrder/index.js +862 -831
  298. package/lib/solution/ScanOrder/types.js +34 -33
  299. package/lib/solution/ScanOrder/utils.js +371 -406
  300. package/lib/solution/ShopDiscount/index.js +233 -235
  301. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  302. package/lib/solution/ShopDiscount/types.js +37 -15
  303. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  304. package/lib/solution/ShopDiscount/utils.js +172 -309
  305. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  306. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  307. package/lib/solution/VenueBooking/index.d.ts +3 -31
  308. package/lib/solution/VenueBooking/index.js +916 -967
  309. package/lib/solution/VenueBooking/types.d.ts +1 -3
  310. package/lib/solution/VenueBooking/types.js +39 -20
  311. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  312. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  313. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  314. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  315. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  316. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  317. package/lib/solution/VenueBooking/utils.js +67 -130
  318. package/lib/solution/index.js +41 -124
  319. package/lib/store/createStore.js +29 -32
  320. package/lib/types/index.d.ts +1 -1
  321. package/lib/types/index.js +16 -4
  322. package/lib/utils/task.js +36 -36
  323. package/lib/utils/watch.js +47 -81
  324. package/package.json +2 -4
  325. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  326. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  327. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  328. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -7,9 +7,7 @@ export declare enum VenueBookingHooks {
7
7
  onDestroy = "venueBooking:onDestroy",
8
8
  onRetryInit = "venueBooking:onRetryInit",
9
9
  onRefresh = "venueBooking:onRefresh",
10
- onCartValidationChanged = "venueBooking:onCartValidationChanged",
11
- /** 登录客户的智能定价、营销配置与订单汇总已完成刷新 */
12
- onSmartPricingUpdated = "venueBooking:onSmartPricingUpdated"
10
+ onCartValidationChanged = "venueBooking:onCartValidationChanged"
13
11
  }
14
12
  export type VenueBookingStatus = 'idle' | 'initializing' | 'ready' | 'error';
15
13
  export interface VenueBookingEntryContext {
@@ -1,25 +1,44 @@
1
- "use strict";
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/solution/VenueBooking/types.ts
20
+ var types_exports = {};
21
+ __export(types_exports, {
22
+ DEFAULT_SLOT_CONFIG: () => DEFAULT_SLOT_CONFIG,
23
+ VenueBookingHooks: () => VenueBookingHooks
5
24
  });
6
- exports.VenueBookingHooks = exports.DEFAULT_SLOT_CONFIG = void 0;
7
- let VenueBookingHooks = exports.VenueBookingHooks = /*#__PURE__*/function (VenueBookingHooks) {
8
- VenueBookingHooks["onInited"] = "venueBooking:onInited";
9
- VenueBookingHooks["onDestroy"] = "venueBooking:onDestroy";
10
- VenueBookingHooks["onRetryInit"] = "venueBooking:onRetryInit";
11
- VenueBookingHooks["onRefresh"] = "venueBooking:onRefresh";
12
- VenueBookingHooks["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
13
- VenueBookingHooks["onSmartPricingUpdated"] = "venueBooking:onSmartPricingUpdated";
14
- return VenueBookingHooks;
15
- }({}); // ─── 场地预定核心类型 ───
16
- const DEFAULT_SLOT_CONFIG = exports.DEFAULT_SLOT_CONFIG = {
25
+ module.exports = __toCommonJS(types_exports);
26
+ var VenueBookingHooks = /* @__PURE__ */ ((VenueBookingHooks2) => {
27
+ VenueBookingHooks2["onInited"] = "venueBooking:onInited";
28
+ VenueBookingHooks2["onDestroy"] = "venueBooking:onDestroy";
29
+ VenueBookingHooks2["onRetryInit"] = "venueBooking:onRetryInit";
30
+ VenueBookingHooks2["onRefresh"] = "venueBooking:onRefresh";
31
+ VenueBookingHooks2["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
32
+ return VenueBookingHooks2;
33
+ })(VenueBookingHooks || {});
34
+ var DEFAULT_SLOT_CONFIG = {
17
35
  slotDurationMinutes: 30,
18
- businessStartTime: '09:00',
19
- businessEndTime: '23:00',
36
+ businessStartTime: "09:00",
37
+ businessEndTime: "23:00",
20
38
  fewLeftThreshold: 0.8
21
39
  };
22
-
23
- // ─── 时段选择 & 合并 ───
24
-
25
- // ─── Store 状态 ───
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ DEFAULT_SLOT_CONFIG,
43
+ VenueBookingHooks
44
+ });
@@ -1,11 +1,11 @@
1
1
  import type { VenueBookingSlotConfig, VenueResourceRawData, VenueDateSummaryItem, ResourceProductMapping } from '../types';
2
+ import type { QuotationModule } from '../../../modules/Quotation';
2
3
  export declare function buildDateRangeSummary(params: {
3
4
  startDate: string;
4
5
  endDate: string;
5
6
  config: VenueBookingSlotConfig;
6
7
  rawResources: VenueResourceRawData[];
7
8
  resourceProductMap: Map<number | string, ResourceProductMapping[]>;
9
+ quotationModule?: QuotationModule;
8
10
  resolveConfig?: (date: string) => VenueBookingSlotConfig;
9
- /** 按日期构建 slot 智能定价 Map */
10
- buildSlotPriceMap?: (date: string, config: VenueBookingSlotConfig, productIds: number[]) => Map<string, string | null>;
11
11
  }): VenueDateSummaryItem[];
@@ -1,12 +1,39 @@
1
- "use strict";
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
28
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
29
+ // src/solution/VenueBooking/utils/dateSummary.ts
30
+ var dateSummary_exports = {};
31
+ __export(dateSummary_exports, {
32
+ buildDateRangeSummary: () => buildDateRangeSummary
5
33
  });
6
- exports.buildDateRangeSummary = buildDateRangeSummary;
7
- var _dayjs = _interopRequireDefault(require("dayjs"));
8
- var _timeSlot = require("./timeSlot");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ module.exports = __toCommonJS(dateSummary_exports);
35
+ var import_dayjs = __toESM(require("dayjs"));
36
+ var import_timeSlot = require("./timeSlot");
10
37
  function buildDateRangeSummary(params) {
11
38
  const {
12
39
  startDate,
@@ -14,32 +41,38 @@ function buildDateRangeSummary(params) {
14
41
  config,
15
42
  rawResources,
16
43
  resourceProductMap,
17
- resolveConfig,
18
- buildSlotPriceMap
44
+ quotationModule,
45
+ resolveConfig
19
46
  } = params;
20
47
  const result = [];
21
- const productIds = buildSlotPriceMap ? [...new Set([...resourceProductMap.values()].flat().map(m => m.productId))] : [];
22
- let cursor = (0, _dayjs.default)(startDate);
23
- const end = (0, _dayjs.default)(endDate);
48
+ const productIds = quotationModule ? [...new Set([...resourceProductMap.values()].flat().map((m) => m.productId))] : [];
49
+ let cursor = (0, import_dayjs.default)(startDate);
50
+ const end = (0, import_dayjs.default)(endDate);
24
51
  while (!cursor.isAfter(end)) {
25
- const date = cursor.format('YYYY-MM-DD');
26
- const effectiveConfig = resolveConfig?.(date) || config;
27
- const slotPriceMap = buildSlotPriceMap && productIds.length ? buildSlotPriceMap(date, effectiveConfig, productIds) : undefined;
28
- const grid = (0, _timeSlot.buildTimeSlotGrid)({
52
+ const date = cursor.format("YYYY-MM-DD");
53
+ const effectiveConfig = (resolveConfig == null ? void 0 : resolveConfig(date)) || config;
54
+ let quotationPriceMap;
55
+ if (quotationModule && productIds.length) {
56
+ const timeLabels = (0, import_timeSlot.generateTimeLabels)(effectiveConfig);
57
+ const timePoints = timeLabels.map((label) => `${date} ${label}`);
58
+ quotationPriceMap = quotationModule.buildProductPriceMap({ productIds, timePoints });
59
+ }
60
+ const grid = (0, import_timeSlot.buildTimeSlotGrid)({
29
61
  date,
30
62
  config: effectiveConfig,
31
63
  rawResources,
32
64
  resourceProductMap,
33
- slotPriceMap
65
+ quotationPriceMap
34
66
  });
35
67
  let totalSlots = 0;
36
68
  let availableSlots = 0;
37
69
  let lowestPrice = null;
38
70
  for (const resource of grid.resources) {
39
71
  for (const slot of resource.slots) {
40
- if (slot.status === 'past' || slot.status === 'unavailable') continue;
72
+ if (slot.status === "past" || slot.status === "unavailable")
73
+ continue;
41
74
  totalSlots++;
42
- if (slot.status === 'available' || slot.status === 'partially_occupied') {
75
+ if (slot.status === "available" || slot.status === "partially_occupied") {
43
76
  availableSlots++;
44
77
  if (slot.price !== null) {
45
78
  const priceNum = Number(slot.price);
@@ -52,13 +85,13 @@ function buildDateRangeSummary(params) {
52
85
  }
53
86
  let status;
54
87
  if (totalSlots === 0) {
55
- status = 'unavailable';
88
+ status = "unavailable";
56
89
  } else if (availableSlots === 0) {
57
- status = 'sold_out';
90
+ status = "sold_out";
58
91
  } else if ((totalSlots - availableSlots) / totalSlots >= effectiveConfig.fewLeftThreshold) {
59
- status = 'few_left';
92
+ status = "few_left";
60
93
  } else {
61
- status = 'available';
94
+ status = "available";
62
95
  }
63
96
  result.push({
64
97
  date,
@@ -67,7 +100,11 @@ function buildDateRangeSummary(params) {
67
100
  totalSlots,
68
101
  availableSlots
69
102
  });
70
- cursor = cursor.add(1, 'day');
103
+ cursor = cursor.add(1, "day");
71
104
  }
72
105
  return result;
73
- }
106
+ }
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ buildDateRangeSummary
110
+ });
@@ -1,51 +1,69 @@
1
- "use strict";
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/solution/VenueBooking/utils/resource.ts
20
+ var resource_exports = {};
21
+ __export(resource_exports, {
22
+ buildResourceProductMap: () => buildResourceProductMap,
23
+ extractResourceIds: () => extractResourceIds
5
24
  });
6
- exports.buildResourceProductMap = buildResourceProductMap;
7
- exports.extractResourceIds = extractResourceIds;
8
- /**
9
- * 从商品列表里抽取所有 resource_id:
10
- * - 商品绑定的 default_resource / optional_resource
11
- * - 以及这些资源上声明的 combined_resource.resource_ids(若可从 product_resource 读取)
12
- * 用于一次性拉到子资源数据,判定组合资源的可用性。
13
- */
25
+ module.exports = __toCommonJS(resource_exports);
14
26
  function extractResourceIds(products) {
15
- const ids = new Set();
27
+ var _a;
28
+ const ids = /* @__PURE__ */ new Set();
16
29
  for (const product of products) {
17
- const resources = product.product_resource?.resources;
18
- if (!Array.isArray(resources)) continue;
30
+ const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
31
+ if (!Array.isArray(resources))
32
+ continue;
19
33
  for (const resource of resources) {
20
- if (resource.status !== 1) continue;
34
+ if (resource.status !== 1)
35
+ continue;
21
36
  const defaultRes = resource.default_resource || [];
22
37
  const optionalRes = resource.optional_resource || [];
23
38
  for (const id of [...defaultRes, ...optionalRes]) {
24
- if (typeof id === 'number' && id > 0) ids.add(id);
39
+ if (typeof id === "number" && id > 0)
40
+ ids.add(id);
25
41
  }
26
42
  const combined = resource.combined_resource;
27
43
  if (combined && combined.status === 1 && Array.isArray(combined.resource_ids)) {
28
44
  for (const id of combined.resource_ids) {
29
- if (typeof id === 'number' && id > 0) ids.add(id);
45
+ if (typeof id === "number" && id > 0)
46
+ ids.add(id);
30
47
  }
31
48
  }
32
49
  }
33
50
  }
34
51
  return Array.from(ids);
35
52
  }
36
-
37
- /**
38
- * 每个 resourceId 可以被多个商品共享(同一场地关联多种运动商品)。
39
- * Map 的 value 改为 ResourceProductMapping[],按商品出现顺序保留。
40
- */
41
53
  function buildResourceProductMap(products) {
42
- const map = new Map();
54
+ var _a;
55
+ const map = /* @__PURE__ */ new Map();
43
56
  for (const product of products) {
44
- const resources = product.product_resource?.resources;
45
- if (!Array.isArray(resources)) continue;
57
+ const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
58
+ if (!Array.isArray(resources))
59
+ continue;
46
60
  for (const resource of resources) {
47
- if (resource.status !== 1) continue;
48
- const allResourceIds = [...(resource.default_resource || []), ...(resource.optional_resource || [])];
61
+ if (resource.status !== 1)
62
+ continue;
63
+ const allResourceIds = [
64
+ ...resource.default_resource || [],
65
+ ...resource.optional_resource || []
66
+ ];
49
67
  for (const resId of allResourceIds) {
50
68
  const existing = map.get(resId);
51
69
  const mapping = {
@@ -54,16 +72,21 @@ function buildResourceProductMap(products) {
54
72
  formName: resource.title,
55
73
  resourceName: resource.title,
56
74
  formId: resource.id,
57
- price: product.price || '0.00',
58
- resourceType: resource.type || 'single'
75
+ price: product.price || "0.00",
76
+ resourceType: resource.type || "single"
59
77
  };
60
78
  if (!existing) {
61
79
  map.set(resId, [mapping]);
62
- } else if (!existing.some(m => m.productId === mapping.productId)) {
80
+ } else if (!existing.some((m) => m.productId === mapping.productId)) {
63
81
  existing.push(mapping);
64
82
  }
65
83
  }
66
84
  }
67
85
  }
68
86
  return map;
69
- }
87
+ }
88
+ // Annotate the CommonJS export names for ESM import in node:
89
+ 0 && (module.exports = {
90
+ buildResourceProductMap,
91
+ extractResourceIds
92
+ });
@@ -1,34 +1,62 @@
1
- "use strict";
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
28
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
29
+ // src/solution/VenueBooking/utils/slotMerge.ts
30
+ var slotMerge_exports = {};
31
+ __export(slotMerge_exports, {
32
+ buildPriceBreakdown: () => buildPriceBreakdown,
33
+ buildVenueBookingEntry: () => buildVenueBookingEntry,
34
+ buildVenueIdentityKey: () => buildVenueIdentityKey,
35
+ buildVenueResourceMetadata: () => buildVenueResourceMetadata,
36
+ expandMergedSlotToIndividual: () => expandMergedSlotToIndividual,
37
+ mergeConsecutiveSlots: () => mergeConsecutiveSlots
5
38
  });
6
- exports.buildPriceBreakdown = buildPriceBreakdown;
7
- exports.buildVenueBookingEntry = buildVenueBookingEntry;
8
- exports.buildVenueIdentityKey = buildVenueIdentityKey;
9
- exports.buildVenueResourceMetadata = buildVenueResourceMetadata;
10
- exports.expandMergedSlotToIndividual = expandMergedSlotToIndividual;
11
- exports.mergeConsecutiveSlots = mergeConsecutiveSlots;
12
- var _decimal = _interopRequireDefault(require("decimal.js"));
13
- var _dayjs = _interopRequireDefault(require("dayjs"));
14
- var _utils = require("../../../modules/Order/utils");
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
+ module.exports = __toCommonJS(slotMerge_exports);
40
+ var import_decimal = __toESM(require("decimal.js"));
41
+ var import_dayjs = __toESM(require("dayjs"));
42
+ var import_utils = require("../../../modules/Order/utils");
16
43
  function buildVenueIdentityKey(resourceId, groupIndex) {
17
- return `venue:${resourceId}:${groupIndex}:${(0, _utils.createUuidV4)()}`;
44
+ return `venue:${resourceId}:${groupIndex}:${(0, import_utils.createUuidV4)()}`;
18
45
  }
19
46
  function mergeConsecutiveSlots(slots) {
20
- if (!slots.length) return [];
47
+ if (!slots.length)
48
+ return [];
21
49
  const sorted = [...slots].sort((a, b) => a.startTime.localeCompare(b.startTime));
22
50
  const groups = [];
23
51
  let currentSlots = [sorted[0]];
24
52
  let currentStart = sorted[0].startTime;
25
53
  let currentEnd = sorted[0].endTime;
26
- let totalPrice = new _decimal.default(sorted[0].price || '0');
54
+ let totalPrice = new import_decimal.default(sorted[0].price || "0");
27
55
  for (let i = 1; i < sorted.length; i++) {
28
56
  const slot = sorted[i];
29
57
  if (slot.startTime === currentEnd) {
30
58
  currentEnd = slot.endTime;
31
- totalPrice = totalPrice.add(new _decimal.default(slot.price || '0'));
59
+ totalPrice = totalPrice.add(new import_decimal.default(slot.price || "0"));
32
60
  currentSlots.push(slot);
33
61
  } else {
34
62
  groups.push({
@@ -41,7 +69,7 @@ function mergeConsecutiveSlots(slots) {
41
69
  currentSlots = [slot];
42
70
  currentStart = slot.startTime;
43
71
  currentEnd = slot.endTime;
44
- totalPrice = new _decimal.default(slot.price || '0');
72
+ totalPrice = new import_decimal.default(slot.price || "0");
45
73
  }
46
74
  }
47
75
  groups.push({
@@ -54,21 +82,15 @@ function mergeConsecutiveSlots(slots) {
54
82
  return groups;
55
83
  }
56
84
  function buildPriceBreakdown(params) {
57
- const {
58
- group,
59
- productId,
60
- quotation
61
- } = params;
62
- if (!group.slots.length) return [];
85
+ const { group, productId, quotation } = params;
86
+ if (!group.slots.length)
87
+ return [];
63
88
  const entries = [];
64
89
  for (const slot of group.slots) {
65
- const unitPrice = Number(slot.price || '0');
66
- const shelfId = quotation ? quotation.getQuotationShelfId({
67
- productId,
68
- datetime: slot.startTime
69
- }) : 0;
70
- const startHm = (0, _dayjs.default)(slot.startTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
71
- const endHm = (0, _dayjs.default)(slot.endTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
90
+ const unitPrice = Number(slot.price || "0");
91
+ const shelfId = quotation ? quotation.getQuotationShelfId({ productId, datetime: slot.startTime }) : 0;
92
+ const startHm = (0, import_dayjs.default)(slot.startTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
93
+ const endHm = (0, import_dayjs.default)(slot.endTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
72
94
  const last = entries[entries.length - 1];
73
95
  if (last && last.unit_price === unitPrice && last.quotation_shelf_id === shelfId && last.end_time === startHm) {
74
96
  last.end_time = endHm;
@@ -86,50 +108,36 @@ function buildPriceBreakdown(params) {
86
108
  return entries;
87
109
  }
88
110
  function buildVenueResourceMetadata(params) {
89
- const {
90
- mapping,
91
- rawResource
92
- } = params;
93
- const combined = rawResource?.combined_resource;
111
+ const { mapping, rawResource } = params;
112
+ const combined = rawResource == null ? void 0 : rawResource.combined_resource;
94
113
  const isCombined = !!(combined && combined.status === 1 && Array.isArray(combined.resource_ids));
95
114
  return {
96
115
  form_name: mapping.formName ?? mapping.resourceName,
97
- resource_name: rawResource?.main_field ?? mapping.resourceName,
116
+ resource_name: (rawResource == null ? void 0 : rawResource.main_field) ?? mapping.resourceName,
98
117
  combined_resource: isCombined ? combined : null
99
118
  };
100
119
  }
101
120
  function buildVenueBookingEntry(params) {
102
- const {
103
- group,
104
- resourceId,
105
- mapping,
106
- rawResource,
107
- bookingUuid,
108
- productUid,
109
- childResources
110
- } = params;
111
- const startMoment = (0, _dayjs.default)(group.startTime, 'YYYY-MM-DD HH:mm');
112
- const endMoment = (0, _dayjs.default)(group.endTime, 'YYYY-MM-DD HH:mm');
113
- const duration = endMoment.diff(startMoment, 'minute');
121
+ const { group, resourceId, mapping, rawResource, bookingUuid, productUid, childResources } = params;
122
+ const startMoment = (0, import_dayjs.default)(group.startTime, "YYYY-MM-DD HH:mm");
123
+ const endMoment = (0, import_dayjs.default)(group.endTime, "YYYY-MM-DD HH:mm");
124
+ const duration = endMoment.diff(startMoment, "minute");
114
125
  const resourceEntry = {
115
- relation_type: 'form',
116
- like_status: 'common',
126
+ relation_type: "form",
127
+ like_status: "common",
117
128
  id: resourceId,
118
129
  main_field: mapping.resourceName,
119
- form_id: rawResource?.form_id ?? mapping.formId,
130
+ form_id: (rawResource == null ? void 0 : rawResource.form_id) ?? mapping.formId,
120
131
  relation_id: resourceId,
121
132
  capacity: 1,
122
- metadata: buildVenueResourceMetadata({
123
- mapping,
124
- rawResource
125
- })
133
+ metadata: buildVenueResourceMetadata({ mapping, rawResource })
126
134
  };
127
135
  if (childResources && childResources.length) {
128
- resourceEntry.children = childResources.map(child => ({
129
- relation_type: 'form',
130
- like_status: 'common',
136
+ resourceEntry.children = childResources.map((child) => ({
137
+ relation_type: "form",
138
+ like_status: "common",
131
139
  id: child.resourceId,
132
- main_field: child.main_field || '',
140
+ main_field: child.main_field || "",
133
141
  form_id: child.form_id ?? child.formId,
134
142
  relation_id: child.resourceId,
135
143
  capacity: child.capacity ?? 1,
@@ -138,15 +146,15 @@ function buildVenueBookingEntry(params) {
138
146
  }
139
147
  return {
140
148
  schedule_event_id: null,
141
- appointment_status: 'new',
142
- start_date: startMoment.format('YYYY-MM-DD'),
143
- start_time: startMoment.format('HH:mm'),
144
- end_date: endMoment.format('YYYY-MM-DD'),
145
- end_time: endMoment.format('HH:mm'),
146
- select_date: startMoment.format('YYYY-MM-DD'),
149
+ appointment_status: "new",
150
+ start_date: startMoment.format("YYYY-MM-DD"),
151
+ start_time: startMoment.format("HH:mm"),
152
+ end_date: endMoment.format("YYYY-MM-DD"),
153
+ end_time: endMoment.format("HH:mm"),
154
+ select_date: startMoment.format("YYYY-MM-DD"),
147
155
  duration,
148
- sub_type: 'minutes',
149
- like_status: 'common',
156
+ sub_type: "minutes",
157
+ like_status: "common",
150
158
  number: 1,
151
159
  is_all: false,
152
160
  schedule_id: 0,
@@ -163,62 +171,67 @@ function buildVenueBookingEntry(params) {
163
171
  }
164
172
  };
165
173
  }
166
-
167
- /**
168
- * 从一条已合并的订单商品还原出独立的时段列表。
169
- * 优先使用 metadata.price_breakdown 还原每个时段的精确价格,
170
- * 回退到按 selling_price / slot_count 均分。
171
- */
172
174
  function expandMergedSlotToIndividual(product, slotDurationMinutes) {
173
175
  const meta = product.metadata || {};
174
176
  const resourceId = meta.resource_id;
175
- if (resourceId == null) return [];
177
+ if (resourceId == null)
178
+ return [];
176
179
  const startTime = meta.start_time;
177
180
  const endTime = meta.end_time;
178
- if (!startTime || !endTime) return [];
181
+ if (!startTime || !endTime)
182
+ return [];
179
183
  const productId = Number(product.product_id);
180
184
  const breakdown = meta.price_breakdown;
181
185
  const result = [];
182
- let cursor = (0, _dayjs.default)(startTime, 'YYYY-MM-DD HH:mm');
183
- const end = (0, _dayjs.default)(endTime, 'YYYY-MM-DD HH:mm');
184
- if (breakdown?.length) {
185
- const priceMap = new Map();
186
+ let cursor = (0, import_dayjs.default)(startTime, "YYYY-MM-DD HH:mm");
187
+ const end = (0, import_dayjs.default)(endTime, "YYYY-MM-DD HH:mm");
188
+ if (breakdown == null ? void 0 : breakdown.length) {
189
+ const priceMap = /* @__PURE__ */ new Map();
186
190
  for (const entry of breakdown) {
187
- let entryCursor = (0, _dayjs.default)(entry.start_time, 'YYYY-MM-DD HH:mm');
188
- const entryEnd = (0, _dayjs.default)(entry.end_time, 'YYYY-MM-DD HH:mm');
191
+ let entryCursor = (0, import_dayjs.default)(entry.start_time, "YYYY-MM-DD HH:mm");
192
+ const entryEnd = (0, import_dayjs.default)(entry.end_time, "YYYY-MM-DD HH:mm");
189
193
  while (entryCursor.isBefore(entryEnd)) {
190
- priceMap.set(entryCursor.format('HH:mm'), entry.unit_price);
191
- entryCursor = entryCursor.add(slotDurationMinutes, 'minute');
194
+ priceMap.set(entryCursor.format("HH:mm"), entry.unit_price);
195
+ entryCursor = entryCursor.add(slotDurationMinutes, "minute");
192
196
  }
193
197
  }
194
198
  while (cursor.isBefore(end)) {
195
- const slotEnd = cursor.add(slotDurationMinutes, 'minute');
196
- const hm = cursor.format('HH:mm');
199
+ const slotEnd = cursor.add(slotDurationMinutes, "minute");
200
+ const hm = cursor.format("HH:mm");
197
201
  const price = priceMap.get(hm) ?? 0;
198
202
  result.push({
199
203
  resourceId,
200
204
  productId,
201
- startTime: cursor.format('YYYY-MM-DD HH:mm'),
202
- endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
203
- price: new _decimal.default(price).toFixed(2)
205
+ startTime: cursor.format("YYYY-MM-DD HH:mm"),
206
+ endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
207
+ price: new import_decimal.default(price).toFixed(2)
204
208
  });
205
209
  cursor = slotEnd;
206
210
  }
207
211
  } else {
208
212
  const slotCount = meta.slot_count || 1;
209
- const totalPrice = new _decimal.default(product.selling_price || '0');
213
+ const totalPrice = new import_decimal.default(product.selling_price || "0");
210
214
  const perSlotPrice = slotCount > 0 ? totalPrice.div(slotCount).toFixed(2) : totalPrice.toFixed(2);
211
215
  while (cursor.isBefore(end)) {
212
- const slotEnd = cursor.add(slotDurationMinutes, 'minute');
216
+ const slotEnd = cursor.add(slotDurationMinutes, "minute");
213
217
  result.push({
214
218
  resourceId,
215
219
  productId,
216
- startTime: cursor.format('YYYY-MM-DD HH:mm'),
217
- endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
220
+ startTime: cursor.format("YYYY-MM-DD HH:mm"),
221
+ endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
218
222
  price: perSlotPrice
219
223
  });
220
224
  cursor = slotEnd;
221
225
  }
222
226
  }
223
227
  return result;
224
- }
228
+ }
229
+ // Annotate the CommonJS export names for ESM import in node:
230
+ 0 && (module.exports = {
231
+ buildPriceBreakdown,
232
+ buildVenueBookingEntry,
233
+ buildVenueIdentityKey,
234
+ buildVenueResourceMetadata,
235
+ expandMergedSlotToIndividual,
236
+ mergeConsecutiveSlots
237
+ });
@@ -27,8 +27,6 @@ export declare function buildTimeSlotGrid(params: {
27
27
  config: VenueBookingSlotConfig;
28
28
  rawResources: VenueResourceRawData[];
29
29
  resourceProductMap: Map<number | string, ResourceProductMapping[]>;
30
- /** @deprecated 使用 slotPriceMap */
31
30
  quotationPriceMap?: Map<string, string | null>;
32
- slotPriceMap?: Map<string, string | null>;
33
31
  }): VenueTimeSlotGrid;
34
32
  export {};