@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
@@ -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.2",
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
- }