@pisell/pisellos 0.10.14 → 0.10.16

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 (301) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  3. package/dist/model/strategy/strategy-example.js +5 -19
  4. package/dist/modules/Cart/index.js +0 -3
  5. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  6. package/dist/modules/Date/index.js +1 -5
  7. package/dist/modules/Discount/index.js +2 -4
  8. package/dist/modules/OpenData/index.js +0 -2
  9. package/dist/modules/Order/index.d.ts +1 -1
  10. package/dist/modules/Order/index.js +75 -91
  11. package/dist/modules/Order/types.d.ts +5 -1
  12. package/dist/modules/Order/utils/virtualSettlement.d.ts +8 -1
  13. package/dist/modules/Order/utils/virtualSettlement.js +15 -2
  14. package/dist/modules/Order/utils.js +7 -1
  15. package/dist/modules/Payment/index.js +97 -162
  16. package/dist/modules/Product/types.d.ts +2 -0
  17. package/dist/modules/Rules/index.js +1 -4
  18. package/dist/modules/Schedule/index.js +0 -1
  19. package/dist/modules/Schedule/utils.js +0 -1
  20. package/dist/modules/Step/index.js +0 -1
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.js +97 -129
  24. package/dist/server/modules/menu/index.js +32 -41
  25. package/dist/server/modules/order/index.js +2 -4
  26. package/dist/server/modules/products/index.js +24 -42
  27. package/dist/server/modules/quotation/index.js +29 -38
  28. package/dist/server/modules/resource/index.js +3 -4
  29. package/dist/server/modules/schedule/index.js +27 -35
  30. package/dist/server/utils/product.js +0 -1
  31. package/dist/solution/BaseSales/index.js +107 -76
  32. package/dist/solution/BaseSales/types.d.ts +2 -0
  33. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  34. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  35. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  36. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  37. package/dist/solution/BaseSales/utils.js +6 -3
  38. package/dist/solution/BookingByStep/index.d.ts +2 -2
  39. package/dist/solution/BookingByStep/index.js +7 -59
  40. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  41. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  42. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  43. package/dist/solution/BookingTicket/index.js +8 -4
  44. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  45. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  46. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  47. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  48. package/dist/solution/BuyTickets/index.js +9 -12
  49. package/dist/solution/Checkout/index.js +177 -252
  50. package/dist/solution/Checkout/utils/index.js +4 -16
  51. package/dist/solution/RegisterAndLogin/index.js +30 -76
  52. package/dist/solution/ScanOrder/index.js +50 -60
  53. package/dist/solution/ScanOrder/types.d.ts +2 -0
  54. package/dist/solution/ScanOrder/utils.js +6 -3
  55. package/dist/solution/ShopDiscount/index.js +2 -7
  56. package/dist/solution/VenueBooking/index.js +45 -55
  57. package/dist/utils/task.js +15 -18
  58. package/dist/utils/watch.js +0 -1
  59. package/lib/apis/picoding.js +2 -0
  60. package/lib/core/index.js +131 -131
  61. package/lib/effects/index.js +46 -57
  62. package/lib/index.js +82 -49
  63. package/lib/model/index.js +14 -21
  64. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  65. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  66. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  67. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  68. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  69. package/lib/model/strategy/adapter/index.js +100 -64
  70. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  71. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  72. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  73. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  74. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  75. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  76. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  77. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  78. package/lib/model/strategy/adapter/promotion/index.js +43 -48
  79. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  80. package/lib/model/strategy/adapter/type.js +4 -16
  81. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  82. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  83. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  84. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  85. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  86. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  87. package/lib/model/strategy/engine.js +270 -168
  88. package/lib/model/strategy/index.js +49 -34
  89. package/lib/model/strategy/strategy-example.js +243 -239
  90. package/lib/model/strategy/type.js +100 -40
  91. package/lib/modules/Account/index.js +39 -53
  92. package/lib/modules/Account/types.js +20 -33
  93. package/lib/modules/AccountList/index.js +116 -154
  94. package/lib/modules/AccountList/types.js +30 -31
  95. package/lib/modules/AccountList/utils.js +18 -30
  96. package/lib/modules/BaseModule.js +23 -42
  97. package/lib/modules/BookingContext/index.js +158 -136
  98. package/lib/modules/BookingContext/types.js +46 -32
  99. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  100. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  101. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  102. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  103. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  104. package/lib/modules/BookingContext/utils/index.js +124 -41
  105. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  106. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  107. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  108. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  109. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  110. package/lib/modules/BookingContext/utils/resources.js +209 -167
  111. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  112. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  113. package/lib/modules/Cart/index.js +170 -124
  114. package/lib/modules/Cart/types.js +46 -51
  115. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  116. package/lib/modules/Cart/utils/cartDate.js +56 -61
  117. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  118. package/lib/modules/Cart/utils/cartNote.js +27 -32
  119. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  120. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  121. package/lib/modules/Cart/utils/cartResource.js +70 -78
  122. package/lib/modules/Cart/utils/changePrice.js +22 -50
  123. package/lib/modules/Cart/utils/index.js +106 -48
  124. package/lib/modules/Customer/constants.js +13 -34
  125. package/lib/modules/Customer/index.js +235 -172
  126. package/lib/modules/Customer/types.js +38 -35
  127. package/lib/modules/Date/index.js +116 -115
  128. package/lib/modules/Date/types.js +16 -28
  129. package/lib/modules/Date/utils.js +174 -123
  130. package/lib/modules/Discount/index.js +133 -143
  131. package/lib/modules/Discount/types.js +9 -31
  132. package/lib/modules/Guests/index.js +30 -56
  133. package/lib/modules/Guests/types.js +23 -33
  134. package/lib/modules/Holder/index.js +209 -189
  135. package/lib/modules/Holder/types.js +4 -16
  136. package/lib/modules/Holder/utils.js +20 -49
  137. package/lib/modules/OpenData/index.js +70 -76
  138. package/lib/modules/OpenData/types.js +4 -16
  139. package/lib/modules/OpenData/utils.js +44 -78
  140. package/lib/modules/Order/index.d.ts +1 -1
  141. package/lib/modules/Order/index.js +1810 -2238
  142. package/lib/modules/Order/payment-utils.js +77 -120
  143. package/lib/modules/Order/types.d.ts +5 -1
  144. package/lib/modules/Order/types.js +87 -35
  145. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  146. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  147. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  148. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  149. package/lib/modules/Order/utils/virtualSettlement.d.ts +8 -1
  150. package/lib/modules/Order/utils/virtualSettlement.js +126 -164
  151. package/lib/modules/Order/utils.js +834 -668
  152. package/lib/modules/Payment/cash.js +20 -33
  153. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  154. package/lib/modules/Payment/eftpos.js +16 -30
  155. package/lib/modules/Payment/index.js +532 -399
  156. package/lib/modules/Payment/mx51.js +1 -0
  157. package/lib/modules/Payment/types.js +230 -108
  158. package/lib/modules/Payment/utils.js +52 -51
  159. package/lib/modules/Payment/walletpass.js +485 -660
  160. package/lib/modules/Product/index.js +51 -46
  161. package/lib/modules/Product/types.d.ts +2 -0
  162. package/lib/modules/Product/types.js +4 -16
  163. package/lib/modules/Product/utils.js +32 -33
  164. package/lib/modules/ProductList/index.js +138 -161
  165. package/lib/modules/ProductList/types.js +9 -31
  166. package/lib/modules/Quotation/index.js +66 -100
  167. package/lib/modules/Quotation/types.js +4 -16
  168. package/lib/modules/Resource/index.js +27 -59
  169. package/lib/modules/Resource/types.js +22 -32
  170. package/lib/modules/Resource/utils.js +30 -38
  171. package/lib/modules/ResourcePlanner/index.js +25 -23
  172. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  173. package/lib/modules/ResourcePlanner/planner.js +591 -772
  174. package/lib/modules/ResourcePlanner/types.js +10 -29
  175. package/lib/modules/Rules/index.js +1218 -959
  176. package/lib/modules/Rules/types.js +17 -40
  177. package/lib/modules/SalesSummary/index.js +78 -89
  178. package/lib/modules/SalesSummary/types.js +4 -16
  179. package/lib/modules/SalesSummary/utils.js +359 -442
  180. package/lib/modules/ScanOrderLogger/index.js +59 -79
  181. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  182. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  183. package/lib/modules/ScanOrderLogger/types.js +4 -16
  184. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  185. package/lib/modules/Schedule/index.js +100 -114
  186. package/lib/modules/Schedule/type.js +4 -16
  187. package/lib/modules/Schedule/types.js +4 -16
  188. package/lib/modules/Schedule/utils.js +433 -291
  189. package/lib/modules/Step/index.js +40 -52
  190. package/lib/modules/Step/tyeps.js +4 -16
  191. package/lib/modules/Summary/index.js +66 -71
  192. package/lib/modules/Summary/types.js +4 -16
  193. package/lib/modules/Summary/utils.js +773 -418
  194. package/lib/modules/SurchargeList/index.js +46 -60
  195. package/lib/modules/SurchargeList/types.js +4 -16
  196. package/lib/modules/index.js +245 -63
  197. package/lib/plugins/app.js +4 -16
  198. package/lib/plugins/index.js +36 -25
  199. package/lib/plugins/request.js +137 -126
  200. package/lib/plugins/shopStore.js +4 -16
  201. package/lib/plugins/user.js +4 -16
  202. package/lib/plugins/window.js +171 -179
  203. package/lib/server/index.js +3027 -2655
  204. package/lib/server/modules/floor-plan/index.js +102 -123
  205. package/lib/server/modules/floor-plan/types.js +15 -30
  206. package/lib/server/modules/index.js +106 -68
  207. package/lib/server/modules/menu/index.js +146 -122
  208. package/lib/server/modules/menu/types.js +18 -31
  209. package/lib/server/modules/order/index.js +758 -956
  210. package/lib/server/modules/order/types.js +122 -33
  211. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  212. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  213. package/lib/server/modules/payment/index.js +59 -83
  214. package/lib/server/modules/payment/types.js +4 -16
  215. package/lib/server/modules/products/index.js +575 -459
  216. package/lib/server/modules/products/types.js +44 -34
  217. package/lib/server/modules/quotation/index.js +137 -172
  218. package/lib/server/modules/quotation/types.js +21 -31
  219. package/lib/server/modules/resource/index.js +213 -184
  220. package/lib/server/modules/resource/types.js +42 -33
  221. package/lib/server/modules/schedule/index.js +135 -123
  222. package/lib/server/modules/schedule/types.js +14 -21
  223. package/lib/server/modules/schedule/utils.js +334 -163
  224. package/lib/server/types.js +4 -16
  225. package/lib/server/utils/index.js +25 -23
  226. package/lib/server/utils/product.js +196 -139
  227. package/lib/server/utils/schedule.js +34 -41
  228. package/lib/server/utils/small-ticket.js +479 -456
  229. package/lib/server/utils/time.js +40 -49
  230. package/lib/solution/BaseSales/index.js +1276 -1485
  231. package/lib/solution/BaseSales/types.d.ts +2 -0
  232. package/lib/solution/BaseSales/types.js +42 -38
  233. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  234. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  235. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  236. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  237. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  238. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  239. package/lib/solution/BaseSales/utils.js +161 -143
  240. package/lib/solution/BookingByStep/index.d.ts +2 -2
  241. package/lib/solution/BookingByStep/index.js +1527 -1340
  242. package/lib/solution/BookingByStep/types.js +40 -99
  243. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  244. package/lib/solution/BookingByStep/utils/products.js +42 -52
  245. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  246. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  247. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  248. package/lib/solution/BookingTicket/index.js +598 -514
  249. package/lib/solution/BookingTicket/types.js +99 -77
  250. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  251. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  252. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  253. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  254. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  255. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  256. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  257. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  258. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  259. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  260. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  261. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  262. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  263. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  264. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  265. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  266. package/lib/solution/BuyTickets/index.js +67 -70
  267. package/lib/solution/BuyTickets/types.js +22 -38
  268. package/lib/solution/Checkout/index.js +1451 -1158
  269. package/lib/solution/Checkout/types.js +91 -61
  270. package/lib/solution/Checkout/utils/index.js +228 -156
  271. package/lib/solution/PlaceOrder/index.js +55 -0
  272. package/lib/solution/RegisterAndLogin/config.js +493 -460
  273. package/lib/solution/RegisterAndLogin/index.js +633 -630
  274. package/lib/solution/RegisterAndLogin/types.js +189 -76
  275. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  276. package/lib/solution/Sales/index.js +328 -324
  277. package/lib/solution/Sales/types.js +27 -33
  278. package/lib/solution/ScanOrder/index.js +822 -852
  279. package/lib/solution/ScanOrder/types.d.ts +2 -0
  280. package/lib/solution/ScanOrder/types.js +33 -34
  281. package/lib/solution/ScanOrder/utils.js +412 -374
  282. package/lib/solution/ShopDiscount/index.js +226 -232
  283. package/lib/solution/ShopDiscount/types.js +15 -37
  284. package/lib/solution/ShopDiscount/utils.js +300 -172
  285. package/lib/solution/UnifiedBookingSales/index.js +1052 -1213
  286. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  287. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  288. package/lib/solution/VenueBooking/index.js +811 -879
  289. package/lib/solution/VenueBooking/types.js +19 -39
  290. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  291. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  292. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  293. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  294. package/lib/solution/VenueBooking/utils.js +130 -67
  295. package/lib/solution/index.js +124 -41
  296. package/lib/store/createStore.js +32 -29
  297. package/lib/types/index.js +4 -16
  298. package/lib/utils/payment-number.js +26 -46
  299. package/lib/utils/task.js +36 -36
  300. package/lib/utils/watch.js +81 -47
  301. 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;