@pisell/pisellos 0.0.569 → 0.10.1

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 (329) 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/walletPass/evaluator.js +7 -5
  5. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  6. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  7. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  8. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  9. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  10. package/dist/model/strategy/strategy-example.js +19 -5
  11. package/dist/modules/BaseModule.d.ts +1 -1
  12. package/dist/modules/BaseModule.js +8 -10
  13. package/dist/modules/Cart/index.js +3 -0
  14. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  15. package/dist/modules/Cart/utils/cartResource.js +0 -2
  16. package/dist/modules/Cart/utils/changePrice.js +9 -16
  17. package/dist/modules/Date/index.js +5 -1
  18. package/dist/modules/Discount/index.d.ts +0 -1
  19. package/dist/modules/Discount/index.js +7 -22
  20. package/dist/modules/Discount/types.d.ts +0 -1
  21. package/dist/modules/OpenData/index.js +2 -0
  22. package/dist/modules/Order/index.d.ts +1 -1
  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 +0 -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.d.ts +1 -1
  167. package/lib/modules/Order/index.js +1909 -1572
  168. package/lib/modules/Order/types.js +35 -78
  169. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  170. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  171. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  172. package/lib/modules/Order/utils.js +634 -799
  173. package/lib/modules/Payment/cash.js +33 -20
  174. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  175. package/lib/modules/Payment/eftpos.js +30 -16
  176. package/lib/modules/Payment/index.js +378 -518
  177. package/lib/modules/Payment/mx51.js +0 -1
  178. package/lib/modules/Payment/types.d.ts +4 -8
  179. package/lib/modules/Payment/types.js +107 -216
  180. package/lib/modules/Payment/utils.js +48 -51
  181. package/lib/modules/Payment/walletpass.d.ts +0 -2
  182. package/lib/modules/Payment/walletpass.js +211 -226
  183. package/lib/modules/Product/index.js +46 -51
  184. package/lib/modules/Product/types.js +16 -4
  185. package/lib/modules/Product/utils.js +33 -32
  186. package/lib/modules/ProductList/index.d.ts +1 -1
  187. package/lib/modules/ProductList/index.js +117 -117
  188. package/lib/modules/ProductList/types.d.ts +0 -1
  189. package/lib/modules/ProductList/types.js +31 -9
  190. package/lib/modules/Quotation/index.js +100 -66
  191. package/lib/modules/Quotation/types.js +16 -4
  192. package/lib/modules/Resource/index.js +59 -27
  193. package/lib/modules/Resource/types.js +32 -22
  194. package/lib/modules/Resource/utils.js +38 -30
  195. package/lib/modules/ResourcePlanner/index.js +61 -60
  196. package/lib/modules/ResourcePlanner/planner.js +384 -346
  197. package/lib/modules/ResourcePlanner/types.js +16 -4
  198. package/lib/modules/Rules/index.js +903 -1475
  199. package/lib/modules/Rules/types.js +40 -17
  200. package/lib/modules/SalesSummary/index.js +90 -85
  201. package/lib/modules/SalesSummary/types.js +16 -4
  202. package/lib/modules/SalesSummary/utils.js +427 -351
  203. package/lib/modules/ScanOrderLogger/index.js +79 -59
  204. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  205. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  206. package/lib/modules/ScanOrderLogger/types.js +16 -4
  207. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  208. package/lib/modules/Schedule/index.js +114 -100
  209. package/lib/modules/Schedule/type.js +16 -4
  210. package/lib/modules/Schedule/types.js +16 -4
  211. package/lib/modules/Schedule/utils.js +291 -433
  212. package/lib/modules/Step/index.js +52 -40
  213. package/lib/modules/Step/tyeps.js +16 -4
  214. package/lib/modules/Summary/index.js +71 -66
  215. package/lib/modules/Summary/types.js +16 -4
  216. package/lib/modules/Summary/utils.js +418 -791
  217. package/lib/modules/SurchargeList/index.js +60 -46
  218. package/lib/modules/SurchargeList/types.js +16 -4
  219. package/lib/modules/index.js +63 -245
  220. package/lib/plugins/app.js +16 -4
  221. package/lib/plugins/index.js +25 -36
  222. package/lib/plugins/request.js +126 -137
  223. package/lib/plugins/shopStore.js +16 -4
  224. package/lib/plugins/user.js +16 -4
  225. package/lib/plugins/window.js +179 -171
  226. package/lib/server/index.js +2337 -2675
  227. package/lib/server/modules/floor-plan/index.js +123 -102
  228. package/lib/server/modules/floor-plan/types.js +30 -15
  229. package/lib/server/modules/index.js +68 -106
  230. package/lib/server/modules/menu/index.js +122 -146
  231. package/lib/server/modules/menu/types.js +31 -18
  232. package/lib/server/modules/order/index.js +642 -567
  233. package/lib/server/modules/order/types.js +32 -117
  234. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  235. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  236. package/lib/server/modules/payment/index.js +83 -59
  237. package/lib/server/modules/payment/types.js +16 -4
  238. package/lib/server/modules/products/index.js +459 -575
  239. package/lib/server/modules/products/types.js +34 -44
  240. package/lib/server/modules/quotation/index.js +172 -137
  241. package/lib/server/modules/quotation/types.js +31 -21
  242. package/lib/server/modules/resource/index.js +184 -213
  243. package/lib/server/modules/resource/types.js +33 -42
  244. package/lib/server/modules/schedule/index.js +123 -135
  245. package/lib/server/modules/schedule/types.js +21 -14
  246. package/lib/server/modules/schedule/utils.js +163 -334
  247. package/lib/server/types.js +16 -4
  248. package/lib/server/utils/index.js +23 -25
  249. package/lib/server/utils/product.js +139 -196
  250. package/lib/server/utils/schedule.js +41 -34
  251. package/lib/server/utils/small-ticket.js +456 -478
  252. package/lib/server/utils/time.js +49 -40
  253. package/lib/solution/BaseSales/index.js +1016 -850
  254. package/lib/solution/BaseSales/types.js +37 -41
  255. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  256. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  257. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  258. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  259. package/lib/solution/BaseSales/utils.js +140 -155
  260. package/lib/solution/BookingByStep/index.d.ts +1 -1
  261. package/lib/solution/BookingByStep/index.js +1340 -1530
  262. package/lib/solution/BookingByStep/types.js +99 -40
  263. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  264. package/lib/solution/BookingByStep/utils/products.js +52 -42
  265. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  266. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  267. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  268. package/lib/solution/BookingTicket/index.d.ts +1 -1
  269. package/lib/solution/BookingTicket/index.js +459 -543
  270. package/lib/solution/BookingTicket/types.js +77 -99
  271. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  272. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  273. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  274. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  275. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  276. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  277. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  278. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  279. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  280. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  281. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  282. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  283. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  284. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  285. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  286. package/lib/solution/BuyTickets/index.js +70 -67
  287. package/lib/solution/BuyTickets/types.js +38 -22
  288. package/lib/solution/Checkout/index.js +1158 -1451
  289. package/lib/solution/Checkout/types.js +61 -91
  290. package/lib/solution/Checkout/utils/index.js +156 -228
  291. package/lib/solution/PlaceOrder/index.js +0 -55
  292. package/lib/solution/RegisterAndLogin/config.js +460 -493
  293. package/lib/solution/RegisterAndLogin/index.js +630 -633
  294. package/lib/solution/RegisterAndLogin/types.js +76 -189
  295. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  296. package/lib/solution/Sales/index.js +320 -317
  297. package/lib/solution/Sales/types.js +33 -27
  298. package/lib/solution/ScanOrder/index.js +862 -831
  299. package/lib/solution/ScanOrder/types.js +34 -33
  300. package/lib/solution/ScanOrder/utils.js +371 -406
  301. package/lib/solution/ShopDiscount/index.js +233 -235
  302. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  303. package/lib/solution/ShopDiscount/types.js +37 -15
  304. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  305. package/lib/solution/ShopDiscount/utils.js +172 -309
  306. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  307. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  308. package/lib/solution/VenueBooking/index.d.ts +3 -31
  309. package/lib/solution/VenueBooking/index.js +916 -967
  310. package/lib/solution/VenueBooking/types.d.ts +1 -3
  311. package/lib/solution/VenueBooking/types.js +39 -20
  312. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  313. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  314. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  315. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  316. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  317. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  318. package/lib/solution/VenueBooking/utils.js +67 -130
  319. package/lib/solution/index.js +41 -124
  320. package/lib/store/createStore.js +29 -32
  321. package/lib/types/index.d.ts +1 -1
  322. package/lib/types/index.js +16 -4
  323. package/lib/utils/task.js +36 -36
  324. package/lib/utils/watch.js +47 -81
  325. package/package.json +2 -4
  326. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  327. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  328. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  329. 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 {};