@pisell/pisellos 2.3.62 → 2.3.64

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 (56) hide show
  1. package/dist/core/index.d.ts +0 -7
  2. package/dist/core/index.js +65 -109
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -1
  4. package/dist/model/strategy/adapter/walletPass/utils.js +0 -2
  5. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +7 -3
  6. package/dist/modules/Customer/index.d.ts +4 -0
  7. package/dist/modules/Customer/index.js +91 -59
  8. package/dist/modules/Customer/types.d.ts +2 -0
  9. package/dist/modules/Order/index.js +4 -1
  10. package/dist/modules/Order/utils.js +36 -30
  11. package/dist/modules/Payment/walletpass.js +4 -5
  12. package/dist/modules/Quotation/index.d.ts +0 -6
  13. package/dist/modules/Quotation/index.js +19 -75
  14. package/dist/plugins/request.d.ts +0 -1
  15. package/dist/server/index.d.ts +2 -6
  16. package/dist/server/index.js +92 -133
  17. package/dist/server/modules/floor-plan/index.d.ts +0 -4
  18. package/dist/server/modules/floor-plan/index.js +98 -240
  19. package/dist/server/modules/menu/index.js +23 -48
  20. package/dist/server/modules/order/index.d.ts +8 -12
  21. package/dist/server/modules/order/index.js +348 -342
  22. package/dist/server/modules/products/index.d.ts +2 -8
  23. package/dist/server/modules/products/index.js +75 -167
  24. package/dist/server/modules/resource/index.js +13 -21
  25. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +6 -3
  26. package/dist/solution/BookingTicket/index.d.ts +2 -0
  27. package/dist/solution/BookingTicket/index.js +34 -10
  28. package/lib/core/index.d.ts +0 -7
  29. package/lib/core/index.js +2 -20
  30. package/lib/model/strategy/adapter/promotion/index.js +0 -51
  31. package/lib/model/strategy/adapter/walletPass/evaluator.js +0 -1
  32. package/lib/model/strategy/adapter/walletPass/utils.js +0 -1
  33. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +3 -0
  34. package/lib/modules/Customer/index.d.ts +4 -0
  35. package/lib/modules/Customer/index.js +11 -0
  36. package/lib/modules/Customer/types.d.ts +2 -0
  37. package/lib/modules/Order/index.js +3 -2
  38. package/lib/modules/Order/utils.js +3 -0
  39. package/lib/modules/Payment/walletpass.js +0 -1
  40. package/lib/modules/Quotation/index.d.ts +0 -6
  41. package/lib/modules/Quotation/index.js +5 -49
  42. package/lib/plugins/request.d.ts +0 -1
  43. package/lib/server/index.d.ts +2 -6
  44. package/lib/server/index.js +12 -34
  45. package/lib/server/modules/floor-plan/index.d.ts +0 -4
  46. package/lib/server/modules/floor-plan/index.js +6 -54
  47. package/lib/server/modules/menu/index.js +5 -31
  48. package/lib/server/modules/order/index.d.ts +8 -12
  49. package/lib/server/modules/order/index.js +94 -145
  50. package/lib/server/modules/products/index.d.ts +2 -8
  51. package/lib/server/modules/products/index.js +24 -97
  52. package/lib/server/modules/resource/index.js +2 -7
  53. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +1 -0
  54. package/lib/solution/BookingTicket/index.d.ts +2 -0
  55. package/lib/solution/BookingTicket/index.js +18 -2
  56. package/package.json +1 -1
@@ -12,15 +12,8 @@ declare class PisellOSCore implements PisellCore {
12
12
  context: BusinessContext;
13
13
  server: any;
14
14
  serverOptions?: ServerOptions;
15
- private serverModulePromise?;
16
15
  constructor(options?: PisellOSOptions);
17
16
  private initialize;
18
- /**
19
- * 仅预加载 Server 模块代码,不创建实例、不注册模块、不请求业务数据。
20
- * 导入失败会清空 Promise,正式 initializeServer 时仍可重新尝试。
21
- */
22
- preloadServerModule(): Promise<void>;
23
- private loadServerModule;
24
17
  /**
25
18
  * 初始化 Server(公开方法,需要外部显式调用并等待)
26
19
  * Server 配置从构造函数传入的 options.server 中获取
@@ -24,6 +24,8 @@ import { EffectsManager } from "../effects";
24
24
  * pisell OS 核心实现
25
25
  */
26
26
  var PisellOSCore = /*#__PURE__*/function () {
27
+ // 保存 Server 配置
28
+
27
29
  function PisellOSCore(options) {
28
30
  _classCallCheck(this, PisellOSCore);
29
31
  _defineProperty(this, "plugins", new Map());
@@ -35,8 +37,6 @@ var PisellOSCore = /*#__PURE__*/function () {
35
37
  _defineProperty(this, "server", void 0);
36
38
  // Server 实例
37
39
  _defineProperty(this, "serverOptions", void 0);
38
- // 保存 Server 配置
39
- _defineProperty(this, "serverModulePromise", void 0);
40
40
  this.debug = (options === null || options === void 0 ? void 0 : options.debug) || false;
41
41
  this.context = (options === null || options === void 0 ? void 0 : options.context) || {};
42
42
 
@@ -45,7 +45,6 @@ var PisellOSCore = /*#__PURE__*/function () {
45
45
  this.serverOptions = options.server;
46
46
  }
47
47
  this.initialize(options);
48
- console.log('constructor123456');
49
48
  }
50
49
  _createClass(PisellOSCore, [{
51
50
  key: "initialize",
@@ -64,49 +63,6 @@ var PisellOSCore = /*#__PURE__*/function () {
64
63
  this.log('[PisellOS] 核心初始化完成');
65
64
  }
66
65
 
67
- /**
68
- * 仅预加载 Server 模块代码,不创建实例、不注册模块、不请求业务数据。
69
- * 导入失败会清空 Promise,正式 initializeServer 时仍可重新尝试。
70
- */
71
- }, {
72
- key: "preloadServerModule",
73
- value: (function () {
74
- var _preloadServerModule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
75
- return _regeneratorRuntime().wrap(function _callee$(_context) {
76
- while (1) switch (_context.prev = _context.next) {
77
- case 0:
78
- if (!(this.server || !this.serverOptions)) {
79
- _context.next = 2;
80
- break;
81
- }
82
- return _context.abrupt("return");
83
- case 2:
84
- _context.next = 4;
85
- return this.loadServerModule();
86
- case 4:
87
- case "end":
88
- return _context.stop();
89
- }
90
- }, _callee, this);
91
- }));
92
- function preloadServerModule() {
93
- return _preloadServerModule.apply(this, arguments);
94
- }
95
- return preloadServerModule;
96
- }())
97
- }, {
98
- key: "loadServerModule",
99
- value: function loadServerModule() {
100
- var _this2 = this;
101
- if (!this.serverModulePromise) {
102
- this.serverModulePromise = import("../server").catch(function (error) {
103
- _this2.serverModulePromise = undefined;
104
- throw error;
105
- });
106
- }
107
- return this.serverModulePromise;
108
- }
109
-
110
66
  /**
111
67
  * 初始化 Server(公开方法,需要外部显式调用并等待)
112
68
  * Server 配置从构造函数传入的 options.server 中获取
@@ -114,57 +70,57 @@ var PisellOSCore = /*#__PURE__*/function () {
114
70
  }, {
115
71
  key: "initializeServer",
116
72
  value: (function () {
117
- var _initializeServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(options) {
73
+ var _initializeServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
118
74
  var ServerModule, Server;
119
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
120
- while (1) switch (_context2.prev = _context2.next) {
75
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
76
+ while (1) switch (_context.prev = _context.next) {
121
77
  case 0:
122
78
  if (!this.server) {
123
- _context2.next = 3;
79
+ _context.next = 3;
124
80
  break;
125
81
  }
126
82
  this.log('Server 已经初始化,跳过重复初始化', 'warn');
127
- return _context2.abrupt("return");
83
+ return _context.abrupt("return");
128
84
  case 3:
129
85
  if (this.serverOptions) {
130
- _context2.next = 6;
86
+ _context.next = 6;
131
87
  break;
132
88
  }
133
89
  this.log('未提供 Server 配置,无法初始化', 'warn');
134
- return _context2.abrupt("return");
90
+ return _context.abrupt("return");
135
91
  case 6:
136
- _context2.prev = 6;
137
- _context2.next = 9;
138
- return this.loadServerModule();
92
+ _context.prev = 6;
93
+ _context.next = 9;
94
+ return import("../server");
139
95
  case 9:
140
- ServerModule = _context2.sent;
96
+ ServerModule = _context.sent;
141
97
  Server = ServerModule.default; // 创建 Server 实例
142
98
  this.server = new Server(this);
143
99
  this.log('Server 实例已创建');
144
100
 
145
101
  // 初始化模块并预加载数据
146
102
  if (!this.serverOptions.modules) {
147
- _context2.next = 16;
103
+ _context.next = 16;
148
104
  break;
149
105
  }
150
- _context2.next = 16;
106
+ _context.next = 16;
151
107
  return this.server.initialize(this.serverOptions.modules, this.serverOptions.autoInitData !== false, options);
152
108
  case 16:
153
109
  console.log('[PisellOS] ✅ Server 初始化完成,所有数据已预加载');
154
110
  this.log('[PisellOS] Server 初始化完成');
155
- _context2.next = 25;
111
+ _context.next = 25;
156
112
  break;
157
113
  case 20:
158
- _context2.prev = 20;
159
- _context2.t0 = _context2["catch"](6);
160
- console.error('[PisellOS] ❌ Server 初始化失败:', _context2.t0);
161
- this.log("Server \u521D\u59CB\u5316\u5931\u8D25: ".concat(_context2.t0), 'error');
162
- throw _context2.t0;
114
+ _context.prev = 20;
115
+ _context.t0 = _context["catch"](6);
116
+ console.error('[PisellOS] ❌ Server 初始化失败:', _context.t0);
117
+ this.log("Server \u521D\u59CB\u5316\u5931\u8D25: ".concat(_context.t0), 'error');
118
+ throw _context.t0;
163
119
  case 25:
164
120
  case "end":
165
- return _context2.stop();
121
+ return _context.stop();
166
122
  }
167
- }, _callee2, this, [[6, 20]]);
123
+ }, _callee, this, [[6, 20]]);
168
124
  }));
169
125
  function initializeServer(_x) {
170
126
  return _initializeServer.apply(this, arguments);
@@ -197,7 +153,7 @@ var PisellOSCore = /*#__PURE__*/function () {
197
153
  }, {
198
154
  key: "registerPlugin",
199
155
  value: function registerPlugin(plugin, options) {
200
- var _this3 = this;
156
+ var _this2 = this;
201
157
  if (this.plugins.has(plugin.name)) {
202
158
  this.log("\u63D2\u4EF6 ".concat(plugin.name, " \u5DF2\u7ECF\u6CE8\u518C\u8FC7\uFF0C\u5C06\u88AB\u8986\u76D6"), 'warn');
203
159
  }
@@ -225,7 +181,7 @@ var PisellOSCore = /*#__PURE__*/function () {
225
181
  var result = plugin.initialize();
226
182
  if (result instanceof Promise) {
227
183
  result.catch(function (err) {
228
- _this3.log("\u63D2\u4EF6 ".concat(plugin.name, " \u521D\u59CB\u5316\u5931\u8D25: ").concat(err.message), 'error');
184
+ _this2.log("\u63D2\u4EF6 ".concat(plugin.name, " \u521D\u59CB\u5316\u5931\u8D25: ").concat(err.message), 'error');
229
185
  throw err;
230
186
  });
231
187
  }
@@ -251,7 +207,7 @@ var PisellOSCore = /*#__PURE__*/function () {
251
207
  }, {
252
208
  key: "registerModule",
253
209
  value: function registerModule(module, options) {
254
- var _this4 = this;
210
+ var _this3 = this;
255
211
  if (this.modules.has(module.name)) {
256
212
  this.log("\u6A21\u5757 ".concat(module.name, " \u5DF2\u7ECF\u6CE8\u518C\u8FC7\uFF0C\u5C06\u88AB\u8986\u76D6"), 'warn');
257
213
  }
@@ -294,7 +250,7 @@ var PisellOSCore = /*#__PURE__*/function () {
294
250
  // 预先给模块初始化值系统
295
251
  var _createStore = createStore((options === null || options === void 0 ? void 0 : options.initialState) || {}, module.name, function (path, value) {
296
252
  console.log('core 检测到模块值更新', module.name, path, value);
297
- _this4.effects.emit("".concat(module.name, ":changed"), {
253
+ _this3.effects.emit("".concat(module.name, ":changed"), {
298
254
  path: path,
299
255
  value: value
300
256
  });
@@ -309,7 +265,7 @@ var PisellOSCore = /*#__PURE__*/function () {
309
265
  }, options));
310
266
  if (result instanceof Promise) {
311
267
  result.catch(function (err) {
312
- _this4.log("\u6A21\u5757 ".concat(module.name, " \u521D\u59CB\u5316\u5931\u8D25: ").concat(err.message), 'error');
268
+ _this3.log("\u6A21\u5757 ".concat(module.name, " \u521D\u59CB\u5316\u5931\u8D25: ").concat(err.message), 'error');
313
269
  throw err;
314
270
  });
315
271
  }
@@ -354,100 +310,100 @@ var PisellOSCore = /*#__PURE__*/function () {
354
310
  }, {
355
311
  key: "destroy",
356
312
  value: function () {
357
- var _destroy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
313
+ var _destroy = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
358
314
  var _iterator4, _step4, _step4$value, name, module, _iterator5, _step5, _step5$value, _name, plugin;
359
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
360
- while (1) switch (_context3.prev = _context3.next) {
315
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
316
+ while (1) switch (_context2.prev = _context2.next) {
361
317
  case 0:
362
318
  // 先销毁模块
363
319
  _iterator4 = _createForOfIteratorHelper(this.modules.entries());
364
- _context3.prev = 1;
320
+ _context2.prev = 1;
365
321
  _iterator4.s();
366
322
  case 3:
367
323
  if ((_step4 = _iterator4.n()).done) {
368
- _context3.next = 17;
324
+ _context2.next = 17;
369
325
  break;
370
326
  }
371
327
  _step4$value = _slicedToArray(_step4.value, 2), name = _step4$value[0], module = _step4$value[1];
372
328
  if (!module.destroy) {
373
- _context3.next = 15;
329
+ _context2.next = 15;
374
330
  break;
375
331
  }
376
- _context3.prev = 6;
377
- _context3.next = 9;
332
+ _context2.prev = 6;
333
+ _context2.next = 9;
378
334
  return Promise.resolve(module.destroy());
379
335
  case 9:
380
336
  this.log("\u6A21\u5757 ".concat(name, " \u5DF2\u9500\u6BC1"));
381
- _context3.next = 15;
337
+ _context2.next = 15;
382
338
  break;
383
339
  case 12:
384
- _context3.prev = 12;
385
- _context3.t0 = _context3["catch"](6);
386
- this.log("\u9500\u6BC1\u6A21\u5757 ".concat(name, " \u65F6\u51FA\u9519: ").concat(_context3.t0), 'error');
340
+ _context2.prev = 12;
341
+ _context2.t0 = _context2["catch"](6);
342
+ this.log("\u9500\u6BC1\u6A21\u5757 ".concat(name, " \u65F6\u51FA\u9519: ").concat(_context2.t0), 'error');
387
343
  case 15:
388
- _context3.next = 3;
344
+ _context2.next = 3;
389
345
  break;
390
346
  case 17:
391
- _context3.next = 22;
347
+ _context2.next = 22;
392
348
  break;
393
349
  case 19:
394
- _context3.prev = 19;
395
- _context3.t1 = _context3["catch"](1);
396
- _iterator4.e(_context3.t1);
350
+ _context2.prev = 19;
351
+ _context2.t1 = _context2["catch"](1);
352
+ _iterator4.e(_context2.t1);
397
353
  case 22:
398
- _context3.prev = 22;
354
+ _context2.prev = 22;
399
355
  _iterator4.f();
400
- return _context3.finish(22);
356
+ return _context2.finish(22);
401
357
  case 25:
402
358
  this.modules.clear();
403
359
 
404
360
  // 再销毁插件
405
361
  _iterator5 = _createForOfIteratorHelper(this.plugins.entries());
406
- _context3.prev = 27;
362
+ _context2.prev = 27;
407
363
  _iterator5.s();
408
364
  case 29:
409
365
  if ((_step5 = _iterator5.n()).done) {
410
- _context3.next = 43;
366
+ _context2.next = 43;
411
367
  break;
412
368
  }
413
369
  _step5$value = _slicedToArray(_step5.value, 2), _name = _step5$value[0], plugin = _step5$value[1];
414
370
  if (!plugin.destroy) {
415
- _context3.next = 41;
371
+ _context2.next = 41;
416
372
  break;
417
373
  }
418
- _context3.prev = 32;
419
- _context3.next = 35;
374
+ _context2.prev = 32;
375
+ _context2.next = 35;
420
376
  return Promise.resolve(plugin.destroy());
421
377
  case 35:
422
378
  this.log("\u63D2\u4EF6 ".concat(_name, " \u5DF2\u9500\u6BC1"));
423
- _context3.next = 41;
379
+ _context2.next = 41;
424
380
  break;
425
381
  case 38:
426
- _context3.prev = 38;
427
- _context3.t2 = _context3["catch"](32);
428
- this.log("\u9500\u6BC1\u63D2\u4EF6 ".concat(_name, " \u65F6\u51FA\u9519: ").concat(_context3.t2), 'error');
382
+ _context2.prev = 38;
383
+ _context2.t2 = _context2["catch"](32);
384
+ this.log("\u9500\u6BC1\u63D2\u4EF6 ".concat(_name, " \u65F6\u51FA\u9519: ").concat(_context2.t2), 'error');
429
385
  case 41:
430
- _context3.next = 29;
386
+ _context2.next = 29;
431
387
  break;
432
388
  case 43:
433
- _context3.next = 48;
389
+ _context2.next = 48;
434
390
  break;
435
391
  case 45:
436
- _context3.prev = 45;
437
- _context3.t3 = _context3["catch"](27);
438
- _iterator5.e(_context3.t3);
392
+ _context2.prev = 45;
393
+ _context2.t3 = _context2["catch"](27);
394
+ _iterator5.e(_context2.t3);
439
395
  case 48:
440
- _context3.prev = 48;
396
+ _context2.prev = 48;
441
397
  _iterator5.f();
442
- return _context3.finish(48);
398
+ return _context2.finish(48);
443
399
  case 51:
444
400
  this.plugins.clear();
445
401
  this.log('PisellOS 核心已销毁');
446
402
  case 53:
447
403
  case "end":
448
- return _context3.stop();
404
+ return _context2.stop();
449
405
  }
450
- }, _callee3, this, [[1, 19, 22, 25], [6, 12], [27, 45, 48, 51], [32, 38]]);
406
+ }, _callee2, this, [[1, 19, 22, 25], [6, 12], [27, 45, 48, 51], [32, 38]]);
451
407
  }));
452
408
  function destroy() {
453
409
  return _destroy.apply(this, arguments);
@@ -505,7 +505,6 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
505
505
  }, {
506
506
  key: "calculateApplicableProducts",
507
507
  value: function calculateApplicableProducts(products, applicableProductIds, deductTaxAndFee) {
508
- console.log(products, 'products1234');
509
508
  var total = 0;
510
509
  var count = 0;
511
510
 
@@ -189,8 +189,6 @@ var getApplicableProducts = function getApplicableProducts(voucher, productsData
189
189
  * @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status
190
190
  */
191
191
  export function processVouchers(applicableVouchers, orderTotalAmount, products) {
192
- console.log(products, 'products123');
193
-
194
192
  // 拆分商品数据,同时维护含税和不含税两个金额池
195
193
  // remainingAmountWithTax: 含税费的剩余可抵扣金额
196
194
  // remainingAmountPure: 纯商品金额(不含税费)的剩余可抵扣金额
@@ -192,7 +192,7 @@ function synthesizeProductResourceFromBooking(booking) {
192
192
  * 调用方须传入与该行关联的 booking(通常 bookings[].product_uid === product.metadata.unique_identification_number)。
193
193
  */
194
194
  export function buildCacheItemFromOrderLine(input) {
195
- var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$product_vari, _product$num, _ref11, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref12, _extension_type, _booking$product2, _booking$product3, _price, _product$product_sku, _product$order_detail, _ref13, _booking$id;
195
+ var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$bundle_edit, _product$product_vari, _product$num, _ref11, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref12, _extension_type, _booking$product2, _booking$product3, _price, _product$product_sku, _product$order_detail, _ref13, _booking$id;
196
196
  var product = input.product,
197
197
  booking = input.booking,
198
198
  sourceProduct = input.sourceProduct;
@@ -210,12 +210,14 @@ export function buildCacheItemFromOrderLine(input) {
210
210
  var productTitle = resolveProductTitle(product, booking, sourceProduct);
211
211
  var productCover = resolveProductCover(product, booking, sourceProduct);
212
212
  var productOptionString = buildProductOptionStringFromOrderLine(product);
213
+ var hasBundle = Array.isArray(product.product_bundle) && product.product_bundle.length > 0;
214
+ var bundleEdit = (_product$bundle_edit = product.bundle_edit) !== null && _product$bundle_edit !== void 0 ? _product$bundle_edit : hasBundle ? 0 : undefined;
213
215
  var other = {
214
216
  product_variant_id: (_product$product_vari = product.product_variant_id) !== null && _product$product_vari !== void 0 ? _product$product_vari : 0,
215
217
  option: getProductSkuOptions(product),
216
218
  bundle: mapOrderBundleToOtherBundle(Array.isArray(product.product_bundle) ? product.product_bundle : [])
217
219
  };
218
- var extend = _objectSpread({
220
+ var extend = _objectSpread(_objectSpread({
219
221
  start_date: startDate ? dayjs(startDate) : undefined,
220
222
  end_date: endDate ? dayjs(endDate) : undefined,
221
223
  startDate: startDate ? dayjs(startDate) : undefined,
@@ -237,7 +239,9 @@ export function buildCacheItemFromOrderLine(input) {
237
239
  other: other,
238
240
  like_status: booking.like_status || 'common',
239
241
  discount_reason: resolveManualDiscountMessage(product.discount_list, (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.product_discount_reason) || undefined
240
- }, productOptionString ? {
242
+ }, bundleEdit !== undefined ? {
243
+ bundle_edit: bundleEdit
244
+ } : {}), productOptionString ? {
241
245
  product_option_string: productOptionString
242
246
  } : {});
243
247
  var manualDiscount = (product.discount_list || []).find(function (d) {
@@ -44,6 +44,10 @@ export declare class CustomerModule extends BaseModule implements Module, Custom
44
44
  * 用于按 ID 补齐客户等内部查询,避免把临时的 num/searchParams 污染到滚动列表。
45
45
  */
46
46
  queryCustomerList(params?: ShopGetCustomerListParams): Promise<ICustomerListResponse>;
47
+ /**
48
+ * 查询单个客户详情,不写入 customerList / pagination 状态。
49
+ */
50
+ queryCustomerDetail(id: string | number): Promise<ShopCustomer | null>;
47
51
  /**
48
52
  * 获取客户列表
49
53
  * @param params 查询参数