@pisell/pisellos 0.0.479 → 0.0.481

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 (147) hide show
  1. package/dist/core/index.d.ts +3 -2
  2. package/dist/core/index.js +7 -0
  3. package/dist/effects/index.d.ts +2 -2
  4. package/dist/effects/index.js +34 -81
  5. package/dist/model/strategy/adapter/promotion/evaluator.js +99 -26
  6. package/dist/model/strategy/adapter/walletPass/type.d.ts +9 -2
  7. package/dist/model/strategy/adapter/walletPass/utils.d.ts +6 -6
  8. package/dist/model/strategy/adapter/walletPass/utils.js +111 -72
  9. package/dist/modules/Customer/index.js +1 -1
  10. package/dist/modules/Discount/index.d.ts +6 -2
  11. package/dist/modules/Discount/index.js +14 -8
  12. package/dist/modules/Order/index.d.ts +1 -1
  13. package/dist/modules/Order/index.js +18 -13
  14. package/dist/modules/Payment/index.d.ts +4 -0
  15. package/dist/modules/Payment/index.js +774 -649
  16. package/dist/modules/Payment/walletpass.js +44 -17
  17. package/dist/modules/Product/index.d.ts +1 -1
  18. package/dist/modules/Product/types.d.ts +2 -0
  19. package/dist/modules/ProductList/index.d.ts +3 -0
  20. package/dist/modules/ProductList/index.js +9 -7
  21. package/dist/modules/Rules/index.d.ts +2 -2
  22. package/dist/modules/Rules/index.js +37 -31
  23. package/dist/modules/Rules/types.d.ts +2 -2
  24. package/dist/modules/Schedule/index.d.ts +9 -0
  25. package/dist/modules/Schedule/index.js +15 -2
  26. package/dist/plugins/app-types/app/app.d.ts +1 -0
  27. package/dist/plugins/request.d.ts +2 -0
  28. package/dist/server/index.d.ts +107 -2
  29. package/dist/server/index.js +1507 -279
  30. package/dist/server/modules/index.d.ts +6 -0
  31. package/dist/server/modules/index.js +7 -0
  32. package/dist/server/modules/menu/index.d.ts +19 -0
  33. package/dist/server/modules/menu/index.js +221 -71
  34. package/dist/server/modules/order/index.d.ts +87 -0
  35. package/dist/server/modules/order/index.js +916 -0
  36. package/dist/server/modules/order/types.d.ts +530 -0
  37. package/dist/server/modules/order/types.js +141 -0
  38. package/dist/server/modules/order/utils/filterBookings.d.ts +6 -0
  39. package/dist/server/modules/order/utils/filterBookings.js +350 -0
  40. package/dist/server/modules/order/utils/filterOrders.d.ts +15 -0
  41. package/dist/server/modules/order/utils/filterOrders.js +226 -0
  42. package/dist/server/modules/products/index.d.ts +117 -5
  43. package/dist/server/modules/products/index.js +1450 -240
  44. package/dist/server/modules/products/types.d.ts +25 -1
  45. package/dist/server/modules/products/types.js +3 -0
  46. package/dist/server/modules/resource/index.d.ts +86 -0
  47. package/dist/server/modules/resource/index.js +1128 -0
  48. package/dist/server/modules/resource/types.d.ts +121 -0
  49. package/dist/server/modules/resource/types.js +47 -0
  50. package/dist/server/modules/schedule/index.d.ts +19 -0
  51. package/dist/server/modules/schedule/index.js +229 -68
  52. package/dist/server/utils/product.d.ts +5 -0
  53. package/dist/server/utils/product.js +71 -31
  54. package/dist/solution/BookingTicket/index.d.ts +10 -2
  55. package/dist/solution/BookingTicket/index.js +41 -28
  56. package/dist/solution/BookingTicket/utils/scan/index.js +1 -1
  57. package/dist/solution/Checkout/index.d.ts +1 -0
  58. package/dist/solution/Checkout/index.js +286 -188
  59. package/dist/solution/Checkout/utils/index.d.ts +2 -1
  60. package/dist/solution/Checkout/utils/index.js +6 -4
  61. package/dist/solution/RegisterAndLogin/config.js +340 -1
  62. package/dist/solution/Sales/index.d.ts +96 -0
  63. package/dist/solution/Sales/index.js +566 -0
  64. package/dist/solution/Sales/types.d.ts +67 -0
  65. package/dist/solution/Sales/types.js +26 -0
  66. package/dist/solution/ShopDiscount/index.d.ts +1 -0
  67. package/dist/solution/ShopDiscount/index.js +35 -22
  68. package/dist/solution/ShopDiscount/types.d.ts +6 -0
  69. package/dist/solution/ShopDiscount/utils.d.ts +9 -0
  70. package/dist/solution/ShopDiscount/utils.js +21 -27
  71. package/dist/solution/index.d.ts +2 -1
  72. package/dist/solution/index.js +2 -1
  73. package/dist/types/index.d.ts +5 -0
  74. package/lib/core/index.d.ts +3 -2
  75. package/lib/core/index.js +4 -0
  76. package/lib/effects/index.d.ts +2 -2
  77. package/lib/effects/index.js +22 -31
  78. package/lib/model/strategy/adapter/promotion/evaluator.js +57 -8
  79. package/lib/model/strategy/adapter/walletPass/type.d.ts +9 -2
  80. package/lib/model/strategy/adapter/walletPass/utils.d.ts +6 -6
  81. package/lib/model/strategy/adapter/walletPass/utils.js +115 -48
  82. package/lib/modules/Customer/index.js +1 -1
  83. package/lib/modules/Discount/index.d.ts +6 -2
  84. package/lib/modules/Discount/index.js +3 -1
  85. package/lib/modules/Order/index.d.ts +1 -1
  86. package/lib/modules/Order/index.js +20 -18
  87. package/lib/modules/Payment/index.d.ts +4 -0
  88. package/lib/modules/Payment/index.js +134 -66
  89. package/lib/modules/Payment/walletpass.js +23 -4
  90. package/lib/modules/Product/index.d.ts +1 -1
  91. package/lib/modules/Product/types.d.ts +2 -0
  92. package/lib/modules/ProductList/index.d.ts +3 -0
  93. package/lib/modules/ProductList/index.js +2 -2
  94. package/lib/modules/Rules/index.d.ts +2 -2
  95. package/lib/modules/Rules/index.js +69 -73
  96. package/lib/modules/Rules/types.d.ts +2 -2
  97. package/lib/modules/Schedule/index.d.ts +9 -0
  98. package/lib/modules/Schedule/index.js +11 -0
  99. package/lib/plugins/app-types/app/app.d.ts +1 -0
  100. package/lib/plugins/request.d.ts +2 -0
  101. package/lib/server/index.d.ts +107 -2
  102. package/lib/server/index.js +773 -51
  103. package/lib/server/modules/index.d.ts +6 -0
  104. package/lib/server/modules/index.js +16 -2
  105. package/lib/server/modules/menu/index.d.ts +19 -0
  106. package/lib/server/modules/menu/index.js +121 -2
  107. package/lib/server/modules/order/index.d.ts +87 -0
  108. package/lib/server/modules/order/index.js +543 -0
  109. package/lib/server/modules/order/types.d.ts +530 -0
  110. package/lib/server/modules/order/types.js +34 -0
  111. package/lib/server/modules/order/utils/filterBookings.d.ts +6 -0
  112. package/lib/server/modules/order/utils/filterBookings.js +320 -0
  113. package/lib/server/modules/order/utils/filterOrders.d.ts +15 -0
  114. package/lib/server/modules/order/utils/filterOrders.js +197 -0
  115. package/lib/server/modules/products/index.d.ts +117 -5
  116. package/lib/server/modules/products/index.js +799 -62
  117. package/lib/server/modules/products/types.d.ts +25 -1
  118. package/lib/server/modules/products/types.js +1 -0
  119. package/lib/server/modules/resource/index.d.ts +86 -0
  120. package/lib/server/modules/resource/index.js +557 -0
  121. package/lib/server/modules/resource/types.d.ts +121 -0
  122. package/lib/server/modules/resource/types.js +35 -0
  123. package/lib/server/modules/schedule/index.d.ts +19 -0
  124. package/lib/server/modules/schedule/index.js +141 -12
  125. package/lib/server/utils/product.d.ts +5 -0
  126. package/lib/server/utils/product.js +56 -27
  127. package/lib/solution/BookingTicket/index.d.ts +10 -2
  128. package/lib/solution/BookingTicket/index.js +10 -2
  129. package/lib/solution/BookingTicket/utils/scan/index.js +0 -1
  130. package/lib/solution/Checkout/index.d.ts +1 -0
  131. package/lib/solution/Checkout/index.js +399 -331
  132. package/lib/solution/Checkout/utils/index.d.ts +2 -1
  133. package/lib/solution/Checkout/utils/index.js +6 -4
  134. package/lib/solution/RegisterAndLogin/config.js +266 -1
  135. package/lib/solution/Sales/index.d.ts +96 -0
  136. package/lib/solution/Sales/index.js +416 -0
  137. package/lib/solution/Sales/types.d.ts +67 -0
  138. package/lib/solution/Sales/types.js +35 -0
  139. package/lib/solution/ShopDiscount/index.d.ts +1 -0
  140. package/lib/solution/ShopDiscount/index.js +14 -6
  141. package/lib/solution/ShopDiscount/types.d.ts +6 -0
  142. package/lib/solution/ShopDiscount/utils.d.ts +9 -0
  143. package/lib/solution/ShopDiscount/utils.js +6 -10
  144. package/lib/solution/index.d.ts +2 -1
  145. package/lib/solution/index.js +4 -2
  146. package/lib/types/index.d.ts +5 -0
  147. package/package.json +1 -1
@@ -13,4 +13,10 @@ export type { QuotationState, QuotationData, QuotationProductPrice } from './quo
13
13
  export { QuotationHooks } from './quotation/types';
14
14
  export { ScheduleModuleEx } from './schedule';
15
15
  export type { ScheduleState, ScheduleItem } from './schedule/types';
16
+ export { OrderModule } from './order';
17
+ export type { OrderState, OrderData, OrderId, OrderSummary, OrderBookingItem, OrderProductLineItem, OrderPaymentItem, OrderSurchargeItem, OrderProductDiscountItem, OrderWithoutBookings, BookingData, OrderFilters, BookingFilters, OrderFilterResult, BookingFilterResult, OrderModulePagedResult, } from './order/types';
18
+ export { OrderHooks } from './order/types';
19
+ export { ResourceModule, resourceModule } from './resource';
20
+ export type { ResourceState, ResourceData, ResourceId, ResourceBooking, ResourcePageQuery, ResourcePageResult, QueryOptions, ScheduleEventResource, } from './resource';
21
+ export { ResourceHooks } from './resource';
16
22
  export type { RouteHandler, HttpMethod, RouteDefinition, Router, ModuleRegistryConfig, } from '../types';
@@ -21,11 +21,16 @@ var modules_exports = {};
21
21
  __export(modules_exports, {
22
22
  MenuHooks: () => import_types2.MenuHooks,
23
23
  MenuModule: () => import_menu.MenuModule,
24
+ OrderHooks: () => import_types4.OrderHooks,
25
+ OrderModule: () => import_order.OrderModule,
24
26
  ProductsHooks: () => import_types.ProductsHooks,
25
27
  ProductsModule: () => import_products.ProductsModule,
26
28
  QuotationHooks: () => import_types3.QuotationHooks,
27
29
  QuotationModule: () => import_quotation.QuotationModule,
28
- ScheduleModuleEx: () => import_schedule.ScheduleModuleEx
30
+ ResourceHooks: () => import_resource2.ResourceHooks,
31
+ ResourceModule: () => import_resource.ResourceModule,
32
+ ScheduleModuleEx: () => import_schedule.ScheduleModuleEx,
33
+ resourceModule: () => import_resource.resourceModule
29
34
  });
30
35
  module.exports = __toCommonJS(modules_exports);
31
36
  var import_products = require("./products");
@@ -35,13 +40,22 @@ var import_types2 = require("./menu/types");
35
40
  var import_quotation = require("./quotation");
36
41
  var import_types3 = require("./quotation/types");
37
42
  var import_schedule = require("./schedule");
43
+ var import_order = require("./order");
44
+ var import_types4 = require("./order/types");
45
+ var import_resource = require("./resource");
46
+ var import_resource2 = require("./resource");
38
47
  // Annotate the CommonJS export names for ESM import in node:
39
48
  0 && (module.exports = {
40
49
  MenuHooks,
41
50
  MenuModule,
51
+ OrderHooks,
52
+ OrderModule,
42
53
  ProductsHooks,
43
54
  ProductsModule,
44
55
  QuotationHooks,
45
56
  QuotationModule,
46
- ScheduleModuleEx
57
+ ResourceHooks,
58
+ ResourceModule,
59
+ ScheduleModuleEx,
60
+ resourceModule
47
61
  });
@@ -11,6 +11,7 @@ export declare class MenuModule extends BaseModule implements Module {
11
11
  private request;
12
12
  private store;
13
13
  private dbManager;
14
+ private logger;
14
15
  constructor(name?: string, version?: string);
15
16
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
16
17
  /**
@@ -60,4 +61,22 @@ export declare class MenuModule extends BaseModule implements Module {
60
61
  * 返回该模块需要注册的 API 路由
61
62
  */
62
63
  getRoutes(): RouteDefinition[];
64
+ /**
65
+ * 记录信息日志
66
+ * @param title 日志标题
67
+ * @param metadata 日志元数据
68
+ */
69
+ private logInfo;
70
+ /**
71
+ * 记录警告日志
72
+ * @param title 日志标题
73
+ * @param metadata 日志元数据
74
+ */
75
+ private logWarning;
76
+ /**
77
+ * 记录错误日志
78
+ * @param title 日志标题
79
+ * @param metadata 日志元数据
80
+ */
81
+ private logError;
63
82
  }
@@ -27,7 +27,7 @@ var import_BaseModule = require("../../../modules/BaseModule");
27
27
  var import_types = require("./types");
28
28
  var INDEXDB_STORE_NAME = "menu";
29
29
  var MenuModule = class extends import_BaseModule.BaseModule {
30
- // IndexDBManager 实例
30
+ // LoggerManager 实例
31
31
  constructor(name, version) {
32
32
  super(name, version);
33
33
  this.defaultName = "menu";
@@ -53,18 +53,26 @@ var MenuModule = class extends import_BaseModule.BaseModule {
53
53
  if (appPlugin) {
54
54
  const app = appPlugin.getApp();
55
55
  this.dbManager = app.dbManager;
56
+ this.logger = app.logger;
56
57
  if (this.dbManager) {
57
58
  console.log("[Menu] IndexDB Manager 已初始化");
58
59
  } else {
59
60
  console.warn("[Menu] IndexDB Manager 未找到");
60
61
  }
61
62
  }
63
+ this.logInfo("模块初始化完成", {
64
+ hasDbManager: !!this.dbManager,
65
+ hasLogger: !!this.logger,
66
+ initialMenuCount: this.store.menuList.length
67
+ });
62
68
  }
63
69
  /**
64
70
  * 加载餐牌列表(从服务器)
65
71
  */
66
72
  async loadMenuList() {
67
73
  var _a;
74
+ this.logInfo("开始从服务器加载餐牌列表");
75
+ const startTime = Date.now();
68
76
  try {
69
77
  const response = await this.request.get(
70
78
  `/form/data/v1`,
@@ -73,14 +81,25 @@ var MenuModule = class extends import_BaseModule.BaseModule {
73
81
  num: 999,
74
82
  code: "menu_list"
75
83
  },
76
- { useCache: true }
84
+ { cache: void 0 }
77
85
  );
78
86
  const menuList = ((_a = response == null ? void 0 : response.data) == null ? void 0 : _a.list) || [];
87
+ const duration = Date.now() - startTime;
88
+ this.logInfo("从服务器加载餐牌列表成功", {
89
+ menuCount: menuList.length,
90
+ duration: `${duration}ms`
91
+ });
79
92
  await this.saveMenuToIndexDB(menuList);
80
93
  await this.setMenuList(menuList);
81
94
  return menuList;
82
95
  } catch (error) {
96
+ const duration = Date.now() - startTime;
97
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
98
  console.error("[Menu] 加载餐牌数据失败:", error);
99
+ this.logError("从服务器加载餐牌列表失败", {
100
+ duration: `${duration}ms`,
101
+ error: errorMessage
102
+ });
84
103
  return [];
85
104
  }
86
105
  }
@@ -104,6 +123,7 @@ var MenuModule = class extends import_BaseModule.BaseModule {
104
123
  */
105
124
  getMenuByIds(ids) {
106
125
  if (!ids || ids.length === 0) {
126
+ this.logInfo("getMenuByIds: 未提供有效的 ids", { idsCount: 0 });
107
127
  return [];
108
128
  }
109
129
  const result = [];
@@ -113,6 +133,11 @@ var MenuModule = class extends import_BaseModule.BaseModule {
113
133
  result.push(menu);
114
134
  }
115
135
  }
136
+ this.logInfo("getMenuByIds: 查询完成", {
137
+ requestedCount: ids.length,
138
+ foundCount: result.length,
139
+ notFoundCount: ids.length - result.length
140
+ });
116
141
  return result;
117
142
  }
118
143
  /**
@@ -131,6 +156,9 @@ var MenuModule = class extends import_BaseModule.BaseModule {
131
156
  * 清空缓存
132
157
  */
133
158
  async clear() {
159
+ this.logInfo("开始清空缓存", {
160
+ currentMenuCount: this.store.menuList.length
161
+ });
134
162
  this.store.menuList = [];
135
163
  this.store.map.clear();
136
164
  this.store.currentMenu = void 0;
@@ -138,11 +166,15 @@ var MenuModule = class extends import_BaseModule.BaseModule {
138
166
  try {
139
167
  await this.dbManager.clear(INDEXDB_STORE_NAME);
140
168
  console.log("[Menu] IndexDB 缓存已清空");
169
+ this.logInfo("IndexDB 缓存已清空");
141
170
  } catch (error) {
171
+ const errorMessage = error instanceof Error ? error.message : String(error);
142
172
  console.error("[Menu] 清空 IndexDB 缓存失败:", error);
173
+ this.logError("清空 IndexDB 缓存失败", { error: errorMessage });
143
174
  }
144
175
  }
145
176
  console.log("[Menu] 缓存已清空");
177
+ this.logInfo("缓存清空完成");
146
178
  }
147
179
  /**
148
180
  * 从 IndexDB 加载餐牌数据
@@ -150,13 +182,19 @@ var MenuModule = class extends import_BaseModule.BaseModule {
150
182
  */
151
183
  async loadMenuFromIndexDB() {
152
184
  if (!this.dbManager) {
185
+ this.logWarning("loadMenuFromIndexDB: dbManager 不可用");
153
186
  return [];
154
187
  }
155
188
  try {
156
189
  const menuList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
190
+ this.logInfo("从 IndexDB 加载餐牌数据", {
191
+ menuCount: (menuList == null ? void 0 : menuList.length) ?? 0
192
+ });
157
193
  return menuList || [];
158
194
  } catch (error) {
195
+ const errorMessage = error instanceof Error ? error.message : String(error);
159
196
  console.error("[Menu] 从 IndexDB 读取数据失败:", error);
197
+ this.logError("从 IndexDB 读取数据失败", { error: errorMessage });
160
198
  return [];
161
199
  }
162
200
  }
@@ -166,8 +204,10 @@ var MenuModule = class extends import_BaseModule.BaseModule {
166
204
  */
167
205
  async saveMenuToIndexDB(menuList) {
168
206
  if (!this.dbManager) {
207
+ this.logWarning("saveMenuToIndexDB: dbManager 不可用");
169
208
  return;
170
209
  }
210
+ this.logInfo("开始保存餐牌数据到 IndexDB", { menuCount: menuList.length });
171
211
  try {
172
212
  await this.dbManager.clear(INDEXDB_STORE_NAME);
173
213
  const savePromises = menuList.map(
@@ -175,8 +215,14 @@ var MenuModule = class extends import_BaseModule.BaseModule {
175
215
  );
176
216
  await Promise.all(savePromises);
177
217
  console.log(`[Menu] 已将 ${menuList.length} 条餐牌数据保存到 IndexDB`);
218
+ this.logInfo("餐牌数据已保存到 IndexDB", { menuCount: menuList.length });
178
219
  } catch (error) {
220
+ const errorMessage = error instanceof Error ? error.message : String(error);
179
221
  console.error("[Menu] 保存数据到 IndexDB 失败:", error);
222
+ this.logError("保存数据到 IndexDB 失败", {
223
+ menuCount: menuList.length,
224
+ error: errorMessage
225
+ });
180
226
  }
181
227
  }
182
228
  /**
@@ -185,6 +231,8 @@ var MenuModule = class extends import_BaseModule.BaseModule {
185
231
  */
186
232
  async preload() {
187
233
  console.log("[Menu] 开始预加载数据...");
234
+ const startTime = Date.now();
235
+ this.logInfo("开始预加载数据");
188
236
  try {
189
237
  const cachedData = await this.loadMenuFromIndexDB();
190
238
  if (cachedData && cachedData.length > 0) {
@@ -192,11 +240,20 @@ var MenuModule = class extends import_BaseModule.BaseModule {
192
240
  this.store.menuList = (0, import_lodash_es.cloneDeep)(cachedData);
193
241
  this.syncMenuMap();
194
242
  this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
243
+ const duration = Date.now() - startTime;
244
+ this.logInfo("预加载完成(从 IndexDB)", {
245
+ menuCount: cachedData.length,
246
+ duration: `${duration}ms`,
247
+ source: "IndexDB"
248
+ });
195
249
  return;
196
250
  }
197
251
  console.log("[Menu] IndexDB 中没有缓存数据,从服务器加载...");
252
+ this.logInfo("IndexDB 中没有缓存数据,准备从服务器加载");
198
253
  } catch (error) {
254
+ const errorMessage = error instanceof Error ? error.message : String(error);
199
255
  console.warn("[Menu] 从 IndexDB 加载数据失败:", error);
256
+ this.logWarning("从 IndexDB 加载数据失败,准备从服务器加载", { error: errorMessage });
200
257
  }
201
258
  const menuList = await this.loadMenuList();
202
259
  if (menuList && menuList.length > 0) {
@@ -204,6 +261,17 @@ var MenuModule = class extends import_BaseModule.BaseModule {
204
261
  this.store.menuList = (0, import_lodash_es.cloneDeep)(menuList);
205
262
  this.syncMenuMap();
206
263
  this.core.effects.emit(import_types.MenuHooks.onMenuChanged, this.store.menuList);
264
+ const duration = Date.now() - startTime;
265
+ this.logInfo("预加载完成(从服务器)", {
266
+ menuCount: menuList.length,
267
+ duration: `${duration}ms`,
268
+ source: "Server"
269
+ });
270
+ } else {
271
+ const duration = Date.now() - startTime;
272
+ this.logWarning("预加载完成但未获取到数据", {
273
+ duration: `${duration}ms`
274
+ });
207
275
  }
208
276
  }
209
277
  /**
@@ -227,6 +295,57 @@ var MenuModule = class extends import_BaseModule.BaseModule {
227
295
  }
228
296
  ];
229
297
  }
298
+ /**
299
+ * 记录信息日志
300
+ * @param title 日志标题
301
+ * @param metadata 日志元数据
302
+ */
303
+ logInfo(title, metadata) {
304
+ try {
305
+ if (this.logger) {
306
+ this.logger.addLog({
307
+ type: "info",
308
+ title: `[MenuModule] ${title}`,
309
+ metadata: metadata || {}
310
+ });
311
+ }
312
+ } catch {
313
+ }
314
+ }
315
+ /**
316
+ * 记录警告日志
317
+ * @param title 日志标题
318
+ * @param metadata 日志元数据
319
+ */
320
+ logWarning(title, metadata) {
321
+ try {
322
+ if (this.logger) {
323
+ this.logger.addLog({
324
+ type: "warning",
325
+ title: `[MenuModule] ${title}`,
326
+ metadata: metadata || {}
327
+ });
328
+ }
329
+ } catch {
330
+ }
331
+ }
332
+ /**
333
+ * 记录错误日志
334
+ * @param title 日志标题
335
+ * @param metadata 日志元数据
336
+ */
337
+ logError(title, metadata) {
338
+ try {
339
+ if (this.logger) {
340
+ this.logger.addLog({
341
+ type: "error",
342
+ title: `[MenuModule] ${title}`,
343
+ metadata: metadata || {}
344
+ });
345
+ }
346
+ } catch {
347
+ }
348
+ }
230
349
  };
231
350
  // Annotate the CommonJS export names for ESM import in node:
232
351
  0 && (module.exports = {
@@ -0,0 +1,87 @@
1
+ import { Module, ModuleOptions, PisellCore } from '../../../types';
2
+ import { BaseModule } from '../../../modules/BaseModule';
3
+ import type { RouteDefinition } from '../../types';
4
+ import { OrderData, OrderId } from './types';
5
+ /**
6
+ * Order 模块 - 基础框架
7
+ */
8
+ export declare class OrderModule extends BaseModule implements Module {
9
+ protected defaultName: string;
10
+ protected defaultVersion: string;
11
+ private store;
12
+ private dbManager;
13
+ private orderDataSource;
14
+ private pendingSyncMessages;
15
+ private syncTimer?;
16
+ private readonly ORDER_SYNC_DEBOUNCE_MS;
17
+ private resourceIdIndex;
18
+ private logger;
19
+ private storage;
20
+ constructor(name?: string, version?: string);
21
+ initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
22
+ /**
23
+ * 记录信息日志
24
+ * @param title 日志标题
25
+ * @param metadata 日志元数据
26
+ */
27
+ private logInfo;
28
+ /**
29
+ * 记录错误日志
30
+ * @param title 日志标题
31
+ * @param metadata 日志元数据
32
+ */
33
+ private logError;
34
+ preload(): Promise<void>;
35
+ getOrders(): OrderData[];
36
+ getOrderById(id: OrderId): OrderData | undefined;
37
+ /** 按 order_id 查询(推荐) */
38
+ getOrderByOrderId(orderId: OrderId): OrderData | undefined;
39
+ loadOrdersByServer(): Promise<OrderData[]>;
40
+ getOrdersByResourceId(resourceId: string | number): OrderData[];
41
+ getRoutes(): RouteDefinition[];
42
+ destroy(): void;
43
+ private syncOrdersMap;
44
+ private extractResourceIds;
45
+ private getOrderDateKey;
46
+ /**
47
+ * 初始化 OrderDataSource 实例
48
+ */
49
+ private initOrderDataSource;
50
+ /**
51
+ * 初始化 pubsub 订阅,监听订单变更
52
+ */
53
+ private setupOrderSync;
54
+ /**
55
+ * 处理防抖后的同步消息批次
56
+ *
57
+ * 后端统一发送 change 消息,不再区分新增/编辑/删除。
58
+ * - 单条(id/order_id):若携带 body/data 则直接 upsert 到本地
59
+ * - 批量(ids):通过 HTTP 按 ids 增量拉取,再 merge 到本地
60
+ */
61
+ private processOrderSyncMessages;
62
+ /**
63
+ * 通过 HTTP 按 ids 增量拉取订单
64
+ */
65
+ private fetchOrdersByHttp;
66
+ /**
67
+ * 将增量订单合并到 store
68
+ */
69
+ private mergeOrdersToStore;
70
+ private normalizeOrderSyncMessage;
71
+ private normalizeOrderSyncPayload;
72
+ private uniqueOrderIds;
73
+ private getIdKey;
74
+ /**
75
+ * 当前订单拉取窗口:
76
+ * - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化)
77
+ * - 无法解析时退化为自然日窗口
78
+ */
79
+ private getCurrentPullWindow;
80
+ private hasPulledOrdersToday;
81
+ private markOrderPulledAtNow;
82
+ private getStorageItem;
83
+ private setStorageItem;
84
+ private loadOrdersFromSQLite;
85
+ private saveOrdersToSQLite;
86
+ clear(): Promise<void>;
87
+ }