@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
@@ -1,20 +1,34 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
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);
18
+
19
+ // src/utils/watch.ts
20
+ var watch_exports = {};
21
+ __export(watch_exports, {
22
+ default: () => watch_default
5
23
  });
6
- exports.default = void 0;
7
- /**
8
- * 监听模块
9
- *
10
- */
11
-
12
- class Watch {
13
- // 监听列表
14
- events = new Map();
15
- // 启用列表 - 使用数组保持顺序
16
- enableListMap = new Map();
17
-
24
+ module.exports = __toCommonJS(watch_exports);
25
+ var Watch = class {
26
+ constructor() {
27
+ // 监听列表
28
+ this.events = /* @__PURE__ */ new Map();
29
+ // 启用列表 - 使用数组保持顺序
30
+ this.enableListMap = /* @__PURE__ */ new Map();
31
+ }
18
32
  /**
19
33
  * 订阅事件
20
34
  * @param event 事件名称
@@ -22,83 +36,67 @@ class Watch {
22
36
  * @returns 订阅对象,可用于取消订阅
23
37
  */
24
38
  subscribe(watchKey, event) {
25
- // 如果监听列表不存在,则创建
26
39
  if (!this.events.has(watchKey)) {
27
- this.events.set(watchKey, new Map());
40
+ this.events.set(watchKey, /* @__PURE__ */ new Map());
28
41
  }
29
-
30
- // 获取监听列表
31
42
  const callbacks = this.events.get(watchKey);
32
- // 设置事件
33
43
  callbacks.set(event.key, event.callback);
34
-
35
- // 启用事件
36
44
  this.enableEvent(watchKey, event.key);
37
45
  return {
38
46
  // 取消订阅
39
47
  unsubscribe: () => {
40
- // 取消订阅事件
41
48
  this.unsubscribe(watchKey, event);
42
49
  }
43
50
  };
44
51
  }
45
-
46
52
  /**
47
53
  * 启用事件
48
54
  * @param watchKey 监听的key
49
55
  * @param event 事件名称
50
56
  */
51
57
  enableEvent(watchKey, eventKey) {
52
- // 获取启用列表
53
58
  const enableList = this.enableListMap.get(watchKey);
54
- // 如果启用列表存在,则添加事件
55
59
  if (enableList) {
56
60
  if (enableList.includes(eventKey)) {
57
61
  return;
58
62
  }
59
63
  enableList.push(eventKey);
60
64
  } else {
61
- // 如果启用列表不存在,则创建启用列表
62
65
  this.enableListMap.set(watchKey, [eventKey]);
63
66
  }
64
67
  }
65
-
66
68
  /**
67
69
  * 禁用某个事件
68
70
  * @param watchKey 监听的key
69
71
  * @param eventKey 事件名称
70
72
  */
71
73
  disableEvent(watchKey, eventKey) {
72
- // 获取启用列表
73
74
  const enableList = this.enableListMap.get(watchKey);
74
75
  if (enableList) {
75
- // 找到当前事件的索引
76
76
  const index = enableList.indexOf(eventKey);
77
77
  if (index !== -1) {
78
- // 删除当前事件以及之后的所有事件
79
78
  enableList.splice(index);
80
79
  }
81
80
  }
82
81
  }
83
-
84
82
  /**
85
83
  * 冻结某个监听下的所有事件
86
84
  * @param watchKey 监听的key
87
85
  */
88
86
  disabledAllEventByWatchKey(watchKey) {
89
- // 设置启用列表为空
90
87
  this.enableListMap.set(watchKey, []);
91
88
  }
92
-
93
89
  /**
94
90
  * 启用某个监听下的所有事件
95
91
  * @param watchKey 监听的key
96
92
  */
97
93
  enableAllEventByWatchKey(watchKey) {
98
- // 遍历当前监听下的所有事件, 并启用
99
- this.enableListMap.set(watchKey, Array.from(this.events.get(watchKey)?.keys() || []));
94
+ var _a;
95
+ this.enableListMap.set(
96
+ watchKey,
97
+ Array.from(((_a = this.events.get(watchKey)) == null ? void 0 : _a.keys()) || [])
98
+ );
100
99
  }
101
-
102
100
  /**
103
101
  * 取消订阅事件
104
102
  * @param event 事件名称
@@ -106,51 +104,38 @@ class Watch {
106
104
  * @returns 是否成功取消订阅
107
105
  */
108
106
  unsubscribe(watchKey, event) {
109
- // 获取监听列表
110
107
  const callbacks = this.events.get(watchKey);
111
- // 如果监听列表不存在,则返回false
112
108
  if (!callbacks) {
113
109
  return;
114
110
  }
115
- // 禁用事件
116
111
  this.disableEvent(watchKey, event.key);
117
- // 删除事件
118
112
  callbacks.delete(event.key);
119
113
  return;
120
114
  }
121
-
122
115
  /**
123
116
  * 发布事件
124
117
  * @param event 事件名称
125
118
  * @param args 事件参数
126
119
  */
127
120
  publish(watchKey, ...args) {
128
- // 获取监听列表
121
+ var _a;
129
122
  const callbacks = this.events.get(watchKey);
130
- // 如果监听列表不存在,则返回
131
123
  if (!callbacks) {
132
124
  return;
133
125
  }
134
-
135
- // 获取启用列表
136
126
  const enableList = this.enableListMap.get(watchKey);
137
- // 如果启用列表不存在,则返回
138
127
  if (!enableList || enableList.length === 0) {
139
128
  return;
140
129
  }
141
-
142
- // 只执行最后一个事件
143
130
  const lastCallbackKey = enableList.at(-1);
144
- // 如果最后一个事件存在,则执行
145
131
  if (lastCallbackKey) {
146
132
  try {
147
- callbacks.get(lastCallbackKey)?.(...args);
133
+ (_a = callbacks.get(lastCallbackKey)) == null ? void 0 : _a(...args);
148
134
  } catch (error) {
149
135
  console.error(`执行事件"${watchKey}"的回调时出错:`, error);
150
136
  }
151
137
  }
152
138
  }
153
-
154
139
  /**
155
140
  * 根据事件名称发布事件
156
141
  * @param watchKey 监听的key
@@ -158,13 +143,13 @@ class Watch {
158
143
  * @param args 事件参数
159
144
  */
160
145
  publishByEventKey(watchKey, eventKey, ...args) {
146
+ var _a;
161
147
  const callbacks = this.events.get(watchKey);
162
148
  if (!callbacks) {
163
149
  return;
164
150
  }
165
- callbacks.get(eventKey)?.(...args);
151
+ (_a = callbacks.get(eventKey)) == null ? void 0 : _a(...args);
166
152
  }
167
-
168
153
  /**
169
154
  * 获取最后一个启用的事件
170
155
  * @param watchKey 监听的key
@@ -172,56 +157,45 @@ class Watch {
172
157
  */
173
158
  getLastEnableEventKey(watchKey) {
174
159
  const enableList = this.enableListMap.get(watchKey);
160
+ console.log("enableList", enableList);
175
161
  if (!enableList) {
176
- return undefined;
162
+ return void 0;
177
163
  }
178
- return enableList.at(-1) || undefined;
164
+ return enableList.at(-1) || void 0;
179
165
  }
180
-
181
166
  /**
182
167
  * 移除某个事件的所有订阅
183
168
  * @param event 事件名称
184
169
  * @returns 是否成功移除
185
170
  */
186
171
  clearEvent(watchKey) {
187
- // 禁用所有事件
188
172
  this.disabledAllEventByWatchKey(watchKey);
189
- // 删除监听列表
190
173
  this.events.delete(watchKey);
191
174
  }
192
-
193
175
  /**
194
176
  * 移除所有事件订阅
195
177
  */
196
178
  clearAllEvents() {
197
- // 清空监听列表
198
179
  this.events.clear();
199
- // 清空启用列表
200
180
  this.enableListMap.clear();
201
181
  }
202
-
203
182
  /**
204
183
  * 获取事件的订阅数量
205
184
  * @param event 事件名称
206
185
  * @returns 订阅数量
207
186
  */
208
187
  getSubscriberCount(event) {
209
- // 获取监听列表
210
188
  const callbacks = this.events.get(event);
211
- // 如果监听列表不存在,则返回0
212
189
  return callbacks ? callbacks.size : 0;
213
190
  }
214
-
215
191
  /**
216
192
  * 检查事件是否有订阅者
217
193
  * @param event 事件名称
218
194
  * @returns 是否有订阅者
219
195
  */
220
196
  hasSubscribers(event) {
221
- // 获取监听列表
222
197
  return this.getSubscriberCount(event) > 0;
223
198
  }
224
-
225
199
  /**
226
200
  * 一次性订阅事件,事件触发后自动取消订阅
227
201
  * @param event 事件名称
@@ -229,14 +203,8 @@ class Watch {
229
203
  * @returns 订阅对象,可用于取消订阅
230
204
  */
231
205
  once(watchKey, event) {
232
- // 包装回调函数
233
206
  const wrappedCallback = (...args) => {
234
- // 取消订阅
235
- this.unsubscribe(watchKey, {
236
- key: event.key,
237
- callback: wrappedCallback
238
- });
239
- // 执行回调
207
+ this.unsubscribe(watchKey, { key: event.key, callback: wrappedCallback });
240
208
  event.callback(...args);
241
209
  };
242
210
  return this.subscribe(watchKey, {
@@ -244,8 +212,6 @@ class Watch {
244
212
  callback: wrappedCallback
245
213
  });
246
214
  }
247
- }
248
-
249
- // 创建单例实例
250
- const watch = new Watch();
251
- var _default = exports.default = watch;
215
+ };
216
+ var watch = new Watch();
217
+ var watch_default = watch;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "0.0.569",
4
+ "version": "0.10.1",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -23,8 +23,7 @@
23
23
  "docs": "typedoc --out docs src/index.ts",
24
24
  "sync": "node sync.js",
25
25
  "prepublishOnly": "npm run build",
26
- "deploy": "npm run build && npm run changeset && npm run version && npm run release",
27
- "deploy:ci": "npm run build && npm run version && changeset publish --registry=https://registry.npmjs.com/ && npm run sync"
26
+ "deploy": "npm run build && npm run changeset && npm run version && npm run release"
28
27
  },
29
28
  "repository": {
30
29
  "type": "git",
@@ -55,7 +54,6 @@
55
54
  "@typescript-eslint/eslint-plugin": "^5.57.1",
56
55
  "@typescript-eslint/parser": "^5.57.1",
57
56
  "axios": "1.7.2",
58
- "babel-plugin-transform-remove-console": "^6.9.4",
59
57
  "eslint": "^8.37.0",
60
58
  "fake-indexeddb": "^6.0.1",
61
59
  "father": "^4.1.0",
@@ -1,70 +0,0 @@
1
- import type { ProductData } from '../../../modules/Product/types';
2
- import type { ScheduleItem } from '../../../modules/Schedule/types';
3
- import type { DataVariantBusinessData, DataVariantMenu, DataVariantProduct } from '../../../model/strategy/adapter/dataVariant/type';
4
- import type { DataVariantEvaluator } from '../../../model/strategy/adapter/dataVariant/evaluator';
5
- import type { StrategyConfig } from '../../../model/strategy/type';
6
- import type { VenueBookingSlotConfig } from '../types';
7
- /** VenueBooking 智能定价运行时上下文 */
8
- export interface VenueBookingSmartPricingContext {
9
- evaluator?: DataVariantEvaluator | null;
10
- scheduleList?: ScheduleItem[];
11
- menuList?: DataVariantMenu[];
12
- customerId?: number | string;
13
- availableWalletIds?: Array<number | string>;
14
- channel?: string;
15
- businessCode?: string;
16
- orderType?: string;
17
- strategy_context?: Record<string, any>;
18
- strategyConfigs?: StrategyConfig[];
19
- }
20
- /** 从商品上读取展示/算价用的 price 字段 */
21
- export declare function extractProductPrice(product: DataVariantProduct): string | null;
22
- /** 组装 DataVariant 评估入参,对齐 OS Server buildProductFormatterContext 语义 */
23
- export declare function buildDataVariantBusinessData(products: ProductData[], context: VenueBookingSmartPricingContext, scheduleDateTime: string): DataVariantBusinessData;
24
- /**
25
- * 对商品列表执行一次智能定价格式化(loadProducts 后使用)。
26
- * evaluator 未注入时原样返回并打 warning。
27
- */
28
- export declare function formatProductsWithDataVariant(products: ProductData[], context: VenueBookingSmartPricingContext, scheduleDateTime?: string): ProductData[];
29
- /**
30
- * 根据 schedule_time_points 与营业开始时间,构造当天需要评估的 datetime 列表(升序)。
31
- * 跨日营业时,早于营业开始小时的时间点归到次日。
32
- */
33
- export declare function buildEvaluationDatetimes(params: {
34
- date: string;
35
- config: VenueBookingSlotConfig;
36
- scheduleTimePoints: string[];
37
- }): string[];
38
- /** 找到 slot 时间所属分段的评估 datetime(max(evalDt <= slotDt)) */
39
- export declare function findSegmentEvalDatetime(slotDatetime: string, evalDatetimes: string[]): string;
40
- /** 将 slot 标签转为与 timeSlot 网格一致的 slotStart 字符串 */
41
- export declare function buildSlotStartDatetime(date: string, label: string, config: VenueBookingSlotConfig): string;
42
- /**
43
- * 按 schedule 分段批量 resolveProducts,输出与 quotation 相同 key 格式的 slot 价格 Map。
44
- * key: `${productId}:${slotStart}`,value: price | null
45
- */
46
- export declare function buildSlotPriceMapByScheduleSegments(params: {
47
- products: ProductData[];
48
- productIds: number[];
49
- date: string;
50
- timeLabels: string[];
51
- config: VenueBookingSlotConfig;
52
- context: VenueBookingSmartPricingContext;
53
- }): Map<string, string | null>;
54
- /**
55
- * 指定商品在某一 datetime 的智能定价(addon / 单点重算用)。
56
- */
57
- export declare function getPriceForProductAtDatetime(params: {
58
- products: ProductData[];
59
- context: VenueBookingSmartPricingContext;
60
- productId: number;
61
- datetime: string;
62
- fallbackPrice?: string;
63
- }): string;
64
- /** 从 slot 价格 Map 读取单价,找不到则回退 fallback */
65
- export declare function getSlotPriceFromMap(params: {
66
- slotPriceMap: Map<string, string | null>;
67
- productId: number;
68
- slotStartTime: string;
69
- fallbackPrice?: string;
70
- }): string;
@@ -1,233 +0,0 @@
1
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
2
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
3
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
4
- import dayjs from 'dayjs';
5
- import { isBusinessHoursCrossDay } from "./timeSlot";
6
-
7
- /** VenueBooking 智能定价运行时上下文 */
8
-
9
- /** 从商品上读取展示/算价用的 price 字段 */
10
- export function extractProductPrice(product) {
11
- var _product$price;
12
- var price = (_product$price = product === null || product === void 0 ? void 0 : product.price) !== null && _product$price !== void 0 ? _product$price : product === null || product === void 0 ? void 0 : product.selling_price;
13
- if (price == null || price === '') return null;
14
- return String(price);
15
- }
16
-
17
- /** 组装 DataVariant 评估入参,对齐 OS Server buildProductFormatterContext 语义 */
18
- export function buildDataVariantBusinessData(products, context, scheduleDateTime) {
19
- var _ref, _context$availableWal, _context$channel, _ref2, _context$orderType, _ref3, _context$businessCode;
20
- var strategyContext = context.strategy_context || {};
21
- return {
22
- products: products,
23
- strategyConfigs: context.strategyConfigs,
24
- scheduleDateTime: scheduleDateTime,
25
- scheduleList: context.scheduleList || [],
26
- menuList: context.menuList || [],
27
- customerId: context.customerId,
28
- availableWalletIds: (_ref = (_context$availableWal = context.availableWalletIds) !== null && _context$availableWal !== void 0 ? _context$availableWal : strategyContext.available_wallet_ids) !== null && _ref !== void 0 ? _ref : strategyContext.availableWalletIds,
29
- channel: (_context$channel = context.channel) !== null && _context$channel !== void 0 ? _context$channel : strategyContext.channel,
30
- orderType: (_ref2 = (_context$orderType = context.orderType) !== null && _context$orderType !== void 0 ? _context$orderType : strategyContext.orderType) !== null && _ref2 !== void 0 ? _ref2 : strategyContext.order_type,
31
- businessCode: (_ref3 = (_context$businessCode = context.businessCode) !== null && _context$businessCode !== void 0 ? _context$businessCode : strategyContext.business_code) !== null && _ref3 !== void 0 ? _ref3 : strategyContext.businessCode,
32
- custom: strategyContext
33
- };
34
- }
35
-
36
- /**
37
- * 对商品列表执行一次智能定价格式化(loadProducts 后使用)。
38
- * evaluator 未注入时原样返回并打 warning。
39
- */
40
- export function formatProductsWithDataVariant(products, context, scheduleDateTime) {
41
- var evaluator = context.evaluator;
42
- if (!evaluator || typeof evaluator.resolveProducts !== 'function') {
43
- console.warn('[VenueBooking][smartPricing] dataVariantEvaluator 未注入,跳过智能定价格式化');
44
- return products;
45
- }
46
- var resolvedAt = scheduleDateTime || dayjs().format('YYYY-MM-DD HH:mm:ss');
47
- var businessData = buildDataVariantBusinessData(products, context, resolvedAt);
48
- var result = evaluator.resolveProducts(businessData);
49
- return Array.isArray(result === null || result === void 0 ? void 0 : result.products) ? result.products : products;
50
- }
51
-
52
- /**
53
- * 根据 schedule_time_points 与营业开始时间,构造当天需要评估的 datetime 列表(升序)。
54
- * 跨日营业时,早于营业开始小时的时间点归到次日。
55
- */
56
- export function buildEvaluationDatetimes(params) {
57
- var date = params.date,
58
- config = params.config,
59
- scheduleTimePoints = params.scheduleTimePoints;
60
- var crossDay = isBusinessHoursCrossDay(config);
61
- var businessStartHour = Number(config.businessStartTime.split(':')[0]);
62
- var evalSet = new Set();
63
- evalSet.add("".concat(date, " ").concat(config.businessStartTime));
64
- var _iterator = _createForOfIteratorHelper(scheduleTimePoints),
65
- _step;
66
- try {
67
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
68
- var timePoint = _step.value;
69
- var hour = Number(timePoint.split(':')[0]);
70
- var pointDate = crossDay && hour < businessStartHour ? dayjs(date).add(1, 'day').format('YYYY-MM-DD') : date;
71
- evalSet.add("".concat(pointDate, " ").concat(timePoint));
72
- }
73
- } catch (err) {
74
- _iterator.e(err);
75
- } finally {
76
- _iterator.f();
77
- }
78
- return Array.from(evalSet).sort(function (a, b) {
79
- var aMs = dayjs(a, ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm']).valueOf();
80
- var bMs = dayjs(b, ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm']).valueOf();
81
- return aMs - bMs;
82
- });
83
- }
84
-
85
- /** 找到 slot 时间所属分段的评估 datetime(max(evalDt <= slotDt)) */
86
- export function findSegmentEvalDatetime(slotDatetime, evalDatetimes) {
87
- if (!evalDatetimes.length) return slotDatetime;
88
- var slotMs = dayjs(slotDatetime, ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm']).valueOf();
89
- var chosen = evalDatetimes[0];
90
- var _iterator2 = _createForOfIteratorHelper(evalDatetimes),
91
- _step2;
92
- try {
93
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
94
- var evalDt = _step2.value;
95
- var evalMs = dayjs(evalDt, ['YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm']).valueOf();
96
- if (evalMs <= slotMs) {
97
- chosen = evalDt;
98
- } else {
99
- break;
100
- }
101
- }
102
- } catch (err) {
103
- _iterator2.e(err);
104
- } finally {
105
- _iterator2.f();
106
- }
107
- return chosen;
108
- }
109
-
110
- /** 将 slot 标签转为与 timeSlot 网格一致的 slotStart 字符串 */
111
- export function buildSlotStartDatetime(date, label, config) {
112
- var crossDay = isBusinessHoursCrossDay(config);
113
- var businessStartHour = Number(config.businessStartTime.split(':')[0]);
114
- var hour = Number(label.split(':')[0]);
115
- var slotDate = crossDay && hour < businessStartHour ? dayjs(date).add(1, 'day').format('YYYY-MM-DD') : date;
116
- return dayjs("".concat(slotDate, " ").concat(label)).format('YYYY-MM-DD HH:mm');
117
- }
118
-
119
- /**
120
- * 按 schedule 分段批量 resolveProducts,输出与 quotation 相同 key 格式的 slot 价格 Map。
121
- * key: `${productId}:${slotStart}`,value: price | null
122
- */
123
- export function buildSlotPriceMapByScheduleSegments(params) {
124
- var products = params.products,
125
- productIds = params.productIds,
126
- date = params.date,
127
- timeLabels = params.timeLabels,
128
- config = params.config,
129
- context = params.context;
130
- var map = new Map();
131
- if (!productIds.length || !timeLabels.length) return map;
132
- var evaluator = context.evaluator;
133
- if (!evaluator || typeof evaluator.resolveProducts !== 'function') {
134
- return map;
135
- }
136
- var strategyConfigs = context.strategyConfigs || (typeof evaluator.getStrategyConfigs === 'function' ? evaluator.getStrategyConfigs() : []);
137
- var scheduleTimePoints = typeof evaluator.buildScheduleTimePoints === 'function' ? evaluator.buildScheduleTimePoints(strategyConfigs, context.scheduleList || []) : [];
138
- var evalDatetimes = buildEvaluationDatetimes({
139
- date: date,
140
- config: config,
141
- scheduleTimePoints: scheduleTimePoints
142
- });
143
- var priceCache = new Map();
144
- var _iterator3 = _createForOfIteratorHelper(evalDatetimes),
145
- _step3;
146
- try {
147
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
148
- var evalDt = _step3.value;
149
- var resolved = formatProductsWithDataVariant(products, context, evalDt);
150
- var priceByProductId = new Map();
151
- var _iterator5 = _createForOfIteratorHelper(resolved),
152
- _step5;
153
- try {
154
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
155
- var product = _step5.value;
156
- var productId = Number(product.id);
157
- if (!Number.isFinite(productId)) continue;
158
- priceByProductId.set(productId, extractProductPrice(product));
159
- }
160
- } catch (err) {
161
- _iterator5.e(err);
162
- } finally {
163
- _iterator5.f();
164
- }
165
- priceCache.set(evalDt, priceByProductId);
166
- }
167
- } catch (err) {
168
- _iterator3.e(err);
169
- } finally {
170
- _iterator3.f();
171
- }
172
- var _iterator4 = _createForOfIteratorHelper(timeLabels),
173
- _step4;
174
- try {
175
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
176
- var label = _step4.value;
177
- var slotStart = buildSlotStartDatetime(date, label, config);
178
- var segmentEvalDt = findSegmentEvalDatetime(slotStart, evalDatetimes);
179
- var _priceByProductId = priceCache.get(segmentEvalDt);
180
- var _iterator6 = _createForOfIteratorHelper(productIds),
181
- _step6;
182
- try {
183
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
184
- var _priceByProductId$get;
185
- var _productId = _step6.value;
186
- var key = "".concat(_productId, ":").concat(slotStart);
187
- var price = (_priceByProductId$get = _priceByProductId === null || _priceByProductId === void 0 ? void 0 : _priceByProductId.get(_productId)) !== null && _priceByProductId$get !== void 0 ? _priceByProductId$get : null;
188
- if (price !== null) {
189
- map.set(key, price);
190
- }
191
- }
192
- } catch (err) {
193
- _iterator6.e(err);
194
- } finally {
195
- _iterator6.f();
196
- }
197
- }
198
- } catch (err) {
199
- _iterator4.e(err);
200
- } finally {
201
- _iterator4.f();
202
- }
203
- return map;
204
- }
205
-
206
- /**
207
- * 指定商品在某一 datetime 的智能定价(addon / 单点重算用)。
208
- */
209
- export function getPriceForProductAtDatetime(params) {
210
- var _ref4, _extractProductPrice;
211
- var products = params.products,
212
- context = params.context,
213
- productId = params.productId,
214
- datetime = params.datetime,
215
- fallbackPrice = params.fallbackPrice;
216
- var resolved = formatProductsWithDataVariant(products, context, datetime);
217
- var product = resolved.find(function (item) {
218
- return Number(item.id) === Number(productId);
219
- });
220
- return (_ref4 = (_extractProductPrice = extractProductPrice(product || {})) !== null && _extractProductPrice !== void 0 ? _extractProductPrice : fallbackPrice) !== null && _ref4 !== void 0 ? _ref4 : '0.00';
221
- }
222
-
223
- /** 从 slot 价格 Map 读取单价,找不到则回退 fallback */
224
- export function getSlotPriceFromMap(params) {
225
- var slotPriceMap = params.slotPriceMap,
226
- productId = params.productId,
227
- slotStartTime = params.slotStartTime,
228
- fallbackPrice = params.fallbackPrice;
229
- var key = "".concat(productId, ":").concat(slotStartTime);
230
- var mapped = slotPriceMap.get(key);
231
- if (mapped != null) return mapped;
232
- return fallbackPrice !== null && fallbackPrice !== void 0 ? fallbackPrice : '0.00';
233
- }