@pisell/pisellos 0.0.327 → 0.0.329
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.
- package/dist/effects/index.d.ts +1 -0
- package/dist/effects/index.js +29 -6
- package/dist/modules/Payment/index.js +56 -46
- package/dist/solution/BookingTicket/index.d.ts +4 -0
- package/dist/solution/BookingTicket/index.js +10 -1
- package/dist/solution/BookingTicket/utils/scan/index.d.ts +4 -0
- package/dist/solution/BookingTicket/utils/scan/index.js +25 -16
- package/dist/solution/Checkout/index.d.ts +46 -1
- package/dist/solution/Checkout/index.js +820 -503
- package/dist/solution/ShopDiscount/index.js +8 -8
- package/dist/types/index.d.ts +1 -0
- package/lib/effects/index.d.ts +1 -0
- package/lib/effects/index.js +13 -0
- package/lib/modules/Payment/index.js +27 -40
- package/lib/solution/BookingTicket/index.d.ts +4 -0
- package/lib/solution/BookingTicket/index.js +6 -0
- package/lib/solution/BookingTicket/utils/scan/index.d.ts +4 -0
- package/lib/solution/BookingTicket/utils/scan/index.js +7 -1
- package/lib/solution/Checkout/index.d.ts +46 -1
- package/lib/solution/Checkout/index.js +258 -63
- package/lib/solution/ShopDiscount/index.js +9 -9
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/effects/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ type UnsubscribeFunction = () => void;
|
|
|
6
6
|
declare class EffectsManager {
|
|
7
7
|
private listeners;
|
|
8
8
|
on(event: string, callback: EffectCallback): UnsubscribeFunction;
|
|
9
|
+
only(event: string, callback: EffectCallback): UnsubscribeFunction;
|
|
9
10
|
off(event: string, callback: EffectCallback): void;
|
|
10
11
|
offByModuleDestroy(module: string): void;
|
|
11
12
|
once(event: string, callback: EffectCallback): UnsubscribeFunction;
|
package/dist/effects/index.js
CHANGED
|
@@ -30,28 +30,51 @@ var EffectsManager = /*#__PURE__*/function () {
|
|
|
30
30
|
_this.off(event, callback);
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
+
|
|
34
|
+
// 设置单例监听器,只能存在一个,新的会替换旧的
|
|
35
|
+
}, {
|
|
36
|
+
key: "only",
|
|
37
|
+
value: function only(event, callback) {
|
|
38
|
+
var _this$listeners$get3,
|
|
39
|
+
_this2 = this;
|
|
40
|
+
// 清除该事件的所有现有监听器
|
|
41
|
+
if (this.listeners.has(event)) {
|
|
42
|
+
var _this$listeners$get2;
|
|
43
|
+
(_this$listeners$get2 = this.listeners.get(event)) === null || _this$listeners$get2 === void 0 || _this$listeners$get2.clear();
|
|
44
|
+
} else {
|
|
45
|
+
this.listeners.set(event, new Set());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// 添加新的监听器
|
|
49
|
+
(_this$listeners$get3 = this.listeners.get(event)) === null || _this$listeners$get3 === void 0 || _this$listeners$get3.add(callback);
|
|
50
|
+
|
|
51
|
+
// 返回取消函数
|
|
52
|
+
return function () {
|
|
53
|
+
_this2.off(event, callback);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
33
56
|
}, {
|
|
34
57
|
key: "off",
|
|
35
58
|
value: function off(event, callback) {
|
|
36
|
-
var _this$listeners$
|
|
37
|
-
(_this$listeners$
|
|
59
|
+
var _this$listeners$get4;
|
|
60
|
+
(_this$listeners$get4 = this.listeners.get(event)) === null || _this$listeners$get4 === void 0 || _this$listeners$get4.delete(callback);
|
|
38
61
|
}
|
|
39
62
|
|
|
40
63
|
// 模块销毁时,删除所有以模块名开头的监听
|
|
41
64
|
}, {
|
|
42
65
|
key: "offByModuleDestroy",
|
|
43
66
|
value: function offByModuleDestroy(module) {
|
|
44
|
-
var
|
|
67
|
+
var _this3 = this;
|
|
45
68
|
Array.from(this.listeners.keys()).forEach(function (item) {
|
|
46
69
|
if (item.startsWith(module)) {
|
|
47
|
-
|
|
70
|
+
_this3.listeners.delete(item);
|
|
48
71
|
}
|
|
49
72
|
});
|
|
50
73
|
}
|
|
51
74
|
}, {
|
|
52
75
|
key: "once",
|
|
53
76
|
value: function once(event, callback) {
|
|
54
|
-
var
|
|
77
|
+
var _this4 = this;
|
|
55
78
|
var wrapper = /*#__PURE__*/function () {
|
|
56
79
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(payload) {
|
|
57
80
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
@@ -60,7 +83,7 @@ var EffectsManager = /*#__PURE__*/function () {
|
|
|
60
83
|
_context.next = 2;
|
|
61
84
|
return callback(payload);
|
|
62
85
|
case 2:
|
|
63
|
-
|
|
86
|
+
_this4.off(event, wrapper);
|
|
64
87
|
case 3:
|
|
65
88
|
case "end":
|
|
66
89
|
return _context.stop();
|
|
@@ -131,6 +131,10 @@ export var PaymentModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
131
131
|
return this.ensurePaymentTables();
|
|
132
132
|
case 14:
|
|
133
133
|
this.registerNetworkHandlers();
|
|
134
|
+
|
|
135
|
+
// // 预连接数据库
|
|
136
|
+
// this.dbManager.connect()
|
|
137
|
+
|
|
134
138
|
console.log('[PaymentModule] 初始化完成');
|
|
135
139
|
this.logInfo('PaymentModule initialized successfully');
|
|
136
140
|
case 17:
|
|
@@ -657,7 +661,8 @@ export var PaymentModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
657
661
|
key: "createPaymentOrderAsync",
|
|
658
662
|
value: (function () {
|
|
659
663
|
var _createPaymentOrderAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(params) {
|
|
660
|
-
var
|
|
664
|
+
var _this3 = this;
|
|
665
|
+
var newOrder, dbAddStartTime, dbAddDuration;
|
|
661
666
|
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
662
667
|
while (1) switch (_context7.prev = _context7.next) {
|
|
663
668
|
case 0:
|
|
@@ -666,41 +671,41 @@ export var PaymentModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
666
671
|
totalAmount: params.total_amount
|
|
667
672
|
});
|
|
668
673
|
_context7.prev = 1;
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
this.logInfo('createPaymentOrderAsync existingOrder', {
|
|
674
|
-
existingOrder: existingOrder
|
|
675
|
-
});
|
|
674
|
+
// 检测是否有重复的 order_id
|
|
675
|
+
// console.time('createLocalOrderAsync: getExistingOrder')
|
|
676
|
+
// const existingOrder = await this.dbManager.get('order', params.order_id);
|
|
677
|
+
// const existingOrders = await this.dbManager.getAll('order');
|
|
676
678
|
// const existingOrder = existingOrders.find(
|
|
677
679
|
// (order: PaymentOrder) => String(order.id) === String(params.order_id),
|
|
678
680
|
// );
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
//
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
//
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
//
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
//
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
681
|
+
// this.logInfo('createPaymentOrderAsync existingOrder', {
|
|
682
|
+
// existingOrder
|
|
683
|
+
// });
|
|
684
|
+
// console.timeEnd('createLocalOrderAsync: getExistingOrder')
|
|
685
|
+
// const existingOrder = existingOrders.find(
|
|
686
|
+
// (order: PaymentOrder) => String(order.id) === String(params.order_id),
|
|
687
|
+
// );
|
|
688
|
+
// if (existingOrder) {
|
|
689
|
+
// // 如果存在相同 order_id 的订单,更新该订单信息
|
|
690
|
+
// this.logInfo(
|
|
691
|
+
// `createPaymentOrderAsync found duplicate order ID: ${params.order_id}, updating existing payment order`,
|
|
692
|
+
// );
|
|
693
|
+
// // const originalOrder = { ...existingOrder };
|
|
694
|
+
// existingOrder.order_info = params.order_info;
|
|
695
|
+
// existingOrder.total_amount = params.total_amount;
|
|
696
|
+
// existingOrder.is_deposit = params.is_deposit || 0;
|
|
697
|
+
// existingOrder.deposit_amount = params.deposit_amount || '0.00';
|
|
698
|
+
// // 重新计算待付金额
|
|
699
|
+
// this.recalculateOrderAmount(existingOrder);
|
|
700
|
+
// // 更新到数据库
|
|
701
|
+
// await this.dbManager.update('order', existingOrder);
|
|
702
|
+
// // 触发更新事件
|
|
703
|
+
// this.core.effects.emit(
|
|
704
|
+
// `${this.name}:onOrderUpdated`,
|
|
705
|
+
// existingOrder,
|
|
706
|
+
// );
|
|
707
|
+
// return existingOrder;
|
|
708
|
+
// } else {
|
|
704
709
|
// 创建新的支付订单
|
|
705
710
|
newOrder = {
|
|
706
711
|
uuid: getUniqueId('pay_order_'),
|
|
@@ -715,32 +720,37 @@ export var PaymentModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
715
720
|
tax_fee: '0.00',
|
|
716
721
|
is_deposit: params.is_deposit || 0,
|
|
717
722
|
deposit_amount: params.deposit_amount || '0.00'
|
|
718
|
-
};
|
|
719
|
-
|
|
723
|
+
}; // 🚀 性能监控:记录数据库添加操作耗时
|
|
724
|
+
dbAddStartTime = Date.now();
|
|
725
|
+
_context7.next = 6;
|
|
720
726
|
return this.dbManager.add('order', newOrder);
|
|
721
|
-
case
|
|
722
|
-
|
|
723
|
-
this.logInfo('
|
|
727
|
+
case 6:
|
|
728
|
+
dbAddDuration = Date.now() - dbAddStartTime;
|
|
729
|
+
this.logInfo('Database add operation completed', {
|
|
730
|
+
operation: 'dbManager.add',
|
|
731
|
+
table: 'order',
|
|
724
732
|
orderUuid: newOrder.uuid,
|
|
725
|
-
orderId: newOrder.
|
|
733
|
+
orderId: newOrder.order_id,
|
|
734
|
+
duration: "".concat(dbAddDuration, "ms"),
|
|
735
|
+
performance: dbAddDuration > 100 ? 'slow' : dbAddDuration > 50 ? 'medium' : 'fast'
|
|
726
736
|
});
|
|
737
|
+
setTimeout(function () {
|
|
738
|
+
_this3.core.effects.emit("".concat(_this3.name, ":onOrderAdded"), newOrder);
|
|
739
|
+
}, 0);
|
|
727
740
|
return _context7.abrupt("return", newOrder);
|
|
728
|
-
case
|
|
729
|
-
_context7.
|
|
730
|
-
break;
|
|
731
|
-
case 28:
|
|
732
|
-
_context7.prev = 28;
|
|
741
|
+
case 12:
|
|
742
|
+
_context7.prev = 12;
|
|
733
743
|
_context7.t0 = _context7["catch"](1);
|
|
734
744
|
console.error('[PaymentModule] 创建支付订单失败', _context7.t0);
|
|
735
745
|
this.logError('createPaymentOrderAsync failed', _context7.t0, {
|
|
736
746
|
orderId: params.order_id
|
|
737
747
|
});
|
|
738
748
|
throw _context7.t0;
|
|
739
|
-
case
|
|
749
|
+
case 17:
|
|
740
750
|
case "end":
|
|
741
751
|
return _context7.stop();
|
|
742
752
|
}
|
|
743
|
-
}, _callee7, this, [[1,
|
|
753
|
+
}, _callee7, this, [[1, 12]]);
|
|
744
754
|
}));
|
|
745
755
|
function createPaymentOrderAsync(_x6) {
|
|
746
756
|
return _createPaymentOrderAsync.apply(this, arguments);
|
|
@@ -22,6 +22,10 @@ export declare class BookingTicketImpl extends BaseModule implements Module {
|
|
|
22
22
|
* @returns 商品列表
|
|
23
23
|
*/
|
|
24
24
|
loadProducts(params?: ILoadProductsParams): Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* 初始化外设扫码结果监听
|
|
27
|
+
*/
|
|
28
|
+
initPeripheralsListener(): void;
|
|
25
29
|
/**
|
|
26
30
|
* 获取商品列表(不加载到模块中)
|
|
27
31
|
* @returns 商品列表
|
|
@@ -170,11 +170,20 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
170
170
|
}
|
|
171
171
|
return loadProducts;
|
|
172
172
|
}()
|
|
173
|
+
/**
|
|
174
|
+
* 初始化外设扫码结果监听
|
|
175
|
+
*/
|
|
176
|
+
)
|
|
177
|
+
}, {
|
|
178
|
+
key: "initPeripheralsListener",
|
|
179
|
+
value: function initPeripheralsListener() {
|
|
180
|
+
this.scan.initPeripheralsListener();
|
|
181
|
+
}
|
|
182
|
+
|
|
173
183
|
/**
|
|
174
184
|
* 获取商品列表(不加载到模块中)
|
|
175
185
|
* @returns 商品列表
|
|
176
186
|
*/
|
|
177
|
-
)
|
|
178
187
|
}, {
|
|
179
188
|
key: "getProducts",
|
|
180
189
|
value: (function () {
|
|
@@ -18,9 +18,6 @@ var ScanResultType = /*#__PURE__*/function (ScanResultType) {
|
|
|
18
18
|
}(ScanResultType || {});
|
|
19
19
|
var Scan = /*#__PURE__*/function () {
|
|
20
20
|
function Scan(solution, watchKey) {
|
|
21
|
-
var _this$solution,
|
|
22
|
-
_this$solution$mountF,
|
|
23
|
-
_this = this;
|
|
24
21
|
_classCallCheck(this, Scan);
|
|
25
22
|
_defineProperty(this, "solution", void 0);
|
|
26
23
|
_defineProperty(this, "watchKey", void 0);
|
|
@@ -28,24 +25,36 @@ var Scan = /*#__PURE__*/function () {
|
|
|
28
25
|
this.solution = solution;
|
|
29
26
|
this.watchKey = watchKey;
|
|
30
27
|
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
var _result = JSON.parse(strVal);
|
|
35
|
-
console.log('nativeScannerResult>>>>>>>', _result);
|
|
36
|
-
_this.handleScan(_result);
|
|
37
|
-
} catch (err) {
|
|
38
|
-
console.error(err);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
28
|
+
// 初始化扫码监听
|
|
29
|
+
this.initPeripheralsListener();
|
|
41
30
|
}
|
|
42
31
|
|
|
43
32
|
/**
|
|
44
|
-
*
|
|
45
|
-
* @param eventKey 事件key
|
|
46
|
-
* @param value 扫码结果
|
|
33
|
+
* 初始化外设扫码结果监听
|
|
47
34
|
*/
|
|
48
35
|
_createClass(Scan, [{
|
|
36
|
+
key: "initPeripheralsListener",
|
|
37
|
+
value: function initPeripheralsListener() {
|
|
38
|
+
var _this$solution,
|
|
39
|
+
_this$solution$mountF,
|
|
40
|
+
_this = this;
|
|
41
|
+
(_this$solution = this.solution) === null || _this$solution === void 0 || (_this$solution = _this$solution.window) === null || _this$solution === void 0 || (_this$solution = _this$solution.interaction) === null || _this$solution === void 0 || (_this$solution = _this$solution.utils) === null || _this$solution === void 0 || (_this$solution$mountF = _this$solution.mountFunction) === null || _this$solution$mountF === void 0 || _this$solution$mountF.call(_this$solution, 'global', 'peripheralsResult', function (strVal) {
|
|
42
|
+
try {
|
|
43
|
+
var _result = JSON.parse(strVal);
|
|
44
|
+
console.log('nativeScannerResult>>>>>>>', _result);
|
|
45
|
+
_this.handleScan(_result);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
console.error(err);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 处理扫码事件
|
|
54
|
+
* @param eventKey 事件key
|
|
55
|
+
* @param value 扫码结果
|
|
56
|
+
*/
|
|
57
|
+
}, {
|
|
49
58
|
key: "handleScan",
|
|
50
59
|
value: function handleScan(result) {
|
|
51
60
|
var lastEnableEventKey = watch.getLastEnableEventKey(this.watchKey);
|
|
@@ -19,6 +19,7 @@ export declare class CheckoutImpl extends BaseModule implements Module, Checkout
|
|
|
19
19
|
private store;
|
|
20
20
|
private otherParams;
|
|
21
21
|
private logger;
|
|
22
|
+
private calculationCache;
|
|
22
23
|
order: OrderModule;
|
|
23
24
|
payment: PaymentModule;
|
|
24
25
|
constructor(name?: string, version?: string);
|
|
@@ -302,16 +303,46 @@ export declare class CheckoutImpl extends BaseModule implements Module, Checkout
|
|
|
302
303
|
* 删除本地 IndexDB 中超过指定天数且已同步到后端的订单数据
|
|
303
304
|
*/
|
|
304
305
|
private cleanupExpiredOrdersAsync;
|
|
306
|
+
/**
|
|
307
|
+
* 清除计算缓存
|
|
308
|
+
*/
|
|
309
|
+
private clearCalculationCache;
|
|
310
|
+
/**
|
|
311
|
+
* 批量获取订单数据(用于性能优化)
|
|
312
|
+
* 一次性获取所有需要的数据,避免重复查询
|
|
313
|
+
*/
|
|
314
|
+
private fetchOrderDataBatch;
|
|
315
|
+
/**
|
|
316
|
+
* 从支付项数组计算已支付金额(纯计算,不查询数据库)
|
|
317
|
+
*/
|
|
318
|
+
private calculatePaidAmountFromItems;
|
|
305
319
|
/**
|
|
306
320
|
* 计算已支付金额(从 Payment 模块获取最新数据)
|
|
321
|
+
*
|
|
322
|
+
* 注意:此方法保持独立性,可以单独调用。
|
|
323
|
+
* 在 updateStateAmountToRemaining 等批量操作中会使用缓存优化。
|
|
307
324
|
*/
|
|
308
325
|
private calculatePaidAmountAsync;
|
|
326
|
+
/**
|
|
327
|
+
* 从订单和支付项计算剩余金额(纯计算,不查询数据库)
|
|
328
|
+
*/
|
|
329
|
+
private calculateRemainingAmountFromData;
|
|
330
|
+
/**
|
|
331
|
+
* 从订单和支付项计算剩余总金额(纯计算,排除定金)
|
|
332
|
+
*/
|
|
333
|
+
private calculateRemainingTotalAmountFromData;
|
|
309
334
|
/**
|
|
310
335
|
* 计算剩余未支付金额(从 Payment 模块获取最新数据)
|
|
336
|
+
*
|
|
337
|
+
* 注意:此方法保持独立性,可以单独调用。
|
|
338
|
+
* 在 updateStateAmountToRemaining 等批量操作中会使用缓存优化。
|
|
311
339
|
*/
|
|
312
340
|
private calculateRemainingAmountAsync;
|
|
313
341
|
/**
|
|
314
342
|
* 计算剩余未支付金额(排除定金计算,始终使用订单总金额)
|
|
343
|
+
*
|
|
344
|
+
* 注意:此方法保持独立性,可以单独调用。
|
|
345
|
+
* 在 updateStateAmountToRemaining 等批量操作中会使用缓存优化。
|
|
315
346
|
*/
|
|
316
347
|
private calculateRemainingTotalAmountAsync;
|
|
317
348
|
/**
|
|
@@ -320,12 +351,24 @@ export declare class CheckoutImpl extends BaseModule implements Module, Checkout
|
|
|
320
351
|
private updateBalanceDueAmount;
|
|
321
352
|
/**
|
|
322
353
|
* 更新 stateAmount 为当前剩余未支付金额
|
|
354
|
+
*
|
|
355
|
+
* 优化版本:批量获取数据,避免重复查询数据库
|
|
323
356
|
*/
|
|
324
357
|
private updateStateAmountToRemaining;
|
|
358
|
+
/**
|
|
359
|
+
* 检查订单支付是否完成(优化版,复用已获取的数据)
|
|
360
|
+
*
|
|
361
|
+
* @param paymentItems 已获取的支付项数据
|
|
362
|
+
* @param remainingAmount 已计算的剩余金额
|
|
363
|
+
*/
|
|
364
|
+
private checkOrderPaymentCompletionOptimized;
|
|
325
365
|
/**
|
|
326
366
|
* 检查订单支付是否完成
|
|
327
367
|
*
|
|
328
368
|
* 当剩余待付款金额 <= 0 时,触发订单支付完成事件
|
|
369
|
+
*
|
|
370
|
+
* 注意:此方法保持独立性,可以单独调用。
|
|
371
|
+
* 在 updateStateAmountToRemaining 中会使用优化版本。
|
|
329
372
|
*/
|
|
330
373
|
private checkOrderPaymentCompletion;
|
|
331
374
|
/**
|
|
@@ -381,6 +424,8 @@ export declare class CheckoutImpl extends BaseModule implements Module, Checkout
|
|
|
381
424
|
* 重置 store 状态
|
|
382
425
|
*
|
|
383
426
|
* 在创建新订单前调用,确保状态完全干净
|
|
427
|
+
*
|
|
428
|
+
* 🚀 性能优化:改为同步方法,事件发射不阻塞主流程
|
|
384
429
|
*/
|
|
385
|
-
private
|
|
430
|
+
private resetStoreState;
|
|
386
431
|
}
|