@pisell/pisellos 2.3.73 → 2.3.75

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 (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,51 +1,64 @@
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/solution/BookingTicket/utils/scan/formatGlobalScan.ts
20
- var formatGlobalScan_exports = {};
21
- __export(formatGlobalScan_exports, {
22
- formatGlobalScanResult: () => formatGlobalScanResult
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(formatGlobalScan_exports);
6
+ exports.formatGlobalScanResult = formatGlobalScanResult;
7
+ /**
8
+ * 全局扫码搜索结果格式化(对齐 ticketBooking `formatScanGlobal`)。
9
+ */
10
+
11
+ /**
12
+ * 将 handleGlobalScan 返回的原始结构格式化为 UI/OS 统一结构。
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const formatted = formatGlobalScanResult(
17
+ * { searchType: 'wallet', response: { code: 200, data: { customer: {...} } } },
18
+ * 'WL123',
19
+ * );
20
+ * // => { searchType: 'wallet', data: customerObj, scanCode: 'WL123' }
21
+ * ```
22
+ */
25
23
  function formatGlobalScanResult(raw, scanCode) {
26
- var _a;
27
- if (!(raw == null ? void 0 : raw.searchType))
28
- return null;
29
- const { searchType } = raw;
30
- const { data: resultData, code } = raw.response || {};
31
- if (code !== 200 && searchType !== "local_product") {
24
+ if (!raw?.searchType) return null;
25
+ const {
26
+ searchType
27
+ } = raw;
28
+ const {
29
+ data: resultData,
30
+ code
31
+ } = raw.response || {};
32
+ if (code !== 200 && searchType !== 'local_product') {
32
33
  return null;
33
34
  }
34
- if (searchType === "wallet") {
35
- return { searchType, data: resultData == null ? void 0 : resultData.customer, scanCode };
35
+ if (searchType === 'wallet') {
36
+ return {
37
+ searchType,
38
+ data: resultData?.customer,
39
+ scanCode
40
+ };
36
41
  }
37
- if (searchType === "walletPass") {
38
- return { searchType, data: (_a = resultData == null ? void 0 : resultData[0]) == null ? void 0 : _a.customer, scanCode };
42
+ if (searchType === 'walletPass') {
43
+ return {
44
+ searchType,
45
+ data: resultData?.[0]?.customer,
46
+ scanCode
47
+ };
39
48
  }
40
- if (searchType === "product" || searchType === "local_product") {
41
- return { searchType, data: resultData, scanCode };
49
+ if (searchType === 'product' || searchType === 'local_product') {
50
+ return {
51
+ searchType,
52
+ data: resultData,
53
+ scanCode
54
+ };
42
55
  }
43
- if (searchType === "order") {
44
- return { searchType, data: resultData, scanCode };
56
+ if (searchType === 'order') {
57
+ return {
58
+ searchType,
59
+ data: resultData,
60
+ scanCode
61
+ };
45
62
  }
46
63
  return null;
47
- }
48
- // Annotate the CommonJS export names for ESM import in node:
49
- 0 && (module.exports = {
50
- formatGlobalScanResult
51
- });
64
+ }
@@ -1,56 +1,35 @@
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);
1
+ "use strict";
28
2
 
29
- // src/solution/BookingTicket/utils/scan/handleScan.ts
30
- var handleScan_exports = {};
31
- __export(handleScan_exports, {
32
- handleCustomerScan: () => handleCustomerScan,
33
- handleGlobalScan: () => handleGlobalScan,
34
- handleUniversalScan: () => handleUniversalScan
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
35
5
  });
36
- module.exports = __toCommonJS(handleScan_exports);
37
- var import_cloudSearch = require("./cloudSearch");
38
- var import_scanCache = __toESM(require("./scanCache"));
39
- var promiseAny = async (promises) => {
6
+ exports.handleUniversalScan = exports.handleGlobalScan = exports.handleCustomerScan = void 0;
7
+ var _cloudSearch = require("./cloudSearch");
8
+ var _scanCache = _interopRequireDefault(require("./scanCache"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /**
11
+ * Promise.any 的替代实现
12
+ * 返回第一个成功解析的 Promise,如果所有 Promise 都失败则抛出错误
13
+ * @param promises Promise 数组
14
+ * @returns 第一个成功的结果
15
+ */
16
+ const promiseAny = async promises => {
40
17
  if (promises.length === 0) {
41
- throw new Error("No promises provided");
18
+ throw new Error('No promises provided');
42
19
  }
43
20
  const errors = [];
44
21
  let completedCount = 0;
45
22
  return new Promise((resolve, reject) => {
46
23
  promises.forEach((promise, index) => {
47
- promise.then((result) => {
24
+ promise.then(result => {
48
25
  resolve(result);
49
- }).catch((error) => {
26
+ }).catch(error => {
50
27
  errors[index] = error;
51
28
  completedCount++;
29
+
30
+ // 如果所有 Promise 都失败了,抛出包含所有错误的错误
52
31
  if (completedCount === promises.length) {
53
- const errorMessage = `All promises were rejected. Errors: ${errors.map((e) => e.message).join(", ")}`;
32
+ const errorMessage = `All promises were rejected. Errors: ${errors.map(e => e.message).join(', ')}`;
54
33
  const combinedError = new Error(errorMessage);
55
34
  combinedError.errors = errors;
56
35
  reject(combinedError);
@@ -59,75 +38,99 @@ var promiseAny = async (promises) => {
59
38
  });
60
39
  });
61
40
  };
62
- var handleScanFn = (getRequestList, localSearch) => {
63
- return async (scanResult) => {
64
- const { value } = scanResult || {};
41
+
42
+ /**
43
+ * 处理扫码
44
+ * @param getRequestList 获取请求列表
45
+ * @returns 处理结果
46
+ */
47
+ const handleScanFn = (getRequestList, localSearch) => {
48
+ return async scanResult => {
49
+ const {
50
+ value
51
+ } = scanResult || {};
52
+
53
+ // 本地解析识别码
65
54
  if (localSearch) {
66
55
  try {
67
- const localResult = localSearch == null ? void 0 : localSearch(value);
68
- if ((localResult == null ? void 0 : localResult.length) > 0) {
69
- console.log("本地搜索到数据>>>>>>>", localResult);
56
+ const localResult = localSearch?.(value);
57
+ if (localResult?.length > 0) {
70
58
  return {
71
- searchType: "local_product",
72
- response: { data: { list: localResult } }
59
+ searchType: 'local_product',
60
+ response: {
61
+ data: {
62
+ list: localResult
63
+ }
64
+ }
73
65
  };
74
- } else {
75
- console.log("本地搜索无数据>>>>>>>");
76
- }
66
+ } else {}
77
67
  } catch (error) {
78
- console.error("本地搜索到数据失败>>>>>>>", error);
68
+ console.error('本地搜索到数据失败>>>>>>>', error);
79
69
  }
80
70
  }
71
+
72
+ // 检查缓存中是否已有数据
81
73
  try {
82
- if (import_scanCache.default.has(value)) {
83
- const result = import_scanCache.default.get(value);
84
- console.log("缓存中搜索到数据>>>>>>>", result);
74
+ if (_scanCache.default.has(value)) {
75
+ const result = _scanCache.default.get(value);
85
76
  return result;
86
- } else {
87
- console.log("缓存中无数据>>>>>>>");
88
- }
77
+ } else {}
89
78
  } catch (error) {
90
- console.error("缓存中搜索数据失败>>>>>>>", error);
79
+ console.error('缓存中搜索数据失败>>>>>>>', error);
91
80
  }
92
- const requestList = (getRequestList == null ? void 0 : getRequestList(value)) || [];
81
+ const requestList = getRequestList?.(value) || [];
93
82
  if (requestList.length === 0) {
94
- throw new Error("requestList is empty");
83
+ throw new Error('requestList is empty');
95
84
  }
96
85
  try {
97
86
  const result = await promiseAny(requestList);
98
- import_scanCache.default.set(value, result);
87
+ // 将结果缓存
88
+ _scanCache.default.set(value, result);
99
89
  return result;
100
90
  } catch (error) {
101
91
  throw error;
102
92
  }
103
93
  };
104
94
  };
105
- var handleGlobalScan = (request, localSearch, channel) => {
106
- const getRequestList = (value) => {
95
+
96
+ /**
97
+ * 处理全局扫码
98
+ * @param request 请求插件
99
+ * @param localSearch 本地商品搜索
100
+ * @param channel 当前销售渠道
101
+ * @returns 处理结果
102
+ */
103
+ const handleGlobalScan = (request, localSearch, channel) => {
104
+ const getRequestList = value => {
107
105
  let requestList = [];
108
- if (value.startsWith("WL")) {
109
- requestList = [(0, import_cloudSearch.searchWallet)(request, value)];
106
+ // 如果value是已WL开头的,则认为是钱包识别码
107
+ if (value.startsWith('WL')) {
108
+ requestList = [(0, _cloudSearch.searchWallet)(request, value)];
110
109
  } else {
111
- requestList = [
112
- ...channel === "kiosk" ? [] : [(0, import_cloudSearch.searchOrder)(request, value)],
113
- (0, import_cloudSearch.searchWalletPass)(request, value),
114
- (0, import_cloudSearch.searchWallet)(request, value),
115
- (0, import_cloudSearch.searchProduct)(request, value)
116
- ];
110
+ requestList = [...(channel === 'kiosk' ? [] : [(0, _cloudSearch.searchOrder)(request, value)]), (0, _cloudSearch.searchWalletPass)(request, value), (0, _cloudSearch.searchWallet)(request, value), (0, _cloudSearch.searchProduct)(request, value)];
117
111
  }
118
112
  return requestList;
119
113
  };
120
114
  return handleScanFn(getRequestList, localSearch);
121
115
  };
122
- var handleCustomerScan = () => {
116
+
117
+ /**
118
+ * 处理客户扫码
119
+ * @param request 请求插件
120
+ * @returns 处理结果
121
+ */
122
+ exports.handleGlobalScan = handleGlobalScan;
123
+ const handleCustomerScan = () => {
123
124
  return () => Promise.resolve({});
124
125
  };
125
- var handleUniversalScan = () => {
126
+
127
+ /**
128
+ * 处理钱包扫码
129
+ * @param request 请求插件
130
+ * @returns 处理结果
131
+ */
132
+ exports.handleCustomerScan = handleCustomerScan;
133
+ const handleUniversalScan = () => {
126
134
  return () => Promise.resolve({});
127
135
  };
128
- // Annotate the CommonJS export names for ESM import in node:
129
- 0 && (module.exports = {
130
- handleCustomerScan,
131
- handleGlobalScan,
132
- handleUniversalScan
133
- });
136
+ exports.handleUniversalScan = handleUniversalScan;
@@ -1,46 +1,33 @@
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);
1
+ "use strict";
28
2
 
29
- // src/solution/BookingTicket/utils/scan/index.ts
30
- var scan_exports = {};
31
- __export(scan_exports, {
32
- default: () => Scan
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(scan_exports);
35
- var import_watch = __toESM(require("../../../../utils/watch"));
36
- var import_task = __toESM(require("../../../../utils/task"));
37
- var _Scan = class {
6
+ exports.default = void 0;
7
+ var _watch = _interopRequireDefault(require("../../../../utils/watch"));
8
+ var _task = _interopRequireDefault(require("../../../../utils/task"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ var ScanResultType = /*#__PURE__*/function (ScanResultType) {
11
+ ScanResultType["Scanner"] = "scanner";
12
+ ScanResultType["NFC"] = "nfc";
13
+ ScanResultType["NativeScanner"] = "nativeScanner";
14
+ return ScanResultType;
15
+ }(ScanResultType || {});
16
+ class Scan {
17
+ static scanInstances = new Set();
18
+ static peripheralsListenerMounted = false;
19
+ solution;
20
+ watchKey;
21
+ listenerConfig = new Map();
38
22
  constructor(solution, watchKey) {
39
- this.listenerConfig = /* @__PURE__ */ new Map();
40
23
  this.solution = solution;
41
24
  this.watchKey = watchKey;
42
- _Scan.scanInstances.add(this);
25
+ Scan.scanInstances.add(this);
26
+
27
+ // 初始化扫码监听
28
+ // this.initPeripheralsListener();
43
29
  }
30
+
44
31
  /**
45
32
  * 初始化外设扫码结果监听
46
33
  *
@@ -48,34 +35,27 @@ var _Scan = class {
48
35
  * scan.initPeripheralsListener();
49
36
  */
50
37
  initPeripheralsListener() {
51
- var _a, _b, _c, _d, _e;
52
- if (_Scan.peripheralsListenerMounted)
53
- return;
54
- _Scan.peripheralsListenerMounted = true;
55
- (_e = (_d = (_c = (_b = (_a = this.solution) == null ? void 0 : _a.window) == null ? void 0 : _b.interaction) == null ? void 0 : _c.utils) == null ? void 0 : _d.mountFunction) == null ? void 0 : _e.call(
56
- _d,
57
- "global",
58
- "peripheralsResult",
59
- (strVal) => {
60
- try {
61
- const result = JSON.parse(strVal);
62
- console.log("nativeScannerResult>>>>>>>", result);
63
- _Scan.scanInstances.forEach((instance) => {
64
- instance.handleScan(result);
65
- });
66
- } catch (err) {
67
- console.error(err);
68
- }
38
+ if (Scan.peripheralsListenerMounted) return;
39
+ Scan.peripheralsListenerMounted = true;
40
+ this.solution?.window?.interaction?.utils?.mountFunction?.('global', 'peripheralsResult', strVal => {
41
+ try {
42
+ const result = JSON.parse(strVal);
43
+ Scan.scanInstances.forEach(instance => {
44
+ instance.handleScan(result);
45
+ });
46
+ } catch (err) {
47
+ console.error(err);
69
48
  }
70
- );
49
+ });
71
50
  }
51
+
72
52
  /**
73
53
  * 处理扫码事件
74
54
  * @param eventKey 事件key
75
55
  * @param value 扫码结果
76
56
  */
77
57
  handleScan(result) {
78
- const lastEnableEventKey = import_watch.default.getLastEnableEventKey(this.watchKey);
58
+ const lastEnableEventKey = _watch.default.getLastEnableEventKey(this.watchKey);
79
59
  if (lastEnableEventKey) {
80
60
  const listenerConfig = this.listenerConfig.get(lastEnableEventKey);
81
61
  if (listenerConfig) {
@@ -90,115 +70,131 @@ var _Scan = class {
90
70
  }
91
71
  }
92
72
  }
73
+
93
74
  /**
94
75
  * 生成uuid
95
76
  * @returns uuid
96
77
  */
97
78
  generateUuid() {
79
+ // 需要加入时间戳,避免重复
98
80
  return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15) + Date.now().toString(36);
99
81
  }
82
+
100
83
  /**
101
84
  * 添加扫码信息监听
102
85
  * @param watchKey 监听的key
103
86
  * @param event 事件
104
87
  */
105
88
  addListener(event, scanCallback) {
106
- import_watch.default.subscribe(this.watchKey, event);
107
- const task = new import_task.default();
108
- task.addAction(
109
- event.key,
110
- (...args) => this.scanTaskAction(event.key, ...args)
111
- );
112
- this.listenerConfig.set(event.key, { scanCallback, task });
89
+ // 订阅事件
90
+ _watch.default.subscribe(this.watchKey, event);
91
+ // 创建任务
92
+ const task = new _task.default();
93
+ task.addAction(event.key, (...args) => this.scanTaskAction(event.key, ...args));
94
+
95
+ // 创建监听配置
96
+ this.listenerConfig.set(event.key, {
97
+ scanCallback,
98
+ task
99
+ });
113
100
  return {
114
101
  remove: () => {
115
102
  this.removeListener(event);
116
103
  }
117
104
  };
118
105
  }
106
+
119
107
  /**
120
108
  * 移除扫码信息监听
121
109
  * @param watchKey 监听的key
122
110
  * @param event 事件
123
111
  */
124
112
  removeListener(event) {
125
- var _a, _b;
126
- import_watch.default.unsubscribe(this.watchKey, event);
127
- (_b = (_a = this.listenerConfig.get(event.key)) == null ? void 0 : _a.task) == null ? void 0 : _b.clear();
113
+ _watch.default.unsubscribe(this.watchKey, event);
114
+ this.listenerConfig.get(event.key)?.task?.clear();
128
115
  this.listenerConfig.delete(event.key);
129
116
  }
117
+
130
118
  /**
131
119
  * 移除所有监听
132
120
  */
133
121
  removeAllListeners() {
134
- var _a, _b, _c, _d;
135
- _Scan.scanInstances.delete(this);
136
- import_watch.default.clearEvent(this.watchKey);
137
- (_b = (_a = this.listenerConfig) == null ? void 0 : _a.forEach) == null ? void 0 : _b.call(_a, (item) => {
138
- var _a2;
139
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clear();
122
+ Scan.scanInstances.delete(this);
123
+ _watch.default.clearEvent(this.watchKey);
124
+ this.listenerConfig?.forEach?.(item => {
125
+ item?.task?.clear();
140
126
  });
141
- (_d = (_c = this.listenerConfig) == null ? void 0 : _c.clear) == null ? void 0 : _d.call(_c);
127
+ this.listenerConfig?.clear?.();
142
128
  }
129
+
143
130
  /**
144
131
  * 启用所有监听
145
132
  */
146
133
  enableAllListeners() {
147
- import_watch.default.enableAllEventByWatchKey(this.watchKey);
134
+ _watch.default.enableAllEventByWatchKey(this.watchKey);
148
135
  }
136
+
149
137
  /**
150
138
  * 禁用所有监听,并清空任务执行队列
151
139
  */
152
140
  disableAllListeners() {
153
- var _a, _b;
154
- import_watch.default.disabledAllEventByWatchKey(this.watchKey);
155
- (_b = (_a = this.listenerConfig) == null ? void 0 : _a.forEach) == null ? void 0 : _b.call(_a, (item) => {
156
- var _a2;
157
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clearTaskQueue();
141
+ _watch.default.disabledAllEventByWatchKey(this.watchKey);
142
+ // 清空任务
143
+ this.listenerConfig?.forEach?.(item => {
144
+ item?.task?.clearTaskQueue();
158
145
  });
159
146
  }
147
+
160
148
  /**
161
149
  * 清空监听对应的任务执行队列,不传入eventKey则清空所有监听对应的任务执行队列
162
150
  * @param eventKey 事件key
163
151
  */
164
152
  clearTaskQueue(eventKey) {
165
- var _a, _b, _c;
166
- console.log("clearTaskQueue>>>>>>>", eventKey);
167
153
  if (eventKey) {
168
- (_a = this.listenerConfig.get(eventKey)) == null ? void 0 : _a.task.clearTaskQueue();
154
+ this.listenerConfig.get(eventKey)?.task.clearTaskQueue();
169
155
  } else {
170
- (_c = (_b = this.listenerConfig) == null ? void 0 : _b.forEach) == null ? void 0 : _c.call(_b, (item) => {
171
- var _a2;
172
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clearTaskQueue();
156
+ this.listenerConfig?.forEach?.(item => {
157
+ item?.task?.clearTaskQueue();
173
158
  });
174
159
  }
175
160
  }
161
+
176
162
  /**
177
163
  * 获取监听配置
178
164
  * @param eventKey 事件key
179
165
  * @returns 监听配置
180
166
  */
181
167
  getListenerConfig(eventKey) {
182
- var _a;
183
- return (_a = this.listenerConfig) == null ? void 0 : _a.get(eventKey);
168
+ return this.listenerConfig?.get(eventKey);
184
169
  }
170
+
185
171
  /**
186
172
  * 扫码任务执行函数
187
173
  * @param args 参数
188
174
  */
189
175
  async scanTaskAction(...args) {
190
176
  const [eventKey, other] = args;
191
- const { type, value, data } = (other == null ? void 0 : other.scanResult) || {};
192
- const taskItemUuid = other == null ? void 0 : other.uuid;
193
- const { scanCallback, task } = this.getListenerConfig(eventKey) || {};
177
+ const {
178
+ type,
179
+ value,
180
+ data
181
+ } = other?.scanResult || {};
182
+ const taskItemUuid = other?.uuid;
183
+ const {
184
+ scanCallback,
185
+ task
186
+ } = this.getListenerConfig(eventKey) || {};
194
187
  if (scanCallback) {
195
188
  try {
196
- const result = await scanCallback({ type, value });
197
- console.log(`${eventKey}_result>>>>>>>`, result);
198
- if (taskItemUuid && (task == null ? void 0 : task.isTaskExist(taskItemUuid))) {
199
- import_watch.default.publishByEventKey(this.watchKey, eventKey, {
189
+ const result = await scanCallback({
190
+ type,
191
+ value
192
+ });
193
+ // 如果任务存在,则发布结果
194
+ if (taskItemUuid && task?.isTaskExist(taskItemUuid)) {
195
+ _watch.default.publishByEventKey(this.watchKey, eventKey, {
200
196
  type: eventKey,
201
- status: "success",
197
+ status: 'success',
202
198
  scanType: type,
203
199
  scanCode: value,
204
200
  scanData: data,
@@ -208,11 +204,11 @@ var _Scan = class {
208
204
  console.warn(`${eventKey}_result_task_not_exist>>>>>>>`, task);
209
205
  }
210
206
  } catch (error) {
211
- console.log(`${eventKey}_result_error>>>>>>>`, error);
212
- if (taskItemUuid && (task == null ? void 0 : task.isTaskExist(taskItemUuid))) {
213
- import_watch.default.publishByEventKey(this.watchKey, eventKey, {
207
+ // 如果任务存在,则发布结果
208
+ if (taskItemUuid && task?.isTaskExist(taskItemUuid)) {
209
+ _watch.default.publishByEventKey(this.watchKey, eventKey, {
214
210
  type: eventKey,
215
- status: "failed",
211
+ status: 'failed',
216
212
  scanType: type,
217
213
  scanCode: value,
218
214
  scanData: data
@@ -223,7 +219,5 @@ var _Scan = class {
223
219
  }
224
220
  }
225
221
  }
226
- };
227
- var Scan = _Scan;
228
- Scan.scanInstances = /* @__PURE__ */ new Set();
229
- Scan.peripheralsListenerMounted = false;
222
+ }
223
+ exports.default = Scan;