@pisell/pisellos 2.2.205 → 2.2.207

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 (44) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  2. package/dist/modules/OpenData/index.d.ts +1 -0
  3. package/dist/modules/OpenData/index.js +21 -16
  4. package/dist/modules/Order/index.d.ts +9 -0
  5. package/dist/modules/Order/index.js +230 -145
  6. package/dist/modules/Order/types.d.ts +10 -0
  7. package/dist/modules/Order/utils.js +7 -5
  8. package/dist/server/index.d.ts +136 -0
  9. package/dist/server/index.js +2055 -781
  10. package/dist/server/modules/order/index.d.ts +7 -0
  11. package/dist/server/modules/order/index.js +375 -337
  12. package/dist/server/modules/order/types.d.ts +15 -0
  13. package/dist/server/modules/order/types.js +8 -0
  14. package/dist/server/utils/small-ticket.d.ts +69 -0
  15. package/dist/server/utils/small-ticket.js +528 -0
  16. package/dist/solution/BaseSales/index.d.ts +4 -2
  17. package/dist/solution/BaseSales/index.js +248 -188
  18. package/dist/solution/BookingByStep/index.d.ts +1 -1
  19. package/dist/solution/BookingTicket/index.d.ts +8 -1
  20. package/dist/solution/BookingTicket/index.js +443 -263
  21. package/dist/solution/BookingTicket/types.d.ts +2 -1
  22. package/dist/solution/BookingTicket/types.js +3 -1
  23. package/lib/model/strategy/adapter/promotion/index.js +0 -49
  24. package/lib/modules/OpenData/index.d.ts +1 -0
  25. package/lib/modules/OpenData/index.js +6 -4
  26. package/lib/modules/Order/index.d.ts +9 -0
  27. package/lib/modules/Order/index.js +59 -3
  28. package/lib/modules/Order/types.d.ts +10 -0
  29. package/lib/modules/Order/utils.js +4 -3
  30. package/lib/server/index.d.ts +136 -0
  31. package/lib/server/index.js +823 -50
  32. package/lib/server/modules/order/index.d.ts +7 -0
  33. package/lib/server/modules/order/index.js +21 -7
  34. package/lib/server/modules/order/types.d.ts +15 -0
  35. package/lib/server/utils/small-ticket.d.ts +69 -0
  36. package/lib/server/utils/small-ticket.js +555 -0
  37. package/lib/solution/BaseSales/index.d.ts +4 -2
  38. package/lib/solution/BaseSales/index.js +47 -1
  39. package/lib/solution/BookingByStep/index.d.ts +1 -1
  40. package/lib/solution/BookingTicket/index.d.ts +8 -1
  41. package/lib/solution/BookingTicket/index.js +108 -1
  42. package/lib/solution/BookingTicket/types.d.ts +2 -1
  43. package/lib/solution/BookingTicket/types.js +5 -0
  44. package/package.json +1 -1
@@ -23,6 +23,13 @@ export declare class OrderModule extends BaseModule implements Module {
23
23
  /** 最近一次 SSE 全量拉取完成时间 */
24
24
  private lastServerFullFetchAtMs;
25
25
  constructor(name?: string, version?: string);
26
+ /**
27
+ * 广播订单变更事件,兼容全量列表订阅并额外携带本次变更订单。
28
+ *
29
+ * @example
30
+ * await this.emitOrdersChanged([freshOrder], 'pubsub.bodyUpsert')
31
+ */
32
+ private emitOrdersChanged;
26
33
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
27
34
  /**
28
35
  * 记录信息日志
@@ -63,6 +63,20 @@ var OrderModule = class extends import_BaseModule.BaseModule {
63
63
  /** 最近一次 SSE 全量拉取完成时间 */
64
64
  this.lastServerFullFetchAtMs = 0;
65
65
  }
66
+ /**
67
+ * 广播订单变更事件,兼容全量列表订阅并额外携带本次变更订单。
68
+ *
69
+ * @example
70
+ * await this.emitOrdersChanged([freshOrder], 'pubsub.bodyUpsert')
71
+ */
72
+ async emitOrdersChanged(changedOrders = [], source) {
73
+ const payload = {
74
+ list: this.store.list,
75
+ changedOrders,
76
+ source
77
+ };
78
+ await this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, payload);
79
+ }
66
80
  async initialize(core, options) {
67
81
  var _a, _b;
68
82
  this.core = core;
@@ -119,7 +133,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
119
133
  if (Array.isArray((_b = options == null ? void 0 : options.initialState) == null ? void 0 : _b.list)) {
120
134
  this.store.list = options.initialState.list;
121
135
  this.syncOrdersMap();
122
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
136
+ this.emitOrdersChanged([], "initialState");
123
137
  } else {
124
138
  this.store.list = [];
125
139
  this.store.map = /* @__PURE__ */ new Map();
@@ -336,7 +350,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
336
350
  }
337
351
  this.store.list = (0, import_lodash_es.cloneDeep)(orders);
338
352
  this.syncOrdersMap();
339
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
353
+ this.emitOrdersChanged([], "preload");
340
354
  this.core.effects.emit(import_types.OrderHooks.onOrdersSyncCompleted, null);
341
355
  };
342
356
  getData();
@@ -416,7 +430,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
416
430
  if (orders.length > 0) {
417
431
  this.store.list = (0, import_lodash_es.cloneDeep)(orders);
418
432
  this.syncOrdersMap();
419
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
433
+ this.emitOrdersChanged([], "silentRefresh");
420
434
  await this.core.effects.emit(import_types.OrderHooks.onOrdersSyncCompleted, null);
421
435
  this.logInfo("silentRefresh 完成", {
422
436
  orderCount: orders.length,
@@ -470,7 +484,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
470
484
  orderId,
471
485
  storeOrderCountAfter: this.store.list.length
472
486
  });
473
- await this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
487
+ await this.emitOrdersChanged([fresh], "overwriteExistingOrder");
474
488
  return { overwritten: true };
475
489
  }
476
490
  /**
@@ -530,7 +544,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
530
544
  count: patchedOrders.length,
531
545
  storeOrderCountAfter: this.store.list.length
532
546
  });
533
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
547
+ this.emitOrdersChanged(patchedOrders, "upsertPendingSyncOrders");
534
548
  }
535
549
  /**
536
550
  * 通过 SSE 按自定义 query 拉取订单(支持 select/with 精简字段)
@@ -879,7 +893,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
879
893
  uniqueFreshCount,
880
894
  storeOrderCountAfter: this.store.list.length
881
895
  });
882
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
896
+ this.emitOrdersChanged(patchedOrders, source);
883
897
  }
884
898
  normalizeOrderSyncMessage(res) {
885
899
  const data = (res == null ? void 0 : res.data) || res;
@@ -1229,7 +1243,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
1229
1243
  });
1230
1244
  }
1231
1245
  this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, "");
1232
- this.core.effects.emit(import_types.OrderHooks.onOrdersChanged, this.store.list);
1246
+ this.emitOrdersChanged([], "clear");
1233
1247
  }
1234
1248
  };
1235
1249
  // Annotate the CommonJS export names for ESM import in node:
@@ -524,6 +524,21 @@ export interface OrderAblyEventPayload {
524
524
  order_id?: OrderId;
525
525
  timestamp: number;
526
526
  }
527
+ /**
528
+ * 订单变更广播载荷。
529
+ * 用于保留原有全量列表通知能力,同时让订阅方可按 changedOrders 做增量处理。
530
+ *
531
+ * @example
532
+ * const changedOrders = payload.changedOrders
533
+ */
534
+ export interface OrderChangedPayload {
535
+ /** 当前订单 store 全量列表,兼容既有重算列表订阅 */
536
+ list: OrderData[];
537
+ /** 本次明确发生变更的订单;全量刷新等无法确定 delta 的场景可为空 */
538
+ changedOrders: OrderData[];
539
+ /** 触发来源,便于订阅者区分 pubsub / 远端覆盖 / 清空等场景 */
540
+ source?: string;
541
+ }
527
542
  /**
528
543
  * OrderSyncMessage - pubsub 同步消息结构
529
544
  */
@@ -0,0 +1,69 @@
1
+ export interface SmallTicketShopInfo {
2
+ name?: string;
3
+ phone?: string;
4
+ address?: string;
5
+ address_street?: string;
6
+ address_detail?: string;
7
+ city?: string;
8
+ province?: string;
9
+ country?: string;
10
+ zip?: string;
11
+ tax_number?: string;
12
+ tax_title?: string;
13
+ currency_symbol?: string;
14
+ currency_code?: string;
15
+ primary_locale?: string;
16
+ timezone?: string;
17
+ [key: string]: any;
18
+ }
19
+ export interface BuildSmallTicketDataParams {
20
+ order: Record<string, any>;
21
+ shopInfo?: SmallTicketShopInfo | null;
22
+ locales?: string[];
23
+ productMap?: Record<string | number, Record<string, any>>;
24
+ }
25
+ export interface SmallTicketItem {
26
+ item: string;
27
+ value: string;
28
+ size?: number;
29
+ align?: string;
30
+ }
31
+ export interface SmallTicketProduct {
32
+ product_title: string;
33
+ product_quantity: number;
34
+ selling_price: string;
35
+ original_price: string;
36
+ total_original_price: string;
37
+ extension_list: any[];
38
+ options?: Array<{
39
+ name: string;
40
+ value: string;
41
+ }>;
42
+ variant?: string;
43
+ combinations?: any[];
44
+ }
45
+ export interface SmallTicketLocaleData {
46
+ base_data: Record<string, any>;
47
+ products: SmallTicketProduct[];
48
+ fees: {
49
+ fees: SmallTicketItem[];
50
+ countFee: Record<string, any>;
51
+ };
52
+ customer: SmallTicketItem[];
53
+ appointment: SmallTicketItem[];
54
+ delivery: SmallTicketItem[];
55
+ resources: Array<{
56
+ id: string | number;
57
+ code: string;
58
+ title: string;
59
+ form_title: string;
60
+ }>;
61
+ payment_data: SmallTicketItem[][];
62
+ tickets: any[];
63
+ source_shop: any[];
64
+ refund_data: any[];
65
+ expend_data: any[];
66
+ }
67
+ export type SmallTicketData = Record<string, SmallTicketLocaleData>;
68
+ export declare function buildSmallTicketData(params: BuildSmallTicketDataParams): SmallTicketData;
69
+ export declare function hasSmallTicketData(value: any): boolean;