@pisell/pisellos 2.2.282 → 2.2.284

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