@pisell/pisellos 0.0.566 → 0.0.568

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 (230) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/adapter/walletPass/utils.js +0 -3
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +1 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +14 -41
  13. package/dist/modules/Payment/index.js +142 -270
  14. package/dist/modules/Payment/walletpass.js +4 -5
  15. package/dist/modules/Rules/index.js +0 -7
  16. package/dist/modules/SalesSummary/utils.js +4 -2
  17. package/dist/modules/Schedule/utils.js +0 -1
  18. package/dist/modules/Step/index.js +0 -1
  19. package/dist/modules/Summary/utils.js +2 -2
  20. package/dist/plugins/request.js +1 -4
  21. package/dist/plugins/window.js +2 -6
  22. package/dist/server/index.js +88 -121
  23. package/dist/server/modules/menu/index.js +32 -41
  24. package/dist/server/modules/products/index.js +29 -49
  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 +32 -40
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BookingByStep/index.d.ts +1 -1
  30. package/dist/solution/BookingByStep/index.js +7 -59
  31. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  32. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  33. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  34. package/dist/solution/BookingTicket/index.d.ts +1 -1
  35. package/dist/solution/BookingTicket/index.js +5 -7
  36. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  37. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  38. package/dist/solution/BuyTickets/index.js +9 -12
  39. package/dist/solution/Checkout/index.js +177 -246
  40. package/dist/solution/Checkout/utils/index.js +4 -16
  41. package/dist/solution/RegisterAndLogin/index.js +30 -76
  42. package/dist/solution/ScanOrder/index.js +50 -60
  43. package/dist/solution/ShopDiscount/index.js +2 -7
  44. package/dist/solution/VenueBooking/index.d.ts +5 -0
  45. package/dist/solution/VenueBooking/index.js +364 -327
  46. package/dist/utils/task.js +15 -18
  47. package/dist/utils/watch.js +0 -1
  48. package/lib/apis/picoding.js +2 -0
  49. package/lib/core/index.js +130 -131
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +92 -53
  52. package/lib/model/index.js +14 -21
  53. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  54. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  55. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  56. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  57. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  58. package/lib/model/strategy/adapter/index.js +100 -64
  59. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  60. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  61. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  62. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  63. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  64. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
  66. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  71. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  72. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  73. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  74. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  75. package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
  76. package/lib/model/strategy/engine.js +270 -168
  77. package/lib/model/strategy/index.js +49 -34
  78. package/lib/model/strategy/strategy-example.js +243 -239
  79. package/lib/model/strategy/type.js +100 -40
  80. package/lib/modules/Account/index.js +39 -53
  81. package/lib/modules/Account/types.js +20 -33
  82. package/lib/modules/AccountList/index.js +116 -154
  83. package/lib/modules/AccountList/types.js +30 -31
  84. package/lib/modules/AccountList/utils.js +18 -30
  85. package/lib/modules/BaseModule.js +22 -45
  86. package/lib/modules/Cart/index.js +170 -124
  87. package/lib/modules/Cart/types.js +46 -51
  88. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  89. package/lib/modules/Cart/utils/cartDate.js +56 -61
  90. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  91. package/lib/modules/Cart/utils/cartNote.js +27 -32
  92. package/lib/modules/Cart/utils/cartProduct.js +306 -241
  93. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  94. package/lib/modules/Cart/utils/cartResource.js +72 -78
  95. package/lib/modules/Cart/utils/changePrice.js +26 -62
  96. package/lib/modules/Cart/utils/index.js +106 -48
  97. package/lib/modules/Customer/constants.js +13 -34
  98. package/lib/modules/Customer/index.js +216 -153
  99. package/lib/modules/Customer/types.js +38 -35
  100. package/lib/modules/Date/index.js +116 -115
  101. package/lib/modules/Date/types.js +16 -28
  102. package/lib/modules/Date/utils.js +174 -123
  103. package/lib/modules/Discount/index.js +117 -113
  104. package/lib/modules/Discount/types.js +9 -31
  105. package/lib/modules/Guests/index.js +30 -56
  106. package/lib/modules/Guests/types.js +23 -33
  107. package/lib/modules/Holder/index.js +209 -189
  108. package/lib/modules/Holder/types.js +4 -16
  109. package/lib/modules/Holder/utils.js +20 -49
  110. package/lib/modules/OpenData/index.js +63 -74
  111. package/lib/modules/OpenData/types.js +4 -16
  112. package/lib/modules/OpenData/utils.js +44 -78
  113. package/lib/modules/Order/index.d.ts +1 -1
  114. package/lib/modules/Order/index.js +332 -320
  115. package/lib/modules/Order/types.js +24 -33
  116. package/lib/modules/Order/utils.js +350 -284
  117. package/lib/modules/Payment/cash.js +20 -33
  118. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  119. package/lib/modules/Payment/eftpos.js +16 -30
  120. package/lib/modules/Payment/index.js +566 -432
  121. package/lib/modules/Payment/mx51.js +1 -0
  122. package/lib/modules/Payment/types.js +216 -107
  123. package/lib/modules/Payment/utils.js +50 -47
  124. package/lib/modules/Payment/walletpass.js +221 -203
  125. package/lib/modules/Product/index.js +51 -46
  126. package/lib/modules/Product/types.js +4 -16
  127. package/lib/modules/Product/utils.js +32 -33
  128. package/lib/modules/ProductList/index.js +111 -110
  129. package/lib/modules/ProductList/types.js +9 -31
  130. package/lib/modules/Quotation/index.js +60 -82
  131. package/lib/modules/Quotation/types.js +4 -16
  132. package/lib/modules/Resource/index.js +27 -59
  133. package/lib/modules/Resource/types.js +22 -32
  134. package/lib/modules/Resource/utils.js +30 -38
  135. package/lib/modules/Rules/index.js +1172 -872
  136. package/lib/modules/Rules/types.js +17 -40
  137. package/lib/modules/SalesSummary/index.js +59 -68
  138. package/lib/modules/SalesSummary/types.js +4 -16
  139. package/lib/modules/SalesSummary/utils.js +178 -193
  140. package/lib/modules/ScanOrderLogger/index.js +59 -79
  141. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  142. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  143. package/lib/modules/ScanOrderLogger/types.js +4 -16
  144. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
  145. package/lib/modules/Schedule/index.js +97 -107
  146. package/lib/modules/Schedule/type.js +4 -16
  147. package/lib/modules/Schedule/types.js +4 -16
  148. package/lib/modules/Schedule/utils.js +433 -291
  149. package/lib/modules/Step/index.js +40 -52
  150. package/lib/modules/Step/tyeps.js +4 -16
  151. package/lib/modules/Summary/index.js +66 -70
  152. package/lib/modules/Summary/types.js +4 -16
  153. package/lib/modules/Summary/utils.js +782 -429
  154. package/lib/modules/index.js +212 -57
  155. package/lib/plugins/app.js +4 -16
  156. package/lib/plugins/index.js +36 -25
  157. package/lib/plugins/request.js +137 -126
  158. package/lib/plugins/shopStore.js +4 -16
  159. package/lib/plugins/user.js +4 -16
  160. package/lib/plugins/window.js +171 -179
  161. package/lib/server/index.js +882 -623
  162. package/lib/server/modules/index.js +85 -59
  163. package/lib/server/modules/menu/index.js +146 -122
  164. package/lib/server/modules/menu/types.js +18 -31
  165. package/lib/server/modules/order/index.js +195 -231
  166. package/lib/server/modules/order/types.js +107 -32
  167. package/lib/server/modules/order/utils/filterBookings.js +174 -140
  168. package/lib/server/modules/order/utils/filterOrders.js +89 -60
  169. package/lib/server/modules/products/index.js +430 -335
  170. package/lib/server/modules/products/types.js +41 -34
  171. package/lib/server/modules/quotation/index.js +76 -77
  172. package/lib/server/modules/quotation/types.js +21 -31
  173. package/lib/server/modules/resource/index.js +216 -187
  174. package/lib/server/modules/resource/types.js +42 -33
  175. package/lib/server/modules/schedule/index.js +134 -119
  176. package/lib/server/modules/schedule/types.js +14 -21
  177. package/lib/server/modules/schedule/utils.js +334 -163
  178. package/lib/server/types.js +4 -16
  179. package/lib/server/utils/index.js +25 -23
  180. package/lib/server/utils/product.js +196 -139
  181. package/lib/server/utils/schedule.js +34 -41
  182. package/lib/server/utils/time.js +40 -49
  183. package/lib/solution/BookingByStep/index.d.ts +1 -1
  184. package/lib/solution/BookingByStep/index.js +1530 -1343
  185. package/lib/solution/BookingByStep/types.js +40 -99
  186. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  187. package/lib/solution/BookingByStep/utils/products.js +42 -52
  188. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  189. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  190. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  191. package/lib/solution/BookingTicket/index.d.ts +1 -1
  192. package/lib/solution/BookingTicket/index.js +147 -122
  193. package/lib/solution/BookingTicket/types.js +38 -64
  194. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
  195. package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
  196. package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
  197. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  198. package/lib/solution/BuyTickets/index.js +67 -70
  199. package/lib/solution/BuyTickets/types.js +22 -38
  200. package/lib/solution/Checkout/index.js +1451 -1158
  201. package/lib/solution/Checkout/types.js +91 -61
  202. package/lib/solution/Checkout/utils/index.js +227 -158
  203. package/lib/solution/PlaceOrder/index.js +55 -0
  204. package/lib/solution/RegisterAndLogin/config.js +493 -460
  205. package/lib/solution/RegisterAndLogin/index.js +633 -630
  206. package/lib/solution/RegisterAndLogin/types.js +189 -76
  207. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  208. package/lib/solution/Sales/index.js +218 -200
  209. package/lib/solution/Sales/types.js +27 -33
  210. package/lib/solution/ScanOrder/index.js +803 -840
  211. package/lib/solution/ScanOrder/types.js +34 -34
  212. package/lib/solution/ScanOrder/utils.js +372 -331
  213. package/lib/solution/ShopDiscount/index.js +230 -236
  214. package/lib/solution/ShopDiscount/types.js +15 -37
  215. package/lib/solution/ShopDiscount/utils.js +309 -172
  216. package/lib/solution/VenueBooking/index.d.ts +5 -0
  217. package/lib/solution/VenueBooking/index.js +886 -929
  218. package/lib/solution/VenueBooking/types.js +20 -40
  219. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  220. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  221. package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
  222. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  223. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  224. package/lib/solution/VenueBooking/utils.js +130 -67
  225. package/lib/solution/index.js +102 -37
  226. package/lib/store/createStore.js +32 -29
  227. package/lib/types/index.js +4 -16
  228. package/lib/utils/task.js +36 -36
  229. package/lib/utils/watch.js +81 -47
  230. package/package.json +2 -1
@@ -1,72 +1,51 @@
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
+ solution;
18
+ watchKey;
19
+ listenerConfig = new Map();
38
20
  constructor(solution, watchKey) {
39
- this.listenerConfig = /* @__PURE__ */ new Map();
40
21
  this.solution = solution;
41
22
  this.watchKey = watchKey;
23
+
24
+ // 初始化扫码监听
25
+ // this.initPeripheralsListener();
42
26
  }
27
+
43
28
  /**
44
29
  * 初始化外设扫码结果监听
45
30
  */
46
31
  initPeripheralsListener() {
47
- var _a, _b, _c, _d, _e;
48
- (_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(
49
- _d,
50
- "global",
51
- "peripheralsResult",
52
- (strVal) => {
53
- try {
54
- const result = JSON.parse(strVal);
55
- console.log("nativeScannerResult>>>>>>>", result);
56
- this.handleScan(result);
57
- } catch (err) {
58
- console.error(err);
59
- }
32
+ this.solution?.window?.interaction?.utils?.mountFunction?.('global', 'peripheralsResult', strVal => {
33
+ try {
34
+ const result = JSON.parse(strVal);
35
+ this.handleScan(result);
36
+ } catch (err) {
37
+ console.error(err);
60
38
  }
61
- );
39
+ });
62
40
  }
41
+
63
42
  /**
64
43
  * 处理扫码事件
65
44
  * @param eventKey 事件key
66
45
  * @param value 扫码结果
67
46
  */
68
47
  handleScan(result) {
69
- const lastEnableEventKey = import_watch.default.getLastEnableEventKey(this.watchKey);
48
+ const lastEnableEventKey = _watch.default.getLastEnableEventKey(this.watchKey);
70
49
  if (lastEnableEventKey) {
71
50
  const listenerConfig = this.listenerConfig.get(lastEnableEventKey);
72
51
  if (listenerConfig) {
@@ -80,114 +59,130 @@ var Scan = class {
80
59
  }
81
60
  }
82
61
  }
62
+
83
63
  /**
84
64
  * 生成uuid
85
65
  * @returns uuid
86
66
  */
87
67
  generateUuid() {
68
+ // 需要加入时间戳,避免重复
88
69
  return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15) + Date.now().toString(36);
89
70
  }
71
+
90
72
  /**
91
73
  * 添加扫码信息监听
92
74
  * @param watchKey 监听的key
93
75
  * @param event 事件
94
76
  */
95
77
  addListener(event, scanCallback) {
96
- import_watch.default.subscribe(this.watchKey, event);
97
- const task = new import_task.default();
98
- task.addAction(
99
- event.key,
100
- (...args) => this.scanTaskAction(event.key, ...args)
101
- );
102
- this.listenerConfig.set(event.key, { scanCallback, task });
78
+ // 订阅事件
79
+ _watch.default.subscribe(this.watchKey, event);
80
+ // 创建任务
81
+ const task = new _task.default();
82
+ task.addAction(event.key, (...args) => this.scanTaskAction(event.key, ...args));
83
+
84
+ // 创建监听配置
85
+ this.listenerConfig.set(event.key, {
86
+ scanCallback,
87
+ task
88
+ });
103
89
  return {
104
90
  remove: () => {
105
91
  this.removeListener(event);
106
92
  }
107
93
  };
108
94
  }
95
+
109
96
  /**
110
97
  * 移除扫码信息监听
111
98
  * @param watchKey 监听的key
112
99
  * @param event 事件
113
100
  */
114
101
  removeListener(event) {
115
- var _a, _b;
116
- import_watch.default.unsubscribe(this.watchKey, event);
117
- (_b = (_a = this.listenerConfig.get(event.key)) == null ? void 0 : _a.task) == null ? void 0 : _b.clear();
102
+ _watch.default.unsubscribe(this.watchKey, event);
103
+ this.listenerConfig.get(event.key)?.task?.clear();
118
104
  this.listenerConfig.delete(event.key);
119
105
  }
106
+
120
107
  /**
121
108
  * 移除所有监听
122
109
  */
123
110
  removeAllListeners() {
124
- var _a, _b, _c, _d;
125
- import_watch.default.clearEvent(this.watchKey);
126
- (_b = (_a = this.listenerConfig) == null ? void 0 : _a.forEach) == null ? void 0 : _b.call(_a, (item) => {
127
- var _a2;
128
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clear();
111
+ _watch.default.clearEvent(this.watchKey);
112
+ this.listenerConfig?.forEach?.(item => {
113
+ item?.task?.clear();
129
114
  });
130
- (_d = (_c = this.listenerConfig) == null ? void 0 : _c.clear) == null ? void 0 : _d.call(_c);
115
+ this.listenerConfig?.clear?.();
131
116
  }
117
+
132
118
  /**
133
119
  * 启用所有监听
134
120
  */
135
121
  enableAllListeners() {
136
- import_watch.default.enableAllEventByWatchKey(this.watchKey);
122
+ _watch.default.enableAllEventByWatchKey(this.watchKey);
137
123
  }
124
+
138
125
  /**
139
126
  * 禁用所有监听,并清空任务执行队列
140
127
  */
141
128
  disableAllListeners() {
142
- var _a, _b;
143
- import_watch.default.disabledAllEventByWatchKey(this.watchKey);
144
- (_b = (_a = this.listenerConfig) == null ? void 0 : _a.forEach) == null ? void 0 : _b.call(_a, (item) => {
145
- var _a2;
146
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clearTaskQueue();
129
+ _watch.default.disabledAllEventByWatchKey(this.watchKey);
130
+ // 清空任务
131
+ this.listenerConfig?.forEach?.(item => {
132
+ item?.task?.clearTaskQueue();
147
133
  });
148
134
  }
135
+
149
136
  /**
150
137
  * 清空监听对应的任务执行队列,不传入eventKey则清空所有监听对应的任务执行队列
151
138
  * @param eventKey 事件key
152
139
  */
153
140
  clearTaskQueue(eventKey) {
154
- var _a, _b, _c;
155
- console.log("clearTaskQueue>>>>>>>", eventKey);
156
141
  if (eventKey) {
157
- (_a = this.listenerConfig.get(eventKey)) == null ? void 0 : _a.task.clearTaskQueue();
142
+ this.listenerConfig.get(eventKey)?.task.clearTaskQueue();
158
143
  } else {
159
- (_c = (_b = this.listenerConfig) == null ? void 0 : _b.forEach) == null ? void 0 : _c.call(_b, (item) => {
160
- var _a2;
161
- (_a2 = item == null ? void 0 : item.task) == null ? void 0 : _a2.clearTaskQueue();
144
+ this.listenerConfig?.forEach?.(item => {
145
+ item?.task?.clearTaskQueue();
162
146
  });
163
147
  }
164
148
  }
149
+
165
150
  /**
166
151
  * 获取监听配置
167
152
  * @param eventKey 事件key
168
153
  * @returns 监听配置
169
154
  */
170
155
  getListenerConfig(eventKey) {
171
- var _a;
172
- return (_a = this.listenerConfig) == null ? void 0 : _a.get(eventKey);
156
+ return this.listenerConfig?.get(eventKey);
173
157
  }
158
+
174
159
  /**
175
160
  * 扫码任务执行函数
176
161
  * @param args 参数
177
162
  */
178
163
  async scanTaskAction(...args) {
179
164
  const [eventKey, other] = args;
180
- const { type, value, data } = (other == null ? void 0 : other.scanResult) || {};
181
- const taskItemUuid = other == null ? void 0 : other.uuid;
182
- const { scanCallback, task } = this.getListenerConfig(eventKey) || {};
165
+ const {
166
+ type,
167
+ value,
168
+ data
169
+ } = other?.scanResult || {};
170
+ const taskItemUuid = other?.uuid;
171
+ const {
172
+ scanCallback,
173
+ task
174
+ } = this.getListenerConfig(eventKey) || {};
183
175
  if (scanCallback) {
184
176
  try {
185
- const result = await scanCallback({ type, value });
186
- console.log(`${eventKey}_result>>>>>>>`, result);
187
- if (taskItemUuid && (task == null ? void 0 : task.isTaskExist(taskItemUuid))) {
188
- import_watch.default.publishByEventKey(this.watchKey, eventKey, {
177
+ const result = await scanCallback({
178
+ type,
179
+ value
180
+ });
181
+ // 如果任务存在,则发布结果
182
+ if (taskItemUuid && task?.isTaskExist(taskItemUuid)) {
183
+ _watch.default.publishByEventKey(this.watchKey, eventKey, {
189
184
  type: eventKey,
190
- status: "success",
185
+ status: 'success',
191
186
  scanType: type,
192
187
  scanCode: value,
193
188
  scanData: data,
@@ -197,11 +192,11 @@ var Scan = class {
197
192
  console.warn(`${eventKey}_result_task_not_exist>>>>>>>`, task);
198
193
  }
199
194
  } catch (error) {
200
- console.log(`${eventKey}_result_error>>>>>>>`, error);
201
- if (taskItemUuid && (task == null ? void 0 : task.isTaskExist(taskItemUuid))) {
202
- import_watch.default.publishByEventKey(this.watchKey, eventKey, {
195
+ // 如果任务存在,则发布结果
196
+ if (taskItemUuid && task?.isTaskExist(taskItemUuid)) {
197
+ _watch.default.publishByEventKey(this.watchKey, eventKey, {
203
198
  type: eventKey,
204
- status: "failed",
199
+ status: 'failed',
205
200
  scanType: type,
206
201
  scanCode: value,
207
202
  scanData: data
@@ -212,4 +207,5 @@ var Scan = class {
212
207
  }
213
208
  }
214
209
  }
215
- };
210
+ }
211
+ exports.default = Scan;
@@ -1,84 +1,98 @@
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/scanCache.ts
20
- var scanCache_exports = {};
21
- __export(scanCache_exports, {
22
- default: () => scanCache_default
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(scanCache_exports);
25
- var compressData = (data) => {
6
+ exports.default = void 0;
7
+ /**
8
+ * 简单的数据压缩函数
9
+ * @param data 要压缩的数据
10
+ * @returns 压缩后的字符串
11
+ */
12
+ const compressData = data => {
26
13
  try {
27
- if (data === void 0) {
28
- return "undefined";
14
+ // 处理undefined值
15
+ if (data === undefined) {
16
+ return 'undefined';
29
17
  }
30
18
  return JSON.stringify(data);
31
19
  } catch (error) {
32
- console.warn("数据压缩失败:", error);
20
+ console.warn('数据压缩失败:', error);
33
21
  return JSON.stringify(data);
34
22
  }
35
23
  };
36
- var decompressData = (compressedData) => {
24
+
25
+ /**
26
+ * 数据解压缩函数
27
+ * @param compressedData 压缩后的数据
28
+ * @returns 解压缩后的数据
29
+ */
30
+ const decompressData = compressedData => {
37
31
  try {
38
- if (compressedData === "undefined") {
39
- return void 0;
32
+ // 处理undefined值
33
+ if (compressedData === 'undefined') {
34
+ return undefined;
40
35
  }
41
36
  return JSON.parse(compressedData);
42
37
  } catch (error) {
43
- console.warn("数据解压缩失败:", error);
38
+ console.warn('数据解压缩失败:', error);
44
39
  return null;
45
40
  }
46
41
  };
47
- var LRUCache = class {
42
+
43
+ /**
44
+ * 双向链表节点
45
+ */
46
+
47
+ /**
48
+ * LRU缓存类,用于缓存接口数据
49
+ * 限制最多存储100条数据,超过时移除最久未使用的数据
50
+ * 支持数据压缩以减小缓存压力
51
+ * 尾部优先策略:新节点插入尾部,最近使用的节点移动到尾部,删除头部节点
52
+ */
53
+ class LRUCache {
54
+ head = null; // 最久未使用的节点
55
+ tail = null; // 最近使用的节点
56
+ keyMap = new Map(); // key到节点的映射(只存储引用)
57
+ maxSize;
48
58
  constructor(maxSize = 100) {
49
- this.head = null;
50
- // 最久未使用的节点
51
- this.tail = null;
52
- // 最近使用的节点
53
- this.keyMap = /* @__PURE__ */ new Map();
54
59
  this.maxSize = maxSize;
55
60
  }
61
+
56
62
  /**
57
63
  * 将节点移动到链表尾部(最近使用)
58
64
  * @param node 要移动的节点
59
65
  */
60
66
  moveToTail(node) {
61
- if (this.tail === node)
62
- return;
67
+ if (this.tail === node) return; // 已经是尾部
68
+
69
+ // 从当前位置移除
63
70
  if (node.prev) {
64
71
  node.prev.next = node.next;
65
72
  }
66
73
  if (node.next) {
67
74
  node.next.prev = node.prev;
68
75
  }
76
+
77
+ // 如果是头部,更新头部
69
78
  if (this.head === node) {
70
79
  this.head = node.next;
71
80
  }
81
+
82
+ // 移动到尾部
72
83
  if (this.tail) {
73
84
  this.tail.next = node;
74
85
  }
75
86
  node.prev = this.tail;
76
87
  node.next = null;
77
88
  this.tail = node;
89
+
90
+ // 如果链表为空,设置头部
78
91
  if (!this.head) {
79
92
  this.head = node;
80
93
  }
81
94
  }
95
+
82
96
  /**
83
97
  * 添加新节点到链表尾部
84
98
  * @param key 缓存键
@@ -86,6 +100,7 @@ var LRUCache = class {
86
100
  * @param timestamp 时间戳
87
101
  */
88
102
  addToTail(key, compressedData, timestamp) {
103
+ // 先保存当前的tail引用
89
104
  const oldTail = this.tail;
90
105
  const node = {
91
106
  key,
@@ -95,16 +110,23 @@ var LRUCache = class {
95
110
  // 使用保存的引用,避免循环引用
96
111
  next: null
97
112
  };
113
+
114
+ // 存储节点引用
98
115
  this.keyMap.set(key, node);
116
+
117
+ // 更新链表关系
99
118
  if (oldTail) {
100
119
  oldTail.next = node;
101
120
  }
102
121
  this.tail = node;
122
+
123
+ // 如果是第一个节点,设置head
103
124
  if (!this.head) {
104
125
  this.head = node;
105
126
  }
106
127
  return node;
107
128
  }
129
+
108
130
  /**
109
131
  * 从链表中移除节点
110
132
  * @param node 要移除的节点
@@ -122,8 +144,11 @@ var LRUCache = class {
122
144
  if (this.tail === node) {
123
145
  this.tail = node.prev;
124
146
  }
147
+
148
+ // 从Map中移除引用
125
149
  this.keyMap.delete(node.key);
126
150
  }
151
+
127
152
  /**
128
153
  * 移除最久未使用的节点(链表头部)
129
154
  */
@@ -132,26 +157,35 @@ var LRUCache = class {
132
157
  this.removeNode(this.head);
133
158
  }
134
159
  }
160
+
135
161
  /**
136
162
  * 设置缓存
137
163
  * @param key 缓存键
138
164
  * @param data 缓存数据
139
165
  */
140
166
  set(key, data) {
167
+ // 压缩数据
141
168
  const compressedData = compressData(data);
142
169
  const timestamp = Date.now();
170
+
171
+ // 检查是否已存在该key
143
172
  const existingNode = this.keyMap.get(key);
144
173
  if (existingNode) {
174
+ // 如果已存在,更新数据并移动到链表尾部
145
175
  existingNode.compressedData = compressedData;
146
176
  existingNode.timestamp = timestamp;
147
177
  this.moveToTail(existingNode);
148
178
  } else {
179
+ // 如果是新数据且缓存已满,移除最久未使用的数据(头部)
149
180
  if (this.keyMap.size >= this.maxSize) {
150
181
  this.removeOldest();
151
182
  }
183
+
184
+ // 添加新数据到尾部
152
185
  this.addToTail(key, compressedData, timestamp);
153
186
  }
154
187
  }
188
+
155
189
  /**
156
190
  * 获取缓存
157
191
  * @param key 缓存键
@@ -160,18 +194,22 @@ var LRUCache = class {
160
194
  get(key) {
161
195
  const node = this.keyMap.get(key);
162
196
  if (node) {
197
+ // 解压缩数据
163
198
  const decompressedData = decompressData(node.compressedData);
164
199
  if (decompressedData !== null) {
200
+ // 更新访问时间戳并移动到链表尾部
165
201
  node.timestamp = Date.now();
166
202
  this.moveToTail(node);
167
203
  return decompressedData;
168
204
  } else {
205
+ // 如果解压缩失败,删除该缓存项
169
206
  this.removeNode(node);
170
- return void 0;
207
+ return undefined;
171
208
  }
172
209
  }
173
- return void 0;
210
+ return undefined;
174
211
  }
212
+
175
213
  /**
176
214
  * 检查是否存在缓存
177
215
  * @param key 缓存键
@@ -180,10 +218,12 @@ var LRUCache = class {
180
218
  has(key) {
181
219
  return this.keyMap.has(key);
182
220
  }
221
+
183
222
  /**
184
223
  * 清除所有缓存
185
224
  */
186
225
  clear() {
226
+ // 清除所有节点的引用关系,帮助垃圾回收
187
227
  let current = this.head;
188
228
  while (current) {
189
229
  const next = current.next;
@@ -191,10 +231,13 @@ var LRUCache = class {
191
231
  current.next = null;
192
232
  current = next;
193
233
  }
234
+
235
+ // 清除Map和头尾指针
194
236
  this.keyMap.clear();
195
237
  this.head = null;
196
238
  this.tail = null;
197
239
  }
240
+
198
241
  /**
199
242
  * 获取缓存大小
200
243
  * @returns 当前缓存数量
@@ -202,6 +245,7 @@ var LRUCache = class {
202
245
  size() {
203
246
  return this.keyMap.size;
204
247
  }
248
+
205
249
  /**
206
250
  * 获取缓存统计信息
207
251
  * @returns 缓存统计信息
@@ -213,6 +257,7 @@ var LRUCache = class {
213
257
  usage: Math.round(this.keyMap.size / this.maxSize * 100)
214
258
  };
215
259
  }
260
+
216
261
  /**
217
262
  * 删除指定的缓存项
218
263
  * @param key 要删除的缓存键
@@ -226,6 +271,8 @@ var LRUCache = class {
226
271
  }
227
272
  return false;
228
273
  }
229
- };
230
- var scanCache = new LRUCache();
231
- var scanCache_default = scanCache;
274
+ }
275
+
276
+ // 创建全局缓存实例
277
+ const scanCache = new LRUCache();
278
+ var _default = exports.default = scanCache;