@pisell/pisellos 2.3.74 → 2.3.76

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 (283) 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.d.ts +1 -1
  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/plugins/request.js +1 -4
  19. package/dist/plugins/window.js +2 -6
  20. package/dist/server/index.js +97 -129
  21. package/dist/server/modules/menu/index.js +32 -41
  22. package/dist/server/modules/order/index.js +2 -4
  23. package/dist/server/modules/products/index.js +24 -42
  24. package/dist/server/modules/quotation/index.js +29 -38
  25. package/dist/server/modules/resource/index.js +3 -4
  26. package/dist/server/modules/schedule/index.js +27 -35
  27. package/dist/server/utils/product.js +0 -1
  28. package/dist/solution/BaseSales/index.js +100 -72
  29. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  30. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  31. package/dist/solution/BookingByStep/index.js +7 -59
  32. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  33. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  34. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  35. package/dist/solution/BookingTicket/index.js +0 -2
  36. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  37. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  38. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  39. package/dist/solution/BuyTickets/index.js +9 -12
  40. package/dist/solution/Checkout/index.js +177 -252
  41. package/dist/solution/Checkout/utils/index.js +4 -16
  42. package/dist/solution/RegisterAndLogin/index.js +30 -76
  43. package/dist/solution/ScanOrder/index.js +50 -60
  44. package/dist/solution/ShopDiscount/index.js +2 -7
  45. package/dist/solution/VenueBooking/index.js +45 -55
  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 +134 -134
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +82 -49
  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 +91 -69
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  66. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  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 +588 -378
  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 +23 -42
  86. package/lib/modules/BookingContext/index.js +158 -136
  87. package/lib/modules/BookingContext/types.js +46 -32
  88. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  89. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  90. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  91. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  92. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  93. package/lib/modules/BookingContext/utils/index.js +124 -41
  94. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  95. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  96. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  97. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  98. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  99. package/lib/modules/BookingContext/utils/resources.js +209 -167
  100. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  101. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  102. package/lib/modules/Cart/index.js +170 -124
  103. package/lib/modules/Cart/types.js +46 -51
  104. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  105. package/lib/modules/Cart/utils/cartDate.js +56 -61
  106. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  107. package/lib/modules/Cart/utils/cartNote.js +27 -32
  108. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  109. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  110. package/lib/modules/Cart/utils/cartResource.js +70 -78
  111. package/lib/modules/Cart/utils/changePrice.js +22 -50
  112. package/lib/modules/Cart/utils/index.js +106 -48
  113. package/lib/modules/Customer/constants.js +13 -34
  114. package/lib/modules/Customer/index.js +235 -172
  115. package/lib/modules/Customer/types.js +38 -35
  116. package/lib/modules/Date/index.js +116 -115
  117. package/lib/modules/Date/types.js +16 -28
  118. package/lib/modules/Date/utils.js +174 -123
  119. package/lib/modules/Discount/index.js +122 -127
  120. package/lib/modules/Discount/types.js +9 -31
  121. package/lib/modules/Guests/index.js +30 -56
  122. package/lib/modules/Guests/types.js +23 -33
  123. package/lib/modules/Holder/index.js +209 -189
  124. package/lib/modules/Holder/types.js +4 -16
  125. package/lib/modules/Holder/utils.js +20 -49
  126. package/lib/modules/OpenData/index.js +70 -76
  127. package/lib/modules/OpenData/types.js +4 -16
  128. package/lib/modules/OpenData/utils.js +44 -78
  129. package/lib/modules/Order/index.d.ts +1 -1
  130. package/lib/modules/Order/index.js +1733 -2121
  131. package/lib/modules/Order/payment-utils.js +77 -120
  132. package/lib/modules/Order/types.d.ts +3 -1
  133. package/lib/modules/Order/types.js +88 -35
  134. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  135. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  136. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  137. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  138. package/lib/modules/Order/utils.js +814 -647
  139. package/lib/modules/Payment/cash.js +20 -33
  140. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  141. package/lib/modules/Payment/eftpos.js +16 -30
  142. package/lib/modules/Payment/index.js +532 -399
  143. package/lib/modules/Payment/mx51.js +1 -0
  144. package/lib/modules/Payment/types.js +230 -108
  145. package/lib/modules/Payment/utils.js +52 -51
  146. package/lib/modules/Payment/walletpass.js +485 -660
  147. package/lib/modules/Product/index.js +51 -46
  148. package/lib/modules/Product/types.js +4 -16
  149. package/lib/modules/Product/utils.js +32 -33
  150. package/lib/modules/ProductList/index.js +113 -123
  151. package/lib/modules/ProductList/types.js +9 -31
  152. package/lib/modules/Quotation/index.js +81 -118
  153. package/lib/modules/Quotation/types.js +4 -16
  154. package/lib/modules/Resource/index.js +27 -59
  155. package/lib/modules/Resource/types.js +22 -32
  156. package/lib/modules/Resource/utils.js +30 -38
  157. package/lib/modules/ResourcePlanner/index.js +25 -23
  158. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  159. package/lib/modules/ResourcePlanner/planner.js +589 -770
  160. package/lib/modules/ResourcePlanner/types.js +10 -29
  161. package/lib/modules/Rules/index.js +1218 -959
  162. package/lib/modules/Rules/types.js +17 -40
  163. package/lib/modules/SalesSummary/index.js +85 -90
  164. package/lib/modules/SalesSummary/types.js +4 -16
  165. package/lib/modules/SalesSummary/utils.js +355 -430
  166. package/lib/modules/ScanOrderLogger/index.js +59 -79
  167. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  168. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  169. package/lib/modules/ScanOrderLogger/types.js +4 -16
  170. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  171. package/lib/modules/Schedule/index.js +100 -114
  172. package/lib/modules/Schedule/type.js +4 -16
  173. package/lib/modules/Schedule/types.js +4 -16
  174. package/lib/modules/Schedule/utils.js +433 -291
  175. package/lib/modules/Step/index.js +40 -52
  176. package/lib/modules/Step/tyeps.js +4 -16
  177. package/lib/modules/Summary/index.js +66 -71
  178. package/lib/modules/Summary/types.js +4 -16
  179. package/lib/modules/Summary/utils.js +773 -418
  180. package/lib/modules/SurchargeList/index.js +46 -60
  181. package/lib/modules/SurchargeList/types.js +4 -16
  182. package/lib/modules/index.js +245 -63
  183. package/lib/plugins/app.js +4 -16
  184. package/lib/plugins/index.js +36 -25
  185. package/lib/plugins/request.js +137 -126
  186. package/lib/plugins/shopStore.js +4 -16
  187. package/lib/plugins/user.js +4 -16
  188. package/lib/plugins/window.js +171 -179
  189. package/lib/server/index.js +3050 -2665
  190. package/lib/server/modules/floor-plan/index.js +118 -134
  191. package/lib/server/modules/floor-plan/types.js +15 -30
  192. package/lib/server/modules/index.js +106 -68
  193. package/lib/server/modules/menu/index.js +142 -122
  194. package/lib/server/modules/menu/types.js +18 -31
  195. package/lib/server/modules/order/index.js +784 -1002
  196. package/lib/server/modules/order/types.js +122 -33
  197. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  198. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  199. package/lib/server/modules/payment/index.js +59 -83
  200. package/lib/server/modules/payment/types.js +4 -16
  201. package/lib/server/modules/products/index.js +583 -471
  202. package/lib/server/modules/products/types.js +44 -34
  203. package/lib/server/modules/quotation/index.js +137 -172
  204. package/lib/server/modules/quotation/types.js +21 -31
  205. package/lib/server/modules/resource/index.js +220 -186
  206. package/lib/server/modules/resource/types.js +42 -33
  207. package/lib/server/modules/schedule/index.js +135 -123
  208. package/lib/server/modules/schedule/types.js +14 -21
  209. package/lib/server/modules/schedule/utils.js +334 -163
  210. package/lib/server/types.js +4 -16
  211. package/lib/server/utils/index.js +25 -23
  212. package/lib/server/utils/product.js +196 -139
  213. package/lib/server/utils/schedule.js +34 -41
  214. package/lib/server/utils/small-ticket.js +479 -456
  215. package/lib/server/utils/time.js +40 -49
  216. package/lib/solution/BaseSales/index.js +1220 -1412
  217. package/lib/solution/BaseSales/types.js +42 -38
  218. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  219. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  220. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  221. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  222. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  223. package/lib/solution/BaseSales/utils.js +158 -143
  224. package/lib/solution/BookingByStep/index.js +1527 -1340
  225. package/lib/solution/BookingByStep/types.js +40 -99
  226. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  227. package/lib/solution/BookingByStep/utils/products.js +42 -52
  228. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  229. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  230. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  231. package/lib/solution/BookingTicket/index.js +607 -522
  232. package/lib/solution/BookingTicket/types.js +99 -77
  233. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  234. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  235. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  236. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  237. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  238. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  239. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  240. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  241. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  242. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  243. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  244. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  245. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  246. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  247. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  248. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  249. package/lib/solution/BuyTickets/index.js +67 -70
  250. package/lib/solution/BuyTickets/types.js +22 -38
  251. package/lib/solution/Checkout/index.js +1451 -1158
  252. package/lib/solution/Checkout/types.js +91 -61
  253. package/lib/solution/Checkout/utils/index.js +228 -156
  254. package/lib/solution/PlaceOrder/index.js +55 -0
  255. package/lib/solution/RegisterAndLogin/config.js +493 -460
  256. package/lib/solution/RegisterAndLogin/index.js +633 -630
  257. package/lib/solution/RegisterAndLogin/types.js +189 -76
  258. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  259. package/lib/solution/Sales/index.js +328 -324
  260. package/lib/solution/Sales/types.js +27 -33
  261. package/lib/solution/ScanOrder/index.js +832 -864
  262. package/lib/solution/ScanOrder/types.js +33 -34
  263. package/lib/solution/ScanOrder/utils.js +409 -374
  264. package/lib/solution/ShopDiscount/index.js +226 -232
  265. package/lib/solution/ShopDiscount/types.js +15 -37
  266. package/lib/solution/ShopDiscount/utils.js +300 -172
  267. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  268. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  269. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  270. package/lib/solution/VenueBooking/index.js +811 -879
  271. package/lib/solution/VenueBooking/types.js +19 -39
  272. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  273. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  274. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  275. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  276. package/lib/solution/VenueBooking/utils.js +130 -67
  277. package/lib/solution/index.js +124 -41
  278. package/lib/store/createStore.js +32 -29
  279. package/lib/types/index.js +4 -16
  280. package/lib/utils/payment-number.js +26 -46
  281. package/lib/utils/task.js +36 -36
  282. package/lib/utils/watch.js +81 -47
  283. package/package.json +2 -1
@@ -1,129 +1,130 @@
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/server/modules/menu/index.ts
20
- var menu_exports = {};
21
- __export(menu_exports, {
22
- MenuModule: () => MenuModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(menu_exports);
25
- var import_lodash_es = require("lodash-es");
26
- var import_BaseModule = require("../../../modules/BaseModule");
27
- var import_types = require("./types");
28
- var INDEXDB_STORE_NAME = "menu";
29
- var MenuModule = class extends import_BaseModule.BaseModule {
30
- // LoggerManager 实例
6
+ exports.MenuModule = void 0;
7
+ var _lodashEs = require("lodash-es");
8
+ var _BaseModule = require("../../../modules/BaseModule");
9
+ var _types = require("./types");
10
+ /**
11
+ * IndexDB 存储名称
12
+ */
13
+ const INDEXDB_STORE_NAME = 'menu';
14
+
15
+ /**
16
+ * 餐牌模块 - 用于管理餐牌数据和根据餐牌过滤商品
17
+ */
18
+ class MenuModule extends _BaseModule.BaseModule {
19
+ defaultName = 'menu';
20
+ defaultVersion = '1.0.0';
21
+ request;
22
+ store;
23
+ dbManager; // IndexDBManager 实例
24
+ logger; // LoggerManager 实例
25
+
31
26
  constructor(name, version) {
32
27
  super(name, version);
33
- this.defaultName = "menu";
34
- this.defaultVersion = "1.0.0";
35
28
  }
36
29
  async initialize(core, options) {
37
- var _a;
38
30
  this.core = core;
39
- this.store = options == null ? void 0 : options.store;
40
- this.request = core.getPlugin("request");
31
+ this.store = options?.store;
32
+
33
+ // 获取依赖的插件
34
+ this.request = core.getPlugin('request');
41
35
  if (!this.request) {
42
- throw new Error("MenuModule 需要 request 插件支持");
36
+ throw new Error('MenuModule 需要 request 插件支持');
43
37
  }
44
- if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.menuList)) {
45
- this.store.menuList = options == null ? void 0 : options.initialState.menuList;
38
+ if (Array.isArray(options?.initialState?.menuList)) {
39
+ this.store.menuList = options?.initialState.menuList;
40
+ // 同步更新 Map 缓存
46
41
  this.syncMenuMap();
47
- this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
42
+ this.core.effects.emit(_types.MenuHooks.onMenuChanged, this.store.menuList);
48
43
  } else {
49
44
  this.store.menuList = [];
50
- this.store.map = /* @__PURE__ */ new Map();
45
+ this.store.map = new Map();
51
46
  }
52
- const appPlugin = core.getPlugin("app");
47
+
48
+ // 获取并存储 dbManager
49
+ const appPlugin = core.getPlugin('app');
53
50
  if (appPlugin) {
54
51
  const app = appPlugin.getApp();
55
52
  this.dbManager = app.dbManager;
56
53
  this.logger = app.logger;
57
- if (this.dbManager) {
58
- console.log("[Menu] IndexDB Manager 已初始化");
59
- } else {
60
- console.warn("[Menu] IndexDB Manager 未找到");
54
+ if (this.dbManager) {} else {
55
+ console.warn('[Menu] IndexDB Manager 未找到');
61
56
  }
62
57
  }
63
- this.logInfo("模块初始化完成", {
58
+ this.logInfo('模块初始化完成', {
64
59
  hasDbManager: !!this.dbManager,
65
60
  hasLogger: !!this.logger,
66
61
  initialMenuCount: this.store.menuList.length
67
62
  });
68
63
  }
64
+
69
65
  /**
70
66
  * 加载餐牌列表(从服务器)
71
67
  */
72
68
  async loadMenuList() {
73
- var _a;
74
- this.logInfo("开始从服务器加载餐牌列表");
69
+ this.logInfo('开始从服务器加载餐牌列表');
75
70
  const startTime = Date.now();
76
71
  try {
77
- const response = await this.request.get(
78
- `/form/data/v1`,
79
- {
80
- skip: 1,
81
- num: 999,
82
- code: "menu_list"
83
- },
84
- { cache: void 0 }
85
- );
86
- const menuList = ((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.list) || [];
72
+ const response = await this.request.get(`/form/data/v1`, {
73
+ skip: 1,
74
+ num: 999,
75
+ code: 'menu_list'
76
+ }, {
77
+ cache: undefined
78
+ });
79
+ const menuList = response?.data?.list || [];
87
80
  const duration = Date.now() - startTime;
88
- this.logInfo("从服务器加载餐牌列表成功", {
81
+ this.logInfo('从服务器加载餐牌列表成功', {
89
82
  menuCount: menuList.length,
90
83
  duration: `${duration}ms`
91
84
  });
85
+
86
+ // 保存到 IndexDB
92
87
  await this.saveMenuToIndexDB(menuList);
93
88
  await this.setMenuList(menuList);
94
89
  return menuList;
95
90
  } catch (error) {
96
91
  const duration = Date.now() - startTime;
97
92
  const errorMessage = error instanceof Error ? error.message : String(error);
98
- console.error("[Menu] 加载餐牌数据失败:", error);
99
- this.logError("从服务器加载餐牌列表失败", {
93
+ console.error('[Menu] 加载餐牌数据失败:', error);
94
+ this.logError('从服务器加载餐牌列表失败', {
100
95
  duration: `${duration}ms`,
101
96
  error: errorMessage
102
97
  });
103
98
  return [];
104
99
  }
105
100
  }
101
+
106
102
  /**
107
103
  * 设置餐牌列表
108
104
  */
109
105
  async setMenuList(menuList) {
110
106
  this.store.menuList = menuList;
107
+ // 同步更新 Map 缓存
111
108
  this.syncMenuMap();
112
- await this.core.effects.emit(import_types.MenuHooks.onMenuLoaded, menuList);
109
+ await this.core.effects.emit(_types.MenuHooks.onMenuLoaded, menuList);
113
110
  }
111
+
114
112
  /**
115
113
  * 获取餐牌列表
116
114
  */
117
115
  getMenuList() {
118
116
  return this.store.menuList;
119
117
  }
118
+
120
119
  /**
121
120
  * 根据 form_record_id 数组获取餐牌详情
122
121
  * 使用 Map 快速查询,时间复杂度 O(m),m 为 ids 数量
123
122
  */
124
123
  getMenuByIds(ids) {
125
124
  if (!ids || ids.length === 0) {
126
- this.logInfo("getMenuByIds: 未提供有效的 ids", { idsCount: 0 });
125
+ this.logInfo('getMenuByIds: 未提供有效的 ids', {
126
+ idsCount: 0
127
+ });
127
128
  return [];
128
129
  }
129
130
  const result = [];
@@ -133,13 +134,14 @@ var MenuModule = class extends import_BaseModule.BaseModule {
133
134
  result.push(menu);
134
135
  }
135
136
  }
136
- this.logInfo("getMenuByIds: 查询完成", {
137
+ this.logInfo('getMenuByIds: 查询完成', {
137
138
  requestedCount: ids.length,
138
139
  foundCount: result.length,
139
140
  notFoundCount: ids.length - result.length
140
141
  });
141
142
  return result;
142
143
  }
144
+
143
145
  /**
144
146
  * 同步更新餐牌 Map 缓存
145
147
  * 将 menuList 中的餐牌同步到 map,以 form_record_id 为 key
@@ -150,90 +152,97 @@ var MenuModule = class extends import_BaseModule.BaseModule {
150
152
  for (const menu of this.store.menuList) {
151
153
  this.store.map.set(menu.form_record_id, menu);
152
154
  }
153
- console.log(`[Menu] Map 缓存已同步,共 ${this.store.map.size} 个餐牌`);
154
155
  }
156
+
155
157
  /**
156
158
  * 清空缓存
157
159
  */
158
160
  async clear() {
159
- this.logInfo("开始清空缓存", {
161
+ this.logInfo('开始清空缓存', {
160
162
  currentMenuCount: this.store.menuList.length
161
163
  });
162
164
  this.store.menuList = [];
163
165
  this.store.map.clear();
164
- this.store.currentMenu = void 0;
166
+ this.store.currentMenu = undefined;
167
+
168
+ // 同时清空 IndexDB 中的数据
165
169
  if (this.dbManager) {
166
170
  try {
167
171
  await this.dbManager.clear(INDEXDB_STORE_NAME);
168
- console.log("[Menu] IndexDB 缓存已清空");
169
- this.logInfo("IndexDB 缓存已清空");
172
+ this.logInfo('IndexDB 缓存已清空');
170
173
  } catch (error) {
171
174
  const errorMessage = error instanceof Error ? error.message : String(error);
172
- console.error("[Menu] 清空 IndexDB 缓存失败:", error);
173
- this.logError("清空 IndexDB 缓存失败", { error: errorMessage });
175
+ console.error('[Menu] 清空 IndexDB 缓存失败:', error);
176
+ this.logError('清空 IndexDB 缓存失败', {
177
+ error: errorMessage
178
+ });
174
179
  }
175
180
  }
176
- console.log("[Menu] 缓存已清空");
177
- this.logInfo("缓存清空完成");
181
+ this.logInfo('缓存清空完成');
178
182
  }
183
+
179
184
  /**
180
185
  * 从 IndexDB 加载餐牌数据
181
186
  * @private
182
187
  */
183
188
  async loadMenuFromIndexDB() {
184
189
  if (!this.dbManager) {
185
- this.logWarning("loadMenuFromIndexDB: dbManager 不可用");
190
+ this.logWarning('loadMenuFromIndexDB: dbManager 不可用');
186
191
  return [];
187
192
  }
188
193
  const startedAt = performance.now();
189
194
  try {
195
+ // 直接获取所有餐牌记录
190
196
  const menuList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
191
- this.logInfo("从 IndexDB 加载餐牌数据", {
192
- menuCount: (menuList == null ? void 0 : menuList.length) ?? 0,
197
+ this.logInfo('从 IndexDB 加载餐牌数据', {
198
+ menuCount: menuList?.length ?? 0,
193
199
  durationMs: +(performance.now() - startedAt).toFixed(2)
194
200
  });
195
201
  return menuList || [];
196
202
  } catch (error) {
197
203
  const errorMessage = error instanceof Error ? error.message : String(error);
198
- console.error("[Menu] 从 IndexDB 读取数据失败:", error);
199
- this.logError("从 IndexDB 读取数据失败", {
204
+ console.error('[Menu] 从 IndexDB 读取数据失败:', error);
205
+ this.logError('从 IndexDB 读取数据失败', {
200
206
  durationMs: +(performance.now() - startedAt).toFixed(2),
201
207
  error: errorMessage
202
208
  });
203
209
  return [];
204
210
  }
205
211
  }
212
+
206
213
  /**
207
214
  * 保存餐牌数据到 IndexDB
208
215
  * @private
209
216
  */
210
217
  async saveMenuToIndexDB(menuList) {
211
218
  if (!this.dbManager) {
212
- this.logWarning("saveMenuToIndexDB: dbManager 不可用");
219
+ this.logWarning('saveMenuToIndexDB: dbManager 不可用');
213
220
  return;
214
221
  }
215
222
  const startedAt = performance.now();
216
223
  let clearDurationMs = 0;
217
224
  let writeDurationMs = 0;
218
- this.logInfo("开始保存餐牌数据到 IndexDB", { menuCount: menuList.length });
225
+ this.logInfo('开始保存餐牌数据到 IndexDB', {
226
+ menuCount: menuList.length
227
+ });
219
228
  try {
229
+ // 先清空现有的餐牌数据
220
230
  const clearStartedAt = performance.now();
221
231
  try {
222
232
  await this.dbManager.clear(INDEXDB_STORE_NAME);
223
233
  } finally {
224
234
  clearDurationMs = +(performance.now() - clearStartedAt).toFixed(2);
225
235
  }
236
+
237
+ // 逐个保存餐牌(每个餐牌是独立的记录)
226
238
  const writeStartedAt = performance.now();
227
- const savePromises = menuList.map(
228
- (menu) => this.dbManager.add(INDEXDB_STORE_NAME, menu)
229
- );
239
+ const savePromises = menuList.map(menu => this.dbManager.add(INDEXDB_STORE_NAME, menu));
230
240
  try {
231
241
  await Promise.all(savePromises);
232
242
  } finally {
233
243
  writeDurationMs = +(performance.now() - writeStartedAt).toFixed(2);
234
244
  }
235
- console.log(`[Menu] 已将 ${menuList.length} 条餐牌数据保存到 IndexDB`);
236
- this.logInfo("餐牌数据已保存到 IndexDB", {
245
+ this.logInfo('餐牌数据已保存到 IndexDB', {
237
246
  menuCount: menuList.length,
238
247
  clearDurationMs,
239
248
  writeDurationMs,
@@ -241,8 +250,8 @@ var MenuModule = class extends import_BaseModule.BaseModule {
241
250
  });
242
251
  } catch (error) {
243
252
  const errorMessage = error instanceof Error ? error.message : String(error);
244
- console.error("[Menu] 保存数据到 IndexDB 失败:", error);
245
- this.logError("保存数据到 IndexDB 失败", {
253
+ console.error('[Menu] 保存数据到 IndexDB 失败:', error);
254
+ this.logError('保存数据到 IndexDB 失败', {
246
255
  menuCount: menuList.length,
247
256
  clearDurationMs,
248
257
  writeDurationMs,
@@ -251,76 +260,85 @@ var MenuModule = class extends import_BaseModule.BaseModule {
251
260
  });
252
261
  }
253
262
  }
263
+
254
264
  /**
255
265
  * 预加载模块数据(统一接口)
256
266
  * 在模块注册后自动调用
257
267
  */
258
268
  async preload() {
259
- console.log("[Menu] 开始预加载数据...");
260
269
  const startTime = Date.now();
261
- this.logInfo("开始预加载数据");
270
+ this.logInfo('开始预加载数据');
262
271
  try {
272
+ // 1. 尝试从 IndexDB 加载数据
263
273
  const cachedData = await this.loadMenuFromIndexDB();
264
274
  if (cachedData && cachedData.length > 0) {
265
- console.log(`[Menu] IndexDB 加载了 ${cachedData.length} 条餐牌数据`);
266
- this.store.menuList = (0, import_lodash_es.cloneDeep)(cachedData);
275
+ // 将缓存数据放入 store
276
+ this.store.menuList = (0, _lodashEs.cloneDeep)(cachedData);
277
+ // 同步更新 Map 缓存
267
278
  this.syncMenuMap();
268
- this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
279
+ this.core.effects.emit(_types.MenuHooks.onMenuChanged, this.store.menuList);
269
280
  const duration = Date.now() - startTime;
270
- this.logInfo("预加载完成(从 IndexDB)", {
281
+ this.logInfo('预加载完成(从 IndexDB)', {
271
282
  menuCount: cachedData.length,
272
283
  duration: `${duration}ms`,
273
- source: "IndexDB"
284
+ source: 'IndexDB'
274
285
  });
275
286
  return;
276
287
  }
277
- console.log("[Menu] IndexDB 中没有缓存数据,从服务器加载...");
278
- this.logInfo("IndexDB 中没有缓存数据,准备从服务器加载");
288
+ this.logInfo('IndexDB 中没有缓存数据,准备从服务器加载');
279
289
  } catch (error) {
280
290
  const errorMessage = error instanceof Error ? error.message : String(error);
281
- console.warn("[Menu] 从 IndexDB 加载数据失败:", error);
282
- this.logWarning("从 IndexDB 加载数据失败,准备从服务器加载", { error: errorMessage });
291
+ console.warn('[Menu] 从 IndexDB 加载数据失败:', error);
292
+ this.logWarning('从 IndexDB 加载数据失败,准备从服务器加载', {
293
+ error: errorMessage
294
+ });
283
295
  }
296
+
297
+ // 2. 如果 IndexDB 中没有数据,从服务器加载
284
298
  const menuList = await this.loadMenuList();
299
+
300
+ // 3. 将服务器数据保存到 IndexDB 和 store
285
301
  if (menuList && menuList.length > 0) {
286
302
  await this.saveMenuToIndexDB(menuList);
287
- this.store.menuList = (0, import_lodash_es.cloneDeep)(menuList);
303
+ this.store.menuList = (0, _lodashEs.cloneDeep)(menuList);
304
+ // 同步更新 Map 缓存
288
305
  this.syncMenuMap();
289
- this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
306
+ this.core.effects.emit(_types.MenuHooks.onMenuChanged, this.store.menuList);
290
307
  const duration = Date.now() - startTime;
291
- this.logInfo("预加载完成(从服务器)", {
308
+ this.logInfo('预加载完成(从服务器)', {
292
309
  menuCount: menuList.length,
293
310
  duration: `${duration}ms`,
294
- source: "Server"
311
+ source: 'Server'
295
312
  });
296
313
  } else {
297
314
  const duration = Date.now() - startTime;
298
- this.logWarning("预加载完成但未获取到数据", {
315
+ this.logWarning('预加载完成但未获取到数据', {
299
316
  duration: `${duration}ms`
300
317
  });
301
318
  }
302
319
  }
320
+
303
321
  /**
304
322
  * 获取模块的路由定义
305
323
  * 返回该模块需要注册的 API 路由
306
324
  */
307
325
  getRoutes() {
308
326
  return [
309
- // GET /api/menu - 获取所有餐牌
310
- {
311
- method: "get",
312
- path: "/api/menu",
313
- handler: async () => {
314
- const menuList = this.getMenuList();
315
- return {
316
- success: true,
317
- data: menuList,
318
- total: menuList.length
319
- };
320
- }
327
+ // GET /api/menu - 获取所有餐牌
328
+ {
329
+ method: 'get',
330
+ path: '/api/menu',
331
+ handler: async () => {
332
+ const menuList = this.getMenuList();
333
+ return {
334
+ success: true,
335
+ data: menuList,
336
+ total: menuList.length
337
+ };
321
338
  }
322
- ];
339
+ }];
323
340
  }
341
+
324
342
  /**
325
343
  * 记录信息日志
326
344
  * @param title 日志标题
@@ -330,14 +348,16 @@ var MenuModule = class extends import_BaseModule.BaseModule {
330
348
  try {
331
349
  if (this.logger) {
332
350
  this.logger.addLog({
333
- type: "info",
351
+ type: 'info',
334
352
  title: `[MenuModule] ${title}`,
335
353
  metadata: metadata || {}
336
354
  });
337
355
  }
338
356
  } catch {
357
+ // 日志记录失败不影响主流程
339
358
  }
340
359
  }
360
+
341
361
  /**
342
362
  * 记录警告日志
343
363
  * @param title 日志标题
@@ -347,14 +367,16 @@ var MenuModule = class extends import_BaseModule.BaseModule {
347
367
  try {
348
368
  if (this.logger) {
349
369
  this.logger.addLog({
350
- type: "warning",
370
+ type: 'warning',
351
371
  title: `[MenuModule] ${title}`,
352
372
  metadata: metadata || {}
353
373
  });
354
374
  }
355
375
  } catch {
376
+ // 日志记录失败不影响主流程
356
377
  }
357
378
  }
379
+
358
380
  /**
359
381
  * 记录错误日志
360
382
  * @param title 日志标题
@@ -364,16 +386,14 @@ var MenuModule = class extends import_BaseModule.BaseModule {
364
386
  try {
365
387
  if (this.logger) {
366
388
  this.logger.addLog({
367
- type: "error",
389
+ type: 'error',
368
390
  title: `[MenuModule] ${title}`,
369
391
  metadata: metadata || {}
370
392
  });
371
393
  }
372
394
  } catch {
395
+ // 日志记录失败不影响主流程
373
396
  }
374
397
  }
375
- };
376
- // Annotate the CommonJS export names for ESM import in node:
377
- 0 && (module.exports = {
378
- MenuModule
379
- });
398
+ }
399
+ exports.MenuModule = MenuModule;
@@ -1,33 +1,20 @@
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/server/modules/menu/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- MenuHooks: () => MenuHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var MenuHooks = /* @__PURE__ */ ((MenuHooks2) => {
26
- MenuHooks2["onMenuLoaded"] = "menu:onMenuLoaded";
27
- MenuHooks2["onMenuChanged"] = "menu:onMenuChanged";
28
- return MenuHooks2;
29
- })(MenuHooks || {});
30
- // Annotate the CommonJS export names for ESM import in node:
31
- 0 && (module.exports = {
32
- MenuHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
6
+ exports.MenuHooks = void 0;
7
+ /**
8
+ * 餐牌模块状态
9
+ */
10
+ /**
11
+ * 餐牌数据结构
12
+ */
13
+ /**
14
+ * 餐牌模块钩子
15
+ */
16
+ let MenuHooks = exports.MenuHooks = /*#__PURE__*/function (MenuHooks) {
17
+ MenuHooks["onMenuLoaded"] = "menu:onMenuLoaded";
18
+ MenuHooks["onMenuChanged"] = "menu:onMenuChanged";
19
+ return MenuHooks;
20
+ }({});