@pisell/pisellos 2.2.282 → 2.2.284

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.d.ts +2 -2
  11. package/dist/modules/Order/index.js +75 -91
  12. package/dist/modules/Order/types.d.ts +3 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/modules/Summary/utils.d.ts +1 -1
  19. package/dist/plugins/request.js +1 -4
  20. package/dist/plugins/window.js +2 -6
  21. package/dist/server/index.js +97 -129
  22. package/dist/server/modules/menu/index.js +32 -41
  23. package/dist/server/modules/order/index.js +2 -4
  24. package/dist/server/modules/products/index.js +24 -42
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +27 -35
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BaseSales/index.js +100 -72
  30. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  31. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  32. package/dist/solution/BookingByStep/index.d.ts +1 -1
  33. package/dist/solution/BookingByStep/index.js +7 -59
  34. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  35. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  36. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  37. package/dist/solution/BookingTicket/index.js +8 -4
  38. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  39. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  40. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  41. package/dist/solution/BuyTickets/index.js +9 -12
  42. package/dist/solution/Checkout/index.js +177 -252
  43. package/dist/solution/Checkout/utils/index.js +4 -16
  44. package/dist/solution/RegisterAndLogin/index.js +30 -76
  45. package/dist/solution/ScanOrder/index.js +50 -60
  46. package/dist/solution/ShopDiscount/index.js +2 -7
  47. package/dist/solution/VenueBooking/index.js +45 -55
  48. package/dist/utils/task.js +15 -18
  49. package/dist/utils/watch.js +0 -1
  50. package/lib/apis/picoding.js +2 -0
  51. package/lib/core/index.js +131 -131
  52. package/lib/effects/index.js +46 -57
  53. package/lib/index.js +82 -49
  54. package/lib/model/index.js +14 -21
  55. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  56. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  57. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  58. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  59. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  60. package/lib/model/strategy/adapter/index.js +100 -64
  61. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  62. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  63. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  64. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  65. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  66. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  67. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  68. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  69. package/lib/model/strategy/adapter/promotion/index.js +1 -51
  70. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  71. package/lib/model/strategy/adapter/type.js +4 -16
  72. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  73. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  74. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  75. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  76. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  77. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  78. package/lib/model/strategy/engine.js +270 -168
  79. package/lib/model/strategy/index.js +49 -34
  80. package/lib/model/strategy/strategy-example.js +243 -239
  81. package/lib/model/strategy/type.js +100 -40
  82. package/lib/modules/Account/index.js +39 -53
  83. package/lib/modules/Account/types.js +20 -33
  84. package/lib/modules/AccountList/index.js +116 -154
  85. package/lib/modules/AccountList/types.js +30 -31
  86. package/lib/modules/AccountList/utils.js +18 -30
  87. package/lib/modules/BaseModule.js +23 -42
  88. package/lib/modules/BookingContext/index.js +158 -136
  89. package/lib/modules/BookingContext/types.js +46 -32
  90. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  91. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  92. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  93. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  94. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  95. package/lib/modules/BookingContext/utils/index.js +124 -41
  96. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  97. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  98. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  99. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  100. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  101. package/lib/modules/BookingContext/utils/resources.js +209 -167
  102. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  103. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  104. package/lib/modules/Cart/index.js +170 -124
  105. package/lib/modules/Cart/types.js +46 -51
  106. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  107. package/lib/modules/Cart/utils/cartDate.js +56 -61
  108. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  109. package/lib/modules/Cart/utils/cartNote.js +27 -32
  110. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  111. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  112. package/lib/modules/Cart/utils/cartResource.js +70 -78
  113. package/lib/modules/Cart/utils/changePrice.js +22 -50
  114. package/lib/modules/Cart/utils/index.js +106 -48
  115. package/lib/modules/Customer/constants.js +13 -34
  116. package/lib/modules/Customer/index.js +235 -172
  117. package/lib/modules/Customer/types.js +38 -35
  118. package/lib/modules/Date/index.js +116 -115
  119. package/lib/modules/Date/types.js +16 -28
  120. package/lib/modules/Date/utils.js +174 -123
  121. package/lib/modules/Discount/index.js +122 -127
  122. package/lib/modules/Discount/types.js +9 -31
  123. package/lib/modules/Guests/index.js +30 -56
  124. package/lib/modules/Guests/types.js +23 -33
  125. package/lib/modules/Holder/index.js +209 -189
  126. package/lib/modules/Holder/types.js +4 -16
  127. package/lib/modules/Holder/utils.js +20 -49
  128. package/lib/modules/OpenData/index.js +70 -76
  129. package/lib/modules/OpenData/types.js +4 -16
  130. package/lib/modules/OpenData/utils.js +44 -78
  131. package/lib/modules/Order/index.d.ts +2 -2
  132. package/lib/modules/Order/index.js +1733 -2121
  133. package/lib/modules/Order/payment-utils.js +77 -120
  134. package/lib/modules/Order/types.d.ts +3 -1
  135. package/lib/modules/Order/types.js +87 -35
  136. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  137. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  138. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  139. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  140. package/lib/modules/Order/utils.js +814 -647
  141. package/lib/modules/Payment/cash.js +20 -33
  142. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  143. package/lib/modules/Payment/eftpos.js +16 -30
  144. package/lib/modules/Payment/index.js +532 -399
  145. package/lib/modules/Payment/mx51.js +1 -0
  146. package/lib/modules/Payment/types.js +230 -108
  147. package/lib/modules/Payment/utils.js +52 -51
  148. package/lib/modules/Payment/walletpass.js +485 -660
  149. package/lib/modules/Product/index.js +51 -46
  150. package/lib/modules/Product/types.js +4 -16
  151. package/lib/modules/Product/utils.js +32 -33
  152. package/lib/modules/ProductList/index.js +113 -123
  153. package/lib/modules/ProductList/types.js +9 -31
  154. package/lib/modules/Quotation/index.js +66 -100
  155. package/lib/modules/Quotation/types.js +4 -16
  156. package/lib/modules/Resource/index.js +27 -59
  157. package/lib/modules/Resource/types.js +22 -32
  158. package/lib/modules/Resource/utils.js +30 -38
  159. package/lib/modules/ResourcePlanner/index.js +60 -61
  160. package/lib/modules/ResourcePlanner/planner.js +346 -384
  161. package/lib/modules/ResourcePlanner/types.js +4 -16
  162. package/lib/modules/Rules/index.js +1218 -959
  163. package/lib/modules/Rules/types.js +17 -40
  164. package/lib/modules/SalesSummary/index.js +85 -90
  165. package/lib/modules/SalesSummary/types.js +4 -16
  166. package/lib/modules/SalesSummary/utils.js +355 -430
  167. package/lib/modules/ScanOrderLogger/index.js +59 -79
  168. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  169. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  170. package/lib/modules/ScanOrderLogger/types.js +4 -16
  171. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  172. package/lib/modules/Schedule/index.js +100 -114
  173. package/lib/modules/Schedule/type.js +4 -16
  174. package/lib/modules/Schedule/types.js +4 -16
  175. package/lib/modules/Schedule/utils.js +433 -291
  176. package/lib/modules/Step/index.js +40 -52
  177. package/lib/modules/Step/tyeps.js +4 -16
  178. package/lib/modules/Summary/index.js +66 -71
  179. package/lib/modules/Summary/types.js +4 -16
  180. package/lib/modules/Summary/utils.d.ts +1 -1
  181. package/lib/modules/Summary/utils.js +773 -418
  182. package/lib/modules/SurchargeList/index.js +46 -60
  183. package/lib/modules/SurchargeList/types.js +4 -16
  184. package/lib/modules/index.js +245 -63
  185. package/lib/plugins/app.js +4 -16
  186. package/lib/plugins/index.js +36 -25
  187. package/lib/plugins/request.js +137 -126
  188. package/lib/plugins/shopStore.js +4 -16
  189. package/lib/plugins/user.js +4 -16
  190. package/lib/plugins/window.js +171 -179
  191. package/lib/server/index.js +3027 -2655
  192. package/lib/server/modules/floor-plan/index.js +102 -123
  193. package/lib/server/modules/floor-plan/types.js +15 -30
  194. package/lib/server/modules/index.js +106 -68
  195. package/lib/server/modules/menu/index.js +146 -122
  196. package/lib/server/modules/menu/types.js +18 -31
  197. package/lib/server/modules/order/index.js +758 -956
  198. package/lib/server/modules/order/types.js +122 -33
  199. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  200. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  201. package/lib/server/modules/payment/index.js +59 -83
  202. package/lib/server/modules/payment/types.js +4 -16
  203. package/lib/server/modules/products/index.js +575 -459
  204. package/lib/server/modules/products/types.js +44 -34
  205. package/lib/server/modules/quotation/index.js +137 -172
  206. package/lib/server/modules/quotation/types.js +21 -31
  207. package/lib/server/modules/resource/index.js +213 -184
  208. package/lib/server/modules/resource/types.js +42 -33
  209. package/lib/server/modules/schedule/index.js +135 -123
  210. package/lib/server/modules/schedule/types.js +14 -21
  211. package/lib/server/modules/schedule/utils.js +334 -163
  212. package/lib/server/types.js +4 -16
  213. package/lib/server/utils/index.js +25 -23
  214. package/lib/server/utils/product.js +196 -139
  215. package/lib/server/utils/schedule.js +34 -41
  216. package/lib/server/utils/small-ticket.js +479 -456
  217. package/lib/server/utils/time.js +40 -49
  218. package/lib/solution/BaseSales/index.js +1209 -1412
  219. package/lib/solution/BaseSales/types.js +42 -38
  220. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  221. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  222. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  223. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  224. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  225. package/lib/solution/BaseSales/utils.js +158 -143
  226. package/lib/solution/BookingByStep/index.d.ts +1 -1
  227. package/lib/solution/BookingByStep/index.js +1527 -1340
  228. package/lib/solution/BookingByStep/types.js +40 -99
  229. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  230. package/lib/solution/BookingByStep/utils/products.js +42 -52
  231. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  232. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  233. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  234. package/lib/solution/BookingTicket/index.js +598 -514
  235. package/lib/solution/BookingTicket/types.js +99 -77
  236. package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
  237. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  238. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  239. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  240. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  241. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  242. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  243. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  244. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  245. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  246. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  247. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  248. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  249. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  250. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  251. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  252. package/lib/solution/BuyTickets/index.js +67 -70
  253. package/lib/solution/BuyTickets/types.js +22 -38
  254. package/lib/solution/Checkout/index.js +1451 -1158
  255. package/lib/solution/Checkout/types.js +91 -61
  256. package/lib/solution/Checkout/utils/index.js +228 -156
  257. package/lib/solution/PlaceOrder/index.js +55 -0
  258. package/lib/solution/RegisterAndLogin/config.js +493 -460
  259. package/lib/solution/RegisterAndLogin/index.js +633 -630
  260. package/lib/solution/RegisterAndLogin/types.js +189 -76
  261. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  262. package/lib/solution/Sales/index.js +328 -324
  263. package/lib/solution/Sales/types.js +27 -33
  264. package/lib/solution/ScanOrder/index.js +832 -864
  265. package/lib/solution/ScanOrder/types.js +33 -34
  266. package/lib/solution/ScanOrder/utils.js +409 -374
  267. package/lib/solution/ShopDiscount/index.js +226 -232
  268. package/lib/solution/ShopDiscount/types.js +15 -37
  269. package/lib/solution/ShopDiscount/utils.js +300 -172
  270. package/lib/solution/UnifiedBookingSales/index.js +437 -487
  271. package/lib/solution/UnifiedBookingSales/types.js +12 -31
  272. package/lib/solution/VenueBooking/index.js +811 -879
  273. package/lib/solution/VenueBooking/types.js +19 -39
  274. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  275. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  276. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  277. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  278. package/lib/solution/VenueBooking/utils.js +130 -67
  279. package/lib/solution/index.js +124 -41
  280. package/lib/store/createStore.js +32 -29
  281. package/lib/types/index.js +4 -16
  282. package/lib/utils/payment-number.js +26 -46
  283. package/lib/utils/task.js +36 -36
  284. package/lib/utils/watch.js +81 -47
  285. package/package.json +2 -1
@@ -1,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,151 +152,171 @@ 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
  try {
194
+ // 直接获取所有餐牌记录
189
195
  const menuList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
190
- this.logInfo("从 IndexDB 加载餐牌数据", {
191
- menuCount: (menuList == null ? void 0 : menuList.length) ?? 0
196
+ this.logInfo('从 IndexDB 加载餐牌数据', {
197
+ menuCount: menuList?.length ?? 0
192
198
  });
193
199
  return menuList || [];
194
200
  } catch (error) {
195
201
  const errorMessage = error instanceof Error ? error.message : String(error);
196
- console.error("[Menu] 从 IndexDB 读取数据失败:", error);
197
- this.logError("从 IndexDB 读取数据失败", { error: errorMessage });
202
+ console.error('[Menu] 从 IndexDB 读取数据失败:', error);
203
+ this.logError('从 IndexDB 读取数据失败', {
204
+ error: errorMessage
205
+ });
198
206
  return [];
199
207
  }
200
208
  }
209
+
201
210
  /**
202
211
  * 保存餐牌数据到 IndexDB
203
212
  * @private
204
213
  */
205
214
  async saveMenuToIndexDB(menuList) {
206
215
  if (!this.dbManager) {
207
- this.logWarning("saveMenuToIndexDB: dbManager 不可用");
216
+ this.logWarning('saveMenuToIndexDB: dbManager 不可用');
208
217
  return;
209
218
  }
210
- this.logInfo("开始保存餐牌数据到 IndexDB", { menuCount: menuList.length });
219
+ this.logInfo('开始保存餐牌数据到 IndexDB', {
220
+ menuCount: menuList.length
221
+ });
211
222
  try {
223
+ // 先清空现有的餐牌数据
212
224
  await this.dbManager.clear(INDEXDB_STORE_NAME);
213
- const savePromises = menuList.map(
214
- (menu) => this.dbManager.add(INDEXDB_STORE_NAME, menu)
215
- );
225
+
226
+ // 逐个保存餐牌(每个餐牌是独立的记录)
227
+ const savePromises = menuList.map(menu => this.dbManager.add(INDEXDB_STORE_NAME, menu));
216
228
  await Promise.all(savePromises);
217
- console.log(`[Menu] 已将 ${menuList.length} 条餐牌数据保存到 IndexDB`);
218
- this.logInfo("餐牌数据已保存到 IndexDB", { menuCount: menuList.length });
229
+ this.logInfo('餐牌数据已保存到 IndexDB', {
230
+ menuCount: menuList.length
231
+ });
219
232
  } catch (error) {
220
233
  const errorMessage = error instanceof Error ? error.message : String(error);
221
- console.error("[Menu] 保存数据到 IndexDB 失败:", error);
222
- this.logError("保存数据到 IndexDB 失败", {
234
+ console.error('[Menu] 保存数据到 IndexDB 失败:', error);
235
+ this.logError('保存数据到 IndexDB 失败', {
223
236
  menuCount: menuList.length,
224
237
  error: errorMessage
225
238
  });
226
239
  }
227
240
  }
241
+
228
242
  /**
229
243
  * 预加载模块数据(统一接口)
230
244
  * 在模块注册后自动调用
231
245
  */
232
246
  async preload() {
233
- console.log("[Menu] 开始预加载数据...");
234
247
  const startTime = Date.now();
235
- this.logInfo("开始预加载数据");
248
+ this.logInfo('开始预加载数据');
236
249
  try {
250
+ // 1. 尝试从 IndexDB 加载数据
237
251
  const cachedData = await this.loadMenuFromIndexDB();
238
252
  if (cachedData && cachedData.length > 0) {
239
- console.log(`[Menu] IndexDB 加载了 ${cachedData.length} 条餐牌数据`);
240
- this.store.menuList = (0, import_lodash_es.cloneDeep)(cachedData);
253
+ // 将缓存数据放入 store
254
+ this.store.menuList = (0, _lodashEs.cloneDeep)(cachedData);
255
+ // 同步更新 Map 缓存
241
256
  this.syncMenuMap();
242
- this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
257
+ this.core.effects.emit(_types.MenuHooks.onMenuChanged, this.store.menuList);
243
258
  const duration = Date.now() - startTime;
244
- this.logInfo("预加载完成(从 IndexDB)", {
259
+ this.logInfo('预加载完成(从 IndexDB)', {
245
260
  menuCount: cachedData.length,
246
261
  duration: `${duration}ms`,
247
- source: "IndexDB"
262
+ source: 'IndexDB'
248
263
  });
249
264
  return;
250
265
  }
251
- console.log("[Menu] IndexDB 中没有缓存数据,从服务器加载...");
252
- this.logInfo("IndexDB 中没有缓存数据,准备从服务器加载");
266
+ this.logInfo('IndexDB 中没有缓存数据,准备从服务器加载');
253
267
  } catch (error) {
254
268
  const errorMessage = error instanceof Error ? error.message : String(error);
255
- console.warn("[Menu] 从 IndexDB 加载数据失败:", error);
256
- this.logWarning("从 IndexDB 加载数据失败,准备从服务器加载", { error: errorMessage });
269
+ console.warn('[Menu] 从 IndexDB 加载数据失败:', error);
270
+ this.logWarning('从 IndexDB 加载数据失败,准备从服务器加载', {
271
+ error: errorMessage
272
+ });
257
273
  }
274
+
275
+ // 2. 如果 IndexDB 中没有数据,从服务器加载
258
276
  const menuList = await this.loadMenuList();
277
+
278
+ // 3. 将服务器数据保存到 IndexDB 和 store
259
279
  if (menuList && menuList.length > 0) {
260
280
  await this.saveMenuToIndexDB(menuList);
261
- this.store.menuList = (0, import_lodash_es.cloneDeep)(menuList);
281
+ this.store.menuList = (0, _lodashEs.cloneDeep)(menuList);
282
+ // 同步更新 Map 缓存
262
283
  this.syncMenuMap();
263
- this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
284
+ this.core.effects.emit(_types.MenuHooks.onMenuChanged, this.store.menuList);
264
285
  const duration = Date.now() - startTime;
265
- this.logInfo("预加载完成(从服务器)", {
286
+ this.logInfo('预加载完成(从服务器)', {
266
287
  menuCount: menuList.length,
267
288
  duration: `${duration}ms`,
268
- source: "Server"
289
+ source: 'Server'
269
290
  });
270
291
  } else {
271
292
  const duration = Date.now() - startTime;
272
- this.logWarning("预加载完成但未获取到数据", {
293
+ this.logWarning('预加载完成但未获取到数据', {
273
294
  duration: `${duration}ms`
274
295
  });
275
296
  }
276
297
  }
298
+
277
299
  /**
278
300
  * 获取模块的路由定义
279
301
  * 返回该模块需要注册的 API 路由
280
302
  */
281
303
  getRoutes() {
282
304
  return [
283
- // GET /api/menu - 获取所有餐牌
284
- {
285
- method: "get",
286
- path: "/api/menu",
287
- handler: async () => {
288
- const menuList = this.getMenuList();
289
- return {
290
- success: true,
291
- data: menuList,
292
- total: menuList.length
293
- };
294
- }
305
+ // GET /api/menu - 获取所有餐牌
306
+ {
307
+ method: 'get',
308
+ path: '/api/menu',
309
+ handler: async () => {
310
+ const menuList = this.getMenuList();
311
+ return {
312
+ success: true,
313
+ data: menuList,
314
+ total: menuList.length
315
+ };
295
316
  }
296
- ];
317
+ }];
297
318
  }
319
+
298
320
  /**
299
321
  * 记录信息日志
300
322
  * @param title 日志标题
@@ -304,14 +326,16 @@ var MenuModule = class extends import_BaseModule.BaseModule {
304
326
  try {
305
327
  if (this.logger) {
306
328
  this.logger.addLog({
307
- type: "info",
329
+ type: 'info',
308
330
  title: `[MenuModule] ${title}`,
309
331
  metadata: metadata || {}
310
332
  });
311
333
  }
312
334
  } catch {
335
+ // 日志记录失败不影响主流程
313
336
  }
314
337
  }
338
+
315
339
  /**
316
340
  * 记录警告日志
317
341
  * @param title 日志标题
@@ -321,14 +345,16 @@ var MenuModule = class extends import_BaseModule.BaseModule {
321
345
  try {
322
346
  if (this.logger) {
323
347
  this.logger.addLog({
324
- type: "warning",
348
+ type: 'warning',
325
349
  title: `[MenuModule] ${title}`,
326
350
  metadata: metadata || {}
327
351
  });
328
352
  }
329
353
  } catch {
354
+ // 日志记录失败不影响主流程
330
355
  }
331
356
  }
357
+
332
358
  /**
333
359
  * 记录错误日志
334
360
  * @param title 日志标题
@@ -338,16 +364,14 @@ var MenuModule = class extends import_BaseModule.BaseModule {
338
364
  try {
339
365
  if (this.logger) {
340
366
  this.logger.addLog({
341
- type: "error",
367
+ type: 'error',
342
368
  title: `[MenuModule] ${title}`,
343
369
  metadata: metadata || {}
344
370
  });
345
371
  }
346
372
  } catch {
373
+ // 日志记录失败不影响主流程
347
374
  }
348
375
  }
349
- };
350
- // Annotate the CommonJS export names for ESM import in node:
351
- 0 && (module.exports = {
352
- MenuModule
353
- });
376
+ }
377
+ 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
+ }({});