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