@pisell/pisellos 0.10.15 → 0.10.17

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 (331) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.d.ts +5 -2
  10. package/dist/modules/OpenData/index.js +27 -14
  11. package/dist/modules/OpenData/types.d.ts +42 -0
  12. package/dist/modules/OpenData/types.js +7 -1
  13. package/dist/modules/OpenData/utils.d.ts +15 -1
  14. package/dist/modules/OpenData/utils.js +85 -0
  15. package/dist/modules/Order/index.d.ts +4 -2
  16. package/dist/modules/Order/index.js +131 -123
  17. package/dist/modules/Order/types.d.ts +8 -1
  18. package/dist/modules/Order/types.js +1 -0
  19. package/dist/modules/Order/utils.js +7 -1
  20. package/dist/modules/Payment/index.js +97 -162
  21. package/dist/modules/Product/types.d.ts +2 -0
  22. package/dist/modules/ProductList/index.js +96 -74
  23. package/dist/modules/Rules/index.js +12 -12
  24. package/dist/modules/SalesSummary/index.js +6 -4
  25. package/dist/modules/Schedule/index.js +0 -1
  26. package/dist/modules/Schedule/utils.js +0 -1
  27. package/dist/modules/Step/index.js +0 -1
  28. package/dist/plugins/request.js +1 -4
  29. package/dist/plugins/window.js +2 -6
  30. package/dist/server/index.d.ts +11 -0
  31. package/dist/server/index.js +977 -641
  32. package/dist/server/modules/menu/index.js +32 -41
  33. package/dist/server/modules/order/index.d.ts +8 -0
  34. package/dist/server/modules/order/index.js +253 -219
  35. package/dist/server/modules/products/index.js +24 -42
  36. package/dist/server/modules/quotation/index.js +29 -38
  37. package/dist/server/modules/resource/index.js +3 -4
  38. package/dist/server/modules/schedule/index.js +27 -35
  39. package/dist/server/utils/product.js +0 -1
  40. package/dist/server/utils/small-ticket.d.ts +9 -1
  41. package/dist/server/utils/small-ticket.js +117 -43
  42. package/dist/solution/BaseSales/index.d.ts +7 -0
  43. package/dist/solution/BaseSales/index.js +350 -215
  44. package/dist/solution/BaseSales/types.d.ts +2 -0
  45. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  46. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  47. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  48. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  49. package/dist/solution/BaseSales/utils.js +6 -3
  50. package/dist/solution/BookingByStep/index.d.ts +2 -2
  51. package/dist/solution/BookingByStep/index.js +7 -59
  52. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  53. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  54. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  55. package/dist/solution/BookingTicket/index.d.ts +14 -19
  56. package/dist/solution/BookingTicket/index.js +553 -433
  57. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  58. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  59. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  60. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  61. package/dist/solution/BuyTickets/index.js +9 -12
  62. package/dist/solution/Checkout/index.js +177 -252
  63. package/dist/solution/Checkout/utils/index.js +4 -16
  64. package/dist/solution/RegisterAndLogin/index.js +30 -76
  65. package/dist/solution/Sales/index.d.ts +20 -4
  66. package/dist/solution/Sales/index.js +348 -75
  67. package/dist/solution/Sales/types.d.ts +10 -0
  68. package/dist/solution/ScanOrder/index.js +50 -60
  69. package/dist/solution/ScanOrder/types.d.ts +2 -0
  70. package/dist/solution/ScanOrder/utils.js +6 -3
  71. package/dist/solution/ShopDiscount/index.js +2 -7
  72. package/dist/solution/UnifiedBookingSales/index.d.ts +5 -4
  73. package/dist/solution/UnifiedBookingSales/index.js +495 -422
  74. package/dist/solution/UnifiedBookingSales/types.d.ts +7 -1
  75. package/dist/solution/VenueBooking/index.js +45 -55
  76. package/dist/utils/task.js +15 -18
  77. package/dist/utils/watch.js +0 -1
  78. package/lib/apis/picoding.js +2 -0
  79. package/lib/core/index.js +131 -131
  80. package/lib/effects/index.js +46 -57
  81. package/lib/index.js +82 -49
  82. package/lib/model/index.js +14 -21
  83. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  84. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  85. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  86. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  87. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  88. package/lib/model/strategy/adapter/index.js +100 -64
  89. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  90. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  91. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  92. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  93. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  94. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  95. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  96. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  97. package/lib/model/strategy/adapter/promotion/index.js +1 -51
  98. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  99. package/lib/model/strategy/adapter/type.js +4 -16
  100. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  101. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  102. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  103. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  104. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  105. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  106. package/lib/model/strategy/engine.js +270 -168
  107. package/lib/model/strategy/index.js +49 -34
  108. package/lib/model/strategy/strategy-example.js +243 -239
  109. package/lib/model/strategy/type.js +100 -40
  110. package/lib/modules/Account/index.js +39 -53
  111. package/lib/modules/Account/types.js +20 -33
  112. package/lib/modules/AccountList/index.js +116 -154
  113. package/lib/modules/AccountList/types.js +30 -31
  114. package/lib/modules/AccountList/utils.js +18 -30
  115. package/lib/modules/BaseModule.js +23 -42
  116. package/lib/modules/BookingContext/index.js +158 -136
  117. package/lib/modules/BookingContext/types.js +46 -32
  118. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  119. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  120. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  121. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  122. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  123. package/lib/modules/BookingContext/utils/index.js +124 -41
  124. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  125. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  126. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  127. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  128. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  129. package/lib/modules/BookingContext/utils/resources.js +209 -167
  130. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  131. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  132. package/lib/modules/Cart/index.js +170 -124
  133. package/lib/modules/Cart/types.js +46 -51
  134. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  135. package/lib/modules/Cart/utils/cartDate.js +56 -61
  136. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  137. package/lib/modules/Cart/utils/cartNote.js +27 -32
  138. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  139. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  140. package/lib/modules/Cart/utils/cartResource.js +70 -78
  141. package/lib/modules/Cart/utils/changePrice.js +22 -50
  142. package/lib/modules/Cart/utils/index.js +106 -48
  143. package/lib/modules/Customer/constants.js +13 -34
  144. package/lib/modules/Customer/index.js +235 -172
  145. package/lib/modules/Customer/types.js +38 -35
  146. package/lib/modules/Date/index.js +116 -115
  147. package/lib/modules/Date/types.js +16 -28
  148. package/lib/modules/Date/utils.js +174 -123
  149. package/lib/modules/Discount/index.js +133 -143
  150. package/lib/modules/Discount/types.js +9 -31
  151. package/lib/modules/Guests/index.js +30 -56
  152. package/lib/modules/Guests/types.js +23 -33
  153. package/lib/modules/Holder/index.js +209 -189
  154. package/lib/modules/Holder/types.js +4 -16
  155. package/lib/modules/Holder/utils.js +20 -49
  156. package/lib/modules/OpenData/index.d.ts +5 -2
  157. package/lib/modules/OpenData/index.js +119 -78
  158. package/lib/modules/OpenData/types.d.ts +42 -0
  159. package/lib/modules/OpenData/types.js +12 -16
  160. package/lib/modules/OpenData/utils.d.ts +15 -1
  161. package/lib/modules/OpenData/utils.js +129 -78
  162. package/lib/modules/Order/index.d.ts +4 -2
  163. package/lib/modules/Order/index.js +1843 -2251
  164. package/lib/modules/Order/payment-utils.js +77 -120
  165. package/lib/modules/Order/types.d.ts +8 -1
  166. package/lib/modules/Order/types.js +88 -35
  167. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  168. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  169. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  171. package/lib/modules/Order/utils/virtualSettlement.js +120 -171
  172. package/lib/modules/Order/utils.js +834 -668
  173. package/lib/modules/Payment/cash.js +20 -33
  174. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  175. package/lib/modules/Payment/eftpos.js +16 -30
  176. package/lib/modules/Payment/index.js +532 -399
  177. package/lib/modules/Payment/mx51.js +1 -0
  178. package/lib/modules/Payment/types.js +230 -108
  179. package/lib/modules/Payment/utils.js +52 -51
  180. package/lib/modules/Payment/walletpass.js +485 -660
  181. package/lib/modules/Product/index.js +51 -46
  182. package/lib/modules/Product/types.d.ts +2 -0
  183. package/lib/modules/Product/types.js +4 -16
  184. package/lib/modules/Product/utils.js +32 -33
  185. package/lib/modules/ProductList/index.js +141 -161
  186. package/lib/modules/ProductList/types.js +9 -31
  187. package/lib/modules/Quotation/index.js +66 -100
  188. package/lib/modules/Quotation/types.js +4 -16
  189. package/lib/modules/Resource/index.js +27 -59
  190. package/lib/modules/Resource/types.js +22 -32
  191. package/lib/modules/Resource/utils.js +30 -38
  192. package/lib/modules/ResourcePlanner/index.js +25 -23
  193. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  194. package/lib/modules/ResourcePlanner/planner.js +591 -772
  195. package/lib/modules/ResourcePlanner/types.js +10 -29
  196. package/lib/modules/Rules/index.js +1224 -963
  197. package/lib/modules/Rules/types.js +17 -40
  198. package/lib/modules/SalesSummary/index.js +80 -89
  199. package/lib/modules/SalesSummary/types.js +4 -16
  200. package/lib/modules/SalesSummary/utils.js +359 -442
  201. package/lib/modules/ScanOrderLogger/index.js +59 -79
  202. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  203. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  204. package/lib/modules/ScanOrderLogger/types.js +4 -16
  205. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  206. package/lib/modules/Schedule/index.js +100 -114
  207. package/lib/modules/Schedule/type.js +4 -16
  208. package/lib/modules/Schedule/types.js +4 -16
  209. package/lib/modules/Schedule/utils.js +433 -291
  210. package/lib/modules/Step/index.js +40 -52
  211. package/lib/modules/Step/tyeps.js +4 -16
  212. package/lib/modules/Summary/index.js +66 -71
  213. package/lib/modules/Summary/types.js +4 -16
  214. package/lib/modules/Summary/utils.js +773 -418
  215. package/lib/modules/SurchargeList/index.js +46 -60
  216. package/lib/modules/SurchargeList/types.js +4 -16
  217. package/lib/modules/index.js +245 -63
  218. package/lib/plugins/app.js +4 -16
  219. package/lib/plugins/index.js +36 -25
  220. package/lib/plugins/request.js +137 -126
  221. package/lib/plugins/shopStore.js +4 -16
  222. package/lib/plugins/user.js +4 -16
  223. package/lib/plugins/window.js +171 -179
  224. package/lib/server/index.d.ts +11 -0
  225. package/lib/server/index.js +3432 -2757
  226. package/lib/server/modules/floor-plan/index.js +102 -123
  227. package/lib/server/modules/floor-plan/types.js +15 -30
  228. package/lib/server/modules/index.js +106 -68
  229. package/lib/server/modules/menu/index.js +146 -122
  230. package/lib/server/modules/menu/types.js +18 -31
  231. package/lib/server/modules/order/index.d.ts +8 -0
  232. package/lib/server/modules/order/index.js +781 -956
  233. package/lib/server/modules/order/types.js +122 -33
  234. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  235. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  236. package/lib/server/modules/payment/index.js +59 -83
  237. package/lib/server/modules/payment/types.js +4 -16
  238. package/lib/server/modules/products/index.js +575 -459
  239. package/lib/server/modules/products/types.js +44 -34
  240. package/lib/server/modules/quotation/index.js +137 -172
  241. package/lib/server/modules/quotation/types.js +21 -31
  242. package/lib/server/modules/resource/index.js +213 -184
  243. package/lib/server/modules/resource/types.js +42 -33
  244. package/lib/server/modules/schedule/index.js +135 -123
  245. package/lib/server/modules/schedule/types.js +14 -21
  246. package/lib/server/modules/schedule/utils.js +334 -163
  247. package/lib/server/types.js +4 -16
  248. package/lib/server/utils/index.js +25 -23
  249. package/lib/server/utils/product.js +196 -139
  250. package/lib/server/utils/schedule.js +34 -41
  251. package/lib/server/utils/small-ticket.d.ts +9 -1
  252. package/lib/server/utils/small-ticket.js +565 -470
  253. package/lib/server/utils/time.js +40 -49
  254. package/lib/solution/BaseSales/index.d.ts +7 -0
  255. package/lib/solution/BaseSales/index.js +1385 -1503
  256. package/lib/solution/BaseSales/types.d.ts +2 -0
  257. package/lib/solution/BaseSales/types.js +42 -38
  258. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  259. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  260. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  261. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  262. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  263. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  264. package/lib/solution/BaseSales/utils.js +161 -143
  265. package/lib/solution/BookingByStep/index.d.ts +2 -2
  266. package/lib/solution/BookingByStep/index.js +1527 -1340
  267. package/lib/solution/BookingByStep/types.js +40 -99
  268. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  269. package/lib/solution/BookingByStep/utils/products.js +42 -52
  270. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  271. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  272. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  273. package/lib/solution/BookingTicket/index.d.ts +14 -19
  274. package/lib/solution/BookingTicket/index.js +663 -526
  275. package/lib/solution/BookingTicket/types.js +99 -77
  276. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  277. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  278. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  279. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  280. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  281. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  282. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  283. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  284. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  285. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  286. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  287. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  288. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  289. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  290. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  291. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  292. package/lib/solution/BuyTickets/index.js +67 -70
  293. package/lib/solution/BuyTickets/types.js +22 -38
  294. package/lib/solution/Checkout/index.js +1451 -1158
  295. package/lib/solution/Checkout/types.js +91 -61
  296. package/lib/solution/Checkout/utils/index.js +228 -156
  297. package/lib/solution/PlaceOrder/index.js +55 -0
  298. package/lib/solution/RegisterAndLogin/config.js +493 -460
  299. package/lib/solution/RegisterAndLogin/index.js +633 -630
  300. package/lib/solution/RegisterAndLogin/types.js +189 -76
  301. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  302. package/lib/solution/Sales/index.d.ts +20 -4
  303. package/lib/solution/Sales/index.js +502 -330
  304. package/lib/solution/Sales/types.d.ts +10 -0
  305. package/lib/solution/Sales/types.js +27 -33
  306. package/lib/solution/ScanOrder/index.js +822 -852
  307. package/lib/solution/ScanOrder/types.d.ts +2 -0
  308. package/lib/solution/ScanOrder/types.js +33 -34
  309. package/lib/solution/ScanOrder/utils.js +412 -374
  310. package/lib/solution/ShopDiscount/index.js +226 -232
  311. package/lib/solution/ShopDiscount/types.js +15 -37
  312. package/lib/solution/ShopDiscount/utils.js +300 -172
  313. package/lib/solution/UnifiedBookingSales/index.d.ts +5 -4
  314. package/lib/solution/UnifiedBookingSales/index.js +1087 -1222
  315. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  316. package/lib/solution/UnifiedBookingSales/types.d.ts +7 -1
  317. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  318. package/lib/solution/VenueBooking/index.js +811 -879
  319. package/lib/solution/VenueBooking/types.js +19 -39
  320. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  321. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  322. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  323. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  324. package/lib/solution/VenueBooking/utils.js +130 -67
  325. package/lib/solution/index.js +124 -41
  326. package/lib/store/createStore.js +32 -29
  327. package/lib/types/index.js +4 -16
  328. package/lib/utils/payment-number.js +26 -46
  329. package/lib/utils/task.js +36 -36
  330. package/lib/utils/watch.js +81 -47
  331. package/package.json +2 -1
@@ -1,283 +1,271 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/model/strategy/adapter/promotion/examples.ts
20
- var examples_exports = {};
21
- __export(examples_exports, {
22
- BUY_X_GET_Y_FREE_STRATEGY: () => BUY_X_GET_Y_FREE_STRATEGY,
23
- ITEM_REWARD_STRATEGY: () => ITEM_REWARD_STRATEGY,
24
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => X_ITEMS_FOR_Y_PRICE_STRATEGY
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
25
5
  });
26
- module.exports = __toCommonJS(examples_exports);
27
- var X_ITEMS_FOR_Y_PRICE_STRATEGY = {
6
+ exports.X_ITEMS_FOR_Y_PRICE_STRATEGY = exports.ITEM_REWARD_STRATEGY = exports.BUY_X_GET_Y_FREE_STRATEGY = void 0;
7
+ /**
8
+ * X件Y元策略配置示例
9
+ *
10
+ * 业务规则:
11
+ * - 每X件商品固定价格Y元(可累计)
12
+ * - 支持跨商品组合(A+B可以凑成一组)
13
+ * - 买5件 = 2组优惠 + 1件原价
14
+ *
15
+ * 商品匹配规则:
16
+ * - product_variant_id = 0 表示匹配任意变体
17
+ * - product_variant_id != 0 表示精确匹配该变体
18
+ */
19
+ const X_ITEMS_FOR_Y_PRICE_STRATEGY = exports.X_ITEMS_FOR_Y_PRICE_STRATEGY = {
28
20
  metadata: {
29
- id: "STRATEGY_001",
21
+ id: 'STRATEGY_001',
30
22
  name: {
31
- en: "2 items for $10",
32
- "zh-CN": "2杯10元",
33
- "zh-HK": "2杯10元"
23
+ en: '2 items for $10',
24
+ 'zh-CN': '2杯10元',
25
+ 'zh-HK': '2杯10元'
34
26
  },
35
- type: "promotion",
27
+ type: 'promotion',
36
28
  custom: {
37
29
  display: {
38
30
  product_card: {
39
31
  text: {
40
- en: "2 for $10",
41
- "zh-CN": "2杯10元",
42
- "zh-HK": "2杯10元"
32
+ en: '2 for $10',
33
+ 'zh-CN': '2杯10元',
34
+ 'zh-HK': '2杯10元'
43
35
  },
44
- type: "tag"
36
+ type: 'tag'
45
37
  }
46
38
  }
47
39
  }
48
40
  },
49
41
  conditions: {
50
- operator: "and",
51
- rules: [
52
- {
53
- type: "operator",
54
- field: "currentDateTime",
55
- value: "2023-01-01 00:00:00",
56
- operator: ">="
57
- },
58
- {
59
- type: "operator",
60
- field: "currentDateTime",
61
- value: "2027-01-01 00:00:00",
62
- operator: "<="
63
- },
64
- {
65
- type: "operator",
66
- field: "productIdAndVariantId",
67
- value: [
68
- {
69
- product_id: 60736,
70
- product_variant_id: 0
71
- // 0 = 匹配任意变体
72
- },
73
- {
74
- product_id: 60737,
75
- product_variant_id: 0
76
- // 0 = 匹配任意变体
77
- }
78
- ],
79
- operator: "product_match"
80
- }
81
- ],
82
- actionIds: ["1"]
42
+ operator: 'and',
43
+ rules: [{
44
+ type: 'operator',
45
+ field: 'currentDateTime',
46
+ value: '2023-01-01 00:00:00',
47
+ operator: '>='
48
+ }, {
49
+ type: 'operator',
50
+ field: 'currentDateTime',
51
+ value: '2027-01-01 00:00:00',
52
+ operator: '<='
53
+ }, {
54
+ type: 'operator',
55
+ field: 'productIdAndVariantId',
56
+ value: [{
57
+ product_id: 60736,
58
+ product_variant_id: 0 // 0 = 匹配任意变体
59
+ }, {
60
+ product_id: 60737,
61
+ product_variant_id: 0 // 0 = 匹配任意变体
62
+ }],
63
+ operator: 'product_match'
64
+ }],
65
+ actionIds: ['1']
83
66
  },
84
- actions: [
85
- {
86
- id: "1",
87
- type: "X_ITEMS_FOR_Y_PRICE",
88
- value: {
89
- x: 2,
90
- // 每X件
91
- price: 10
92
- // 固定价格Y元
93
- },
94
- valueType: "object",
95
- target: "product",
96
- priority: 1,
97
- config: {
98
- allowCrossProduct: true,
99
- // 允许跨商品组合(A+B可以凑成一组)
100
- cumulative: true
101
- // 可累计(买5件 = 2组优惠 + 1件原价)
102
- }
67
+ actions: [{
68
+ id: '1',
69
+ type: 'X_ITEMS_FOR_Y_PRICE',
70
+ value: {
71
+ x: 2,
72
+ // 每X件
73
+ price: 10 // 固定价格Y元
74
+ },
75
+ valueType: 'object',
76
+ target: 'product',
77
+ priority: 1,
78
+ config: {
79
+ allowCrossProduct: true,
80
+ // 允许跨商品组合(A+B可以凑成一组)
81
+ cumulative: true // 可累计(买5件 = 2组优惠 + 1件原价)
103
82
  }
104
- ]
83
+ }]
105
84
  };
106
- var BUY_X_GET_Y_FREE_STRATEGY = {
85
+
86
+ /**
87
+ * 买X送Y策略配置示例
88
+ *
89
+ * 业务规则:
90
+ * - 买X件送Y件(可累计:买2送2、买3送3...)
91
+ * - 赠品由用户从列表中选择
92
+ *
93
+ * 商品匹配规则:
94
+ * - product_variant_id = 0 表示匹配任意变体
95
+ * - product_variant_id != 0 表示精确匹配该变体
96
+ */
97
+ const BUY_X_GET_Y_FREE_STRATEGY = exports.BUY_X_GET_Y_FREE_STRATEGY = {
107
98
  metadata: {
108
- id: "STRATEGY_002",
99
+ id: 'STRATEGY_002',
109
100
  name: {
110
- en: "Buy 1 Get 1 Free",
111
- "zh-CN": "买1送1",
112
- "zh-HK": "買1送1"
101
+ en: 'Buy 1 Get 1 Free',
102
+ 'zh-CN': '买1送1',
103
+ 'zh-HK': '買1送1'
113
104
  },
114
- type: "promotion",
105
+ type: 'promotion',
115
106
  custom: {
116
107
  display: {
117
108
  product_card: {
118
109
  text: {
119
- en: "Buy 1 Get 1",
120
- "zh-CN": "买1送1",
121
- "zh-HK": "買1送1"
110
+ en: 'Buy 1 Get 1',
111
+ 'zh-CN': '买1送1',
112
+ 'zh-HK': '買1送1'
122
113
  },
123
- type: "tag"
114
+ type: 'tag'
124
115
  }
125
116
  }
126
117
  }
127
118
  },
128
119
  conditions: {
129
- operator: "and",
130
- rules: [
131
- {
132
- type: "operator",
133
- field: "currentDateTime",
134
- value: "2023-01-01 00:00:00",
135
- operator: ">="
136
- },
137
- {
138
- type: "operator",
139
- field: "currentDateTime",
140
- value: "2027-01-01 00:00:00",
141
- operator: "<="
142
- },
143
- {
144
- type: "operator",
145
- field: "productIdAndVariantId",
146
- value: [
147
- {
148
- product_id: 60736,
149
- product_variant_id: 0
150
- // 0 = 匹配任意变体
151
- },
152
- {
153
- product_id: 60737,
154
- product_variant_id: 0
155
- // 0 = 匹配任意变体
156
- }
157
- ],
158
- operator: "product_match"
159
- }
160
- ],
161
- actionIds: ["1"]
120
+ operator: 'and',
121
+ rules: [{
122
+ type: 'operator',
123
+ field: 'currentDateTime',
124
+ value: '2023-01-01 00:00:00',
125
+ operator: '>='
126
+ }, {
127
+ type: 'operator',
128
+ field: 'currentDateTime',
129
+ value: '2027-01-01 00:00:00',
130
+ operator: '<='
131
+ }, {
132
+ type: 'operator',
133
+ field: 'productIdAndVariantId',
134
+ value: [{
135
+ product_id: 60736,
136
+ product_variant_id: 0 // 0 = 匹配任意变体
137
+ }, {
138
+ product_id: 60737,
139
+ product_variant_id: 0 // 0 = 匹配任意变体
140
+ }],
141
+ operator: 'product_match'
142
+ }],
143
+ actionIds: ['1']
162
144
  },
163
- actions: [
164
- {
165
- id: "1",
166
- type: "BUY_X_GET_Y_FREE",
167
- value: {
168
- buyQuantity: 1,
169
- // 买X件
170
- freeQuantity: 1
171
- // 送Y件
172
- },
173
- valueType: "object",
174
- target: "product",
175
- priority: 1,
176
- config: {
177
- // 可累计(买2送2、买3送3...)
178
- cumulative: true,
179
- // 可选的赠品列表
180
- giftProducts: [
181
- { product_id: 60757, product_variant_id: 0 },
182
- { product_id: 38782, product_variant_id: 0 },
183
- { product_id: 60749, product_variant_id: 27267 }
184
- ]
185
- }
145
+ actions: [{
146
+ id: '1',
147
+ type: 'BUY_X_GET_Y_FREE',
148
+ value: {
149
+ buyQuantity: 1,
150
+ // 买X件
151
+ freeQuantity: 1 // 送Y件
152
+ },
153
+ valueType: 'object',
154
+ target: 'product',
155
+ priority: 1,
156
+ config: {
157
+ // 可累计(买2送2、买3送3...)
158
+ cumulative: true,
159
+ // 可选的赠品列表
160
+ giftProducts: [{
161
+ product_id: 60757,
162
+ product_variant_id: 0
163
+ }, {
164
+ product_id: 38782,
165
+ product_variant_id: 0
166
+ }, {
167
+ product_id: 60749,
168
+ product_variant_id: 27267
169
+ }]
186
170
  }
187
- ]
171
+ }]
188
172
  };
189
- var ITEM_REWARD_STRATEGY = {
173
+
174
+ /**
175
+ * ITEM_REWARD 策略配置示例:儿童票触发婴儿票免费
176
+ *
177
+ * 业务规则:
178
+ * - 条件商品:儿童票(conditions.rules.productIdAndVariantId)
179
+ * - 奖励商品:购物车/订单内已经存在的婴儿票(actions[0].config.rewardTargets)
180
+ * - 本 action 不自动新增婴儿票;每次购物车变更后由统一促销链路重算
181
+ *
182
+ * 字段说明:
183
+ * - type: "ITEM_REWARD" 表示商品奖励 action
184
+ * - target: "product" 表示本期只奖励商品行
185
+ * - config.rewardTargets: 奖励对象数组,支持 { product_id, product_variant_id }
186
+ * - config.targetSelection: "consumer_best" 表示目标商品超额时选择节省金额最高的商品
187
+ * - value.rewardMethod:
188
+ * - "free": 目标商品最终价为 0
189
+ * - "percent_off": 百分比折扣,rewardValue 为 0-100
190
+ * - "amount_off": 每个目标商品固定减免 rewardValue
191
+ * - "fixed_price": 目标商品最终单价为 rewardValue
192
+ * - value.quantityRule:
193
+ * - "per_condition_quantity": 每满足 triggerQuantity 个条件商品,奖励 rewardQuantity 个目标商品
194
+ * - "all_targets": 满足条件后奖励全部目标商品
195
+ * - "max_per_order": 满足条件后每单最多奖励 maxRewardQuantity 个目标商品
196
+ */
197
+ const ITEM_REWARD_STRATEGY = exports.ITEM_REWARD_STRATEGY = {
190
198
  metadata: {
191
- id: "STRATEGY_003",
199
+ id: 'STRATEGY_003',
192
200
  name: {
193
- en: "Infant ticket free with child ticket",
194
- "zh-CN": "儿童票触发婴儿票免费",
195
- "zh-HK": "兒童票觸發嬰兒票免費"
201
+ en: 'Infant ticket free with child ticket',
202
+ 'zh-CN': '儿童票触发婴儿票免费',
203
+ 'zh-HK': '兒童票觸發嬰兒票免費'
196
204
  },
197
- type: "promotion",
205
+ type: 'promotion',
198
206
  custom: {
199
207
  display: {
200
208
  product_card: {
201
209
  text: {
202
- en: "Infant ticket free",
203
- "zh-CN": "婴儿票免费",
204
- "zh-HK": "嬰兒票免費"
210
+ en: 'Infant ticket free',
211
+ 'zh-CN': '婴儿票免费',
212
+ 'zh-HK': '嬰兒票免費'
205
213
  },
206
- type: "tag"
214
+ type: 'tag'
207
215
  }
208
216
  }
209
217
  }
210
218
  },
211
219
  conditions: {
212
- operator: "and",
213
- rules: [
214
- {
215
- type: "operator",
216
- field: "currentDateTime",
217
- value: "2023-01-01 00:00:00",
218
- operator: ">="
219
- },
220
- {
221
- type: "operator",
222
- field: "currentDateTime",
223
- value: "2030-01-01 00:00:00",
224
- operator: "<="
225
- },
226
- {
227
- type: "operator",
228
- field: "productIdAndVariantId",
229
- value: [
230
- {
231
- product_id: 1001,
232
- // 条件商品:儿童票
233
- product_variant_id: 0
234
- // 0 = 匹配任意变体
235
- }
236
- ],
237
- operator: "product_match"
238
- }
239
- ],
240
- actionIds: ["1"]
220
+ operator: 'and',
221
+ rules: [{
222
+ type: 'operator',
223
+ field: 'currentDateTime',
224
+ value: '2023-01-01 00:00:00',
225
+ operator: '>='
226
+ }, {
227
+ type: 'operator',
228
+ field: 'currentDateTime',
229
+ value: '2030-01-01 00:00:00',
230
+ operator: '<='
231
+ }, {
232
+ type: 'operator',
233
+ field: 'productIdAndVariantId',
234
+ value: [{
235
+ product_id: 1001,
236
+ // 条件商品:儿童票
237
+ product_variant_id: 0 // 0 = 匹配任意变体
238
+ }],
239
+ operator: 'product_match'
240
+ }],
241
+ actionIds: ['1']
241
242
  },
242
- actions: [
243
- {
244
- id: "1",
245
- type: "ITEM_REWARD",
246
- value: {
247
- rewardMethod: "free",
248
- // free | percent_off | amount_off | fixed_price
249
- rewardValue: 0,
250
- // free 可省略;其他 rewardMethod 使用
251
- quantityRule: "per_condition_quantity",
252
- // per_condition_quantity | all_targets | max_per_order
253
- triggerQuantity: 1,
254
- // N:每满足 N 个条件商品
255
- rewardQuantity: 1,
256
- // Y:奖励 Y 个目标商品
257
- maxRewardQuantity: 1
258
- // max_per_order 使用;本例保留为配置示意
259
- },
260
- valueType: "object",
261
- target: "product",
262
- priority: 1,
263
- config: {
264
- rewardTargets: [
265
- {
266
- product_id: 2001,
267
- // 奖励对象:婴儿票
268
- product_variant_id: 0
269
- // 0 = 匹配任意变体
270
- }
271
- ],
272
- targetSelection: "consumer_best"
273
- // consumer_best = 按可节省金额从高到低选择
274
- }
243
+ actions: [{
244
+ id: '1',
245
+ type: 'ITEM_REWARD',
246
+ value: {
247
+ rewardMethod: 'free',
248
+ // free | percent_off | amount_off | fixed_price
249
+ rewardValue: 0,
250
+ // free 可省略;其他 rewardMethod 使用
251
+ quantityRule: 'per_condition_quantity',
252
+ // per_condition_quantity | all_targets | max_per_order
253
+ triggerQuantity: 1,
254
+ // N:每满足 N 个条件商品
255
+ rewardQuantity: 1,
256
+ // Y:奖励 Y 个目标商品
257
+ maxRewardQuantity: 1 // max_per_order 使用;本例保留为配置示意
258
+ },
259
+ valueType: 'object',
260
+ target: 'product',
261
+ priority: 1,
262
+ config: {
263
+ rewardTargets: [{
264
+ product_id: 2001,
265
+ // 奖励对象:婴儿票
266
+ product_variant_id: 0 // 0 = 匹配任意变体
267
+ }],
268
+ targetSelection: 'consumer_best' // consumer_best = 按可节省金额从高到低选择
275
269
  }
276
- ]
277
- };
278
- // Annotate the CommonJS export names for ESM import in node:
279
- 0 && (module.exports = {
280
- BUY_X_GET_Y_FREE_STRATEGY,
281
- ITEM_REWARD_STRATEGY,
282
- X_ITEMS_FOR_Y_PRICE_STRATEGY
283
- });
270
+ }]
271
+ };
@@ -1,51 +1 @@
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);
28
-
29
- // src/model/strategy/adapter/promotion/index.ts
30
- var promotion_exports = {};
31
- __export(promotion_exports, {
32
- BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
33
- ITEM_REWARD_STRATEGY: () => import_examples.ITEM_REWARD_STRATEGY,
34
- PromotionAdapter: () => import_adapter.PromotionAdapter,
35
- PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
36
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
37
- default: () => import_adapter2.default
38
- });
39
- module.exports = __toCommonJS(promotion_exports);
40
- var import_evaluator = require("./evaluator");
41
- var import_adapter = require("./adapter");
42
- var import_adapter2 = __toESM(require("./adapter"));
43
- var import_examples = require("./examples");
44
- // Annotate the CommonJS export names for ESM import in node:
45
- 0 && (module.exports = {
46
- BUY_X_GET_Y_FREE_STRATEGY,
47
- ITEM_REWARD_STRATEGY,
48
- PromotionAdapter,
49
- PromotionEvaluator,
50
- X_ITEMS_FOR_Y_PRICE_STRATEGY
51
- });
1
+ "use strict";