@pisell/pisellos 2.2.260 → 2.2.261
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/model/strategy/adapter/index.d.ts +0 -4
- package/dist/model/strategy/adapter/index.js +1 -5
- package/dist/model/strategy/adapter/promotion/adapter.d.ts +4 -0
- package/dist/model/strategy/adapter/promotion/adapter.js +23 -0
- package/dist/model/strategy/adapter/promotion/evaluator.d.ts +17 -0
- package/dist/model/strategy/adapter/promotion/evaluator.js +279 -6
- package/dist/model/strategy/adapter/promotion/examples.d.ts +86 -0
- package/dist/model/strategy/adapter/promotion/examples.js +99 -0
- package/dist/model/strategy/adapter/promotion/index.d.ts +1 -1
- package/dist/model/strategy/adapter/promotion/index.js +1 -1
- package/dist/model/strategy/adapter/promotion/type.d.ts +90 -2
- package/dist/model/strategy/adapter/promotion/type.js +45 -0
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +17 -13
- package/dist/modules/Order/index.d.ts +33 -2
- package/dist/modules/Order/index.js +615 -288
- package/dist/modules/Order/types.d.ts +20 -2
- package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
- package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
- package/dist/modules/Order/utils.d.ts +4 -0
- package/dist/modules/Order/utils.js +116 -29
- package/dist/modules/Product/types.d.ts +0 -22
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +2 -4
- package/dist/modules/ProductList/types.d.ts +0 -2
- package/dist/modules/Rules/index.d.ts +4 -3
- package/dist/modules/Rules/index.js +42 -17
- package/dist/modules/Rules/types.d.ts +2 -1
- package/dist/modules/SalesSummary/index.d.ts +7 -3
- package/dist/modules/SalesSummary/index.js +67 -39
- package/dist/modules/SalesSummary/types.d.ts +1 -0
- package/dist/modules/SalesSummary/utils.js +2 -1
- package/dist/modules/SurchargeList/index.d.ts +6 -4
- package/dist/modules/SurchargeList/index.js +62 -39
- package/dist/modules/SurchargeList/types.d.ts +6 -2
- package/dist/server/index.d.ts +3 -50
- package/dist/server/index.js +1075 -1040
- package/dist/server/modules/order/index.d.ts +22 -3
- package/dist/server/modules/order/index.js +398 -316
- package/dist/server/modules/products/index.d.ts +7 -26
- package/dist/server/modules/products/index.js +76 -166
- package/dist/server/modules/products/types.d.ts +0 -14
- package/dist/solution/BaseSales/index.d.ts +22 -2
- package/dist/solution/BaseSales/index.js +995 -701
- package/dist/solution/BaseSales/types.d.ts +1 -0
- package/dist/solution/BaseSales/types.js +2 -1
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +3 -1
- package/dist/solution/BaseSales/utils/cartPromotion.js +74 -29
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +6 -3
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +9 -1
- package/dist/solution/BookingTicket/index.js +153 -6
- package/dist/solution/BookingTicket/types.d.ts +0 -2
- package/dist/solution/ScanOrder/index.js +31 -20
- package/dist/solution/VenueBooking/index.js +30 -19
- package/lib/model/strategy/adapter/index.d.ts +0 -4
- package/lib/model/strategy/adapter/index.js +2 -13
- package/lib/model/strategy/adapter/promotion/adapter.d.ts +4 -0
- package/lib/model/strategy/adapter/promotion/adapter.js +20 -0
- package/lib/model/strategy/adapter/promotion/evaluator.d.ts +17 -0
- package/lib/model/strategy/adapter/promotion/evaluator.js +235 -0
- package/lib/model/strategy/adapter/promotion/examples.d.ts +86 -0
- package/lib/model/strategy/adapter/promotion/examples.js +91 -0
- package/lib/model/strategy/adapter/promotion/index.d.ts +1 -1
- package/lib/model/strategy/adapter/promotion/index.js +2 -0
- package/lib/model/strategy/adapter/promotion/type.d.ts +90 -2
- package/lib/model/strategy/adapter/promotion/type.js +2 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +11 -1
- package/lib/modules/Order/index.d.ts +33 -2
- package/lib/modules/Order/index.js +402 -64
- package/lib/modules/Order/types.d.ts +20 -2
- package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
- package/lib/modules/Order/utils/bundleDiscountHydration.js +139 -0
- package/lib/modules/Order/utils.d.ts +4 -0
- package/lib/modules/Order/utils.js +90 -3
- package/lib/modules/Product/types.d.ts +0 -22
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +2 -4
- package/lib/modules/ProductList/types.d.ts +0 -2
- package/lib/modules/Rules/index.d.ts +4 -3
- package/lib/modules/Rules/index.js +27 -7
- package/lib/modules/Rules/types.d.ts +2 -1
- package/lib/modules/SalesSummary/index.d.ts +7 -3
- package/lib/modules/SalesSummary/index.js +28 -11
- package/lib/modules/SalesSummary/types.d.ts +1 -0
- package/lib/modules/SalesSummary/utils.js +2 -0
- package/lib/modules/SurchargeList/index.d.ts +6 -4
- package/lib/modules/SurchargeList/index.js +41 -21
- package/lib/modules/SurchargeList/types.d.ts +6 -2
- package/lib/server/index.d.ts +3 -50
- package/lib/server/index.js +244 -215
- package/lib/server/modules/order/index.d.ts +22 -3
- package/lib/server/modules/order/index.js +103 -53
- package/lib/server/modules/products/index.d.ts +7 -26
- package/lib/server/modules/products/index.js +35 -113
- package/lib/server/modules/products/types.d.ts +0 -14
- package/lib/solution/BaseSales/index.d.ts +22 -2
- package/lib/solution/BaseSales/index.js +246 -60
- package/lib/solution/BaseSales/types.d.ts +1 -0
- package/lib/solution/BaseSales/types.js +2 -1
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +3 -1
- package/lib/solution/BaseSales/utils/cartPromotion.js +59 -16
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +6 -6
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +9 -1
- package/lib/solution/BookingTicket/index.js +101 -0
- package/lib/solution/BookingTicket/types.d.ts +0 -2
- package/lib/solution/ScanOrder/index.js +8 -0
- package/lib/solution/VenueBooking/index.js +8 -0
- package/package.json +1 -1
- package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +0 -49
- package/dist/model/strategy/adapter/dataVariant/adapter.js +0 -152
- package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -87
- package/dist/model/strategy/adapter/dataVariant/evaluator.js +0 -755
- package/dist/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
- package/dist/model/strategy/adapter/dataVariant/examples.js +0 -282
- package/dist/model/strategy/adapter/dataVariant/index.d.ts +0 -4
- package/dist/model/strategy/adapter/dataVariant/index.js +0 -4
- package/dist/model/strategy/adapter/dataVariant/type.d.ts +0 -146
- package/dist/model/strategy/adapter/dataVariant/type.js +0 -54
- package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +0 -49
- package/lib/model/strategy/adapter/dataVariant/adapter.js +0 -139
- package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -87
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +0 -564
- package/lib/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
- package/lib/model/strategy/adapter/dataVariant/examples.js +0 -295
- package/lib/model/strategy/adapter/dataVariant/index.d.ts +0 -4
- package/lib/model/strategy/adapter/dataVariant/index.js +0 -38
- package/lib/model/strategy/adapter/dataVariant/type.d.ts +0 -146
- package/lib/model/strategy/adapter/dataVariant/type.js +0 -31
|
@@ -49,6 +49,13 @@ var ORDER_SILENT_REFRESH_MIN_INTERVAL_MS = 30000;
|
|
|
49
49
|
/** 视为「业务侧刚写入」的来源,pubsub 回声可跳过 SQLite */
|
|
50
50
|
var ORDER_BUSINESS_WRITE_SOURCES = new Set(['upsertOrdersFromRemote', 'upsertPendingSyncOrders', 'overwriteExistingOrder', 'markOrderSyncedByExternalSaleNumber']);
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* 合并热路径全表去重自检开关:默认关闭。
|
|
54
|
+
* 开启后每次合并会额外对整张 store 做一次 O(n^2) 重复检测并告警,
|
|
55
|
+
* 仅用于排查增量身份索引是否遗漏了重复订单,不应在生产常开。
|
|
56
|
+
*/
|
|
57
|
+
var ORDER_MERGE_SELF_CHECK = false;
|
|
58
|
+
|
|
52
59
|
/**
|
|
53
60
|
* Order 模块 - 基础框架
|
|
54
61
|
*/
|
|
@@ -68,8 +75,6 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
68
75
|
_defineProperty(_assertThisInitialized(_this), "syncTimer", void 0);
|
|
69
76
|
_defineProperty(_assertThisInitialized(_this), "isProcessingSyncBatch", false);
|
|
70
77
|
_defineProperty(_assertThisInitialized(_this), "isIdlePhase", true);
|
|
71
|
-
// Map<resource_id, OrderId[]> 资源到订单的倒排索引
|
|
72
|
-
_defineProperty(_assertThisInitialized(_this), "resourceIdIndex", new Map());
|
|
73
78
|
_defineProperty(_assertThisInitialized(_this), "logger", void 0);
|
|
74
79
|
// LoggerManager 实例
|
|
75
80
|
_defineProperty(_assertThisInitialized(_this), "storage", void 0);
|
|
@@ -443,9 +448,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
443
448
|
var appPlugin = this.core.getPlugin('app');
|
|
444
449
|
var app = appPlugin === null || appPlugin === void 0 ? void 0 : appPlugin.getApp();
|
|
445
450
|
if (app) {
|
|
446
|
-
var _this$store$createdAt;
|
|
447
451
|
var coreData = app.data.store.getStore().getDataByModel('core');
|
|
448
|
-
if (
|
|
452
|
+
if (coreData !== null && coreData !== void 0 && coreData.core) {
|
|
449
453
|
var today = dayjs();
|
|
450
454
|
if (coreData !== null && coreData !== void 0 && coreData.core.operating_day_boundary) {
|
|
451
455
|
var operatingDayBoundary = coreData.core.operating_day_boundary;
|
|
@@ -774,17 +778,6 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
774
778
|
}
|
|
775
779
|
return silentRefresh;
|
|
776
780
|
}())
|
|
777
|
-
}, {
|
|
778
|
-
key: "getOrdersByResourceId",
|
|
779
|
-
value: function getOrdersByResourceId(resourceId) {
|
|
780
|
-
var _this8 = this;
|
|
781
|
-
var ids = this.resourceIdIndex.get(String(resourceId)) || [];
|
|
782
|
-
return ids.map(function (id) {
|
|
783
|
-
return _this8.store.map.get(id);
|
|
784
|
-
}).filter(function (order) {
|
|
785
|
-
return !!order;
|
|
786
|
-
});
|
|
787
|
-
}
|
|
788
781
|
}, {
|
|
789
782
|
key: "normalizeOrderForMemoryList",
|
|
790
783
|
value: function normalizeOrderForMemoryList(order) {
|
|
@@ -808,7 +801,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
808
801
|
key: "overwriteExistingOrder",
|
|
809
802
|
value: (function () {
|
|
810
803
|
var _overwriteExistingOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(fresh) {
|
|
811
|
-
var
|
|
804
|
+
var _this8 = this;
|
|
812
805
|
var orderId, key;
|
|
813
806
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
814
807
|
while (1) switch (_context8.prev = _context8.next) {
|
|
@@ -842,7 +835,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
842
835
|
this.store.list = this.store.list.map(function (order) {
|
|
843
836
|
var id = order === null || order === void 0 ? void 0 : order.order_id;
|
|
844
837
|
if (id === undefined || id === null) return order;
|
|
845
|
-
return
|
|
838
|
+
return _this8.getIdKey(id) === key ? fresh : order;
|
|
846
839
|
});
|
|
847
840
|
this.syncOrdersMap();
|
|
848
841
|
_context8.next = 13;
|
|
@@ -908,7 +901,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
908
901
|
key: "markOrderSyncedByExternalSaleNumber",
|
|
909
902
|
value: function () {
|
|
910
903
|
var _markOrderSyncedByExternalSaleNumber = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(params) {
|
|
911
|
-
var
|
|
904
|
+
var _this9 = this,
|
|
912
905
|
_existing$external_sa,
|
|
913
906
|
_nextOrder$order_id;
|
|
914
907
|
var externalSaleNumber, key, targetIndex, existing, nextOrder, storageKey;
|
|
@@ -929,7 +922,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
929
922
|
targetIndex = this.store.list.findIndex(function (order) {
|
|
930
923
|
var value = order === null || order === void 0 ? void 0 : order.external_sale_number;
|
|
931
924
|
if (value === undefined || value === null || value === '') return false;
|
|
932
|
-
return
|
|
925
|
+
return _this9.getIdKey(value) === key;
|
|
933
926
|
});
|
|
934
927
|
if (!(targetIndex < 0)) {
|
|
935
928
|
_context10.next = 9;
|
|
@@ -986,7 +979,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
986
979
|
key: "upsertPendingSyncOrders",
|
|
987
980
|
value: (function () {
|
|
988
981
|
var _upsertPendingSyncOrders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(pendingOrders) {
|
|
989
|
-
var pendingMap, memoryPendingMap, _iterator4, _step4, order, storageKey, patchedOrders, mergeActions, updatedList,
|
|
982
|
+
var pendingMap, memoryPendingMap, _iterator4, _step4, order, storageKey, patchedOrders, mergeActions, updatedList, identityKeyToIndex, index, _iterator5, _step5, key, _iterator6, _step6, _step6$value, _storageKey, pendingOrder, matchIndex, mergedOrder, insertIndex;
|
|
990
983
|
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
991
984
|
while (1) switch (_context11.prev = _context11.next) {
|
|
992
985
|
case 0:
|
|
@@ -1046,72 +1039,82 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1046
1039
|
});
|
|
1047
1040
|
patchedOrders = _toConsumableArray(pendingMap.values());
|
|
1048
1041
|
mergeActions = {};
|
|
1049
|
-
updatedList = _toConsumableArray(this.store.list);
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1042
|
+
updatedList = _toConsumableArray(this.store.list); // 与 mergeOrdersToStore 一致:基于身份键(field:value)建立索引,把「查找已存在订单」
|
|
1043
|
+
// 从 O(n) 线性扫描降为 O(1),整体复杂度由 O(n^2) 降为 O(n + m)。
|
|
1044
|
+
identityKeyToIndex = new Map();
|
|
1045
|
+
for (index = 0; index < updatedList.length; index += 1) {
|
|
1046
|
+
_iterator5 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(updatedList[index]));
|
|
1047
|
+
try {
|
|
1048
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
1049
|
+
key = _step5.value;
|
|
1050
|
+
// 同一 key 命中多张时保留最靠前的下标,与原 findIndex「取首个匹配」一致
|
|
1051
|
+
if (!identityKeyToIndex.has(key)) identityKeyToIndex.set(key, index);
|
|
1052
|
+
}
|
|
1053
|
+
} catch (err) {
|
|
1054
|
+
_iterator5.e(err);
|
|
1055
|
+
} finally {
|
|
1056
|
+
_iterator5.f();
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
_iterator6 = _createForOfIteratorHelper(memoryPendingMap.entries());
|
|
1060
|
+
_context11.prev = 35;
|
|
1061
|
+
_iterator6.s();
|
|
1062
|
+
case 37:
|
|
1063
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
1064
|
+
_context11.next = 52;
|
|
1056
1065
|
break;
|
|
1057
1066
|
}
|
|
1058
|
-
|
|
1059
|
-
matchIndex = this.
|
|
1060
|
-
if (!(matchIndex
|
|
1061
|
-
_context11.next =
|
|
1067
|
+
_step6$value = _slicedToArray(_step6.value, 2), _storageKey = _step6$value[0], pendingOrder = _step6$value[1];
|
|
1068
|
+
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, this.getOrderIdentityMatchKeys(pendingOrder));
|
|
1069
|
+
if (!(matchIndex >= 0)) {
|
|
1070
|
+
_context11.next = 46;
|
|
1062
1071
|
break;
|
|
1063
1072
|
}
|
|
1064
|
-
|
|
1065
|
-
case 40:
|
|
1066
|
-
updatedList[matchIndex] = this.mergeOrderRecords(updatedList[matchIndex], pendingOrder, {
|
|
1073
|
+
mergedOrder = this.mergeOrderRecords(updatedList[matchIndex], pendingOrder, {
|
|
1067
1074
|
preferIncomingProducts: true
|
|
1068
1075
|
});
|
|
1069
|
-
|
|
1070
|
-
|
|
1076
|
+
updatedList[matchIndex] = mergedOrder;
|
|
1077
|
+
// 合并后身份字段可能新增(如挂单拿到 order_id),同步登记,供同批后续 pending 命中同一槽位
|
|
1078
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder, matchIndex);
|
|
1071
1079
|
mergeActions[_storageKey] = 'update';
|
|
1072
|
-
|
|
1073
|
-
_context11.next = 35;
|
|
1074
|
-
break;
|
|
1080
|
+
return _context11.abrupt("continue", 50);
|
|
1075
1081
|
case 46:
|
|
1076
|
-
|
|
1082
|
+
insertIndex = updatedList.length;
|
|
1083
|
+
updatedList.push(pendingOrder);
|
|
1084
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, pendingOrder, insertIndex);
|
|
1085
|
+
mergeActions[_storageKey] = 'insert';
|
|
1086
|
+
case 50:
|
|
1087
|
+
_context11.next = 37;
|
|
1088
|
+
break;
|
|
1089
|
+
case 52:
|
|
1090
|
+
_context11.next = 57;
|
|
1077
1091
|
break;
|
|
1078
|
-
case 48:
|
|
1079
|
-
_context11.prev = 48;
|
|
1080
|
-
_context11.t1 = _context11["catch"](33);
|
|
1081
|
-
_iterator5.e(_context11.t1);
|
|
1082
|
-
case 51:
|
|
1083
|
-
_context11.prev = 51;
|
|
1084
|
-
_iterator5.f();
|
|
1085
|
-
return _context11.finish(51);
|
|
1086
1092
|
case 54:
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
_iterator6.f();
|
|
1098
|
-
}
|
|
1099
|
-
this.store.list = this.compactOrderListByIdentity(updatedList, 'upsertPendingSyncOrders.store').list;
|
|
1093
|
+
_context11.prev = 54;
|
|
1094
|
+
_context11.t1 = _context11["catch"](35);
|
|
1095
|
+
_iterator6.e(_context11.t1);
|
|
1096
|
+
case 57:
|
|
1097
|
+
_context11.prev = 57;
|
|
1098
|
+
_iterator6.f();
|
|
1099
|
+
return _context11.finish(57);
|
|
1100
|
+
case 60:
|
|
1101
|
+
// 增量索引已保证 store 去重不变量,无需再对全表做 O(n^2) 压缩;仅自检开关开启时兜底。
|
|
1102
|
+
this.store.list = this.runOrderStoreSelfCheck(updatedList, 'upsertPendingSyncOrders.store');
|
|
1100
1103
|
this.syncOrdersMap();
|
|
1101
|
-
_context11.next =
|
|
1104
|
+
_context11.next = 64;
|
|
1102
1105
|
return this.patchOrdersInSQLite(patchedOrders, 'upsertPendingSyncOrders', mergeActions);
|
|
1103
|
-
case
|
|
1106
|
+
case 64:
|
|
1104
1107
|
this.logInfo('upsertPendingSyncOrders-结束', {
|
|
1105
1108
|
count: patchedOrders.length,
|
|
1106
1109
|
storeOrderCountAfter: this.store.list.length
|
|
1107
1110
|
});
|
|
1108
|
-
_context11.next =
|
|
1111
|
+
_context11.next = 67;
|
|
1109
1112
|
return this.emitOrdersChanged(patchedOrders, 'upsertPendingSyncOrders');
|
|
1110
|
-
case
|
|
1113
|
+
case 67:
|
|
1111
1114
|
case "end":
|
|
1112
1115
|
return _context11.stop();
|
|
1113
1116
|
}
|
|
1114
|
-
}, _callee11, this, [[6, 19, 22, 25], [
|
|
1117
|
+
}, _callee11, this, [[6, 19, 22, 25], [35, 54, 57, 60]]);
|
|
1115
1118
|
}));
|
|
1116
1119
|
function upsertPendingSyncOrders(_x7) {
|
|
1117
1120
|
return _upsertPendingSyncOrders.apply(this, arguments);
|
|
@@ -1188,39 +1191,15 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1188
1191
|
}, {
|
|
1189
1192
|
key: "syncOrdersMap",
|
|
1190
1193
|
value: function syncOrdersMap() {
|
|
1191
|
-
var _this11 = this;
|
|
1192
1194
|
this.store.map.clear();
|
|
1193
|
-
this.resourceIdIndex.clear();
|
|
1194
1195
|
var _iterator7 = _createForOfIteratorHelper(this.store.list),
|
|
1195
1196
|
_step7;
|
|
1196
1197
|
try {
|
|
1197
|
-
var _loop = function _loop() {
|
|
1198
|
-
var order = _step7.value;
|
|
1199
|
-
var primaryIdentity = _this11.getOrderMapKey(order);
|
|
1200
|
-
if (!primaryIdentity) return 1; // continue
|
|
1201
|
-
_this11.store.map.set(primaryIdentity, order);
|
|
1202
|
-
var resourceIds = _this11.extractResourceIds(order);
|
|
1203
|
-
var _iterator8 = _createForOfIteratorHelper(resourceIds),
|
|
1204
|
-
_step8;
|
|
1205
|
-
try {
|
|
1206
|
-
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
1207
|
-
var resourceId = _step8.value;
|
|
1208
|
-
var key = String(resourceId);
|
|
1209
|
-
var existing = _this11.resourceIdIndex.get(key) || [];
|
|
1210
|
-
if (existing.some(function (eid) {
|
|
1211
|
-
return _this11.getIdKey(eid) === primaryIdentity;
|
|
1212
|
-
})) continue;
|
|
1213
|
-
existing.push(primaryIdentity);
|
|
1214
|
-
_this11.resourceIdIndex.set(key, existing);
|
|
1215
|
-
}
|
|
1216
|
-
} catch (err) {
|
|
1217
|
-
_iterator8.e(err);
|
|
1218
|
-
} finally {
|
|
1219
|
-
_iterator8.f();
|
|
1220
|
-
}
|
|
1221
|
-
};
|
|
1222
1198
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
1223
|
-
|
|
1199
|
+
var order = _step7.value;
|
|
1200
|
+
var primaryIdentity = this.getOrderMapKey(order);
|
|
1201
|
+
if (!primaryIdentity) continue;
|
|
1202
|
+
this.store.map.set(primaryIdentity, order);
|
|
1224
1203
|
}
|
|
1225
1204
|
} catch (err) {
|
|
1226
1205
|
_iterator7.e(err);
|
|
@@ -1249,7 +1228,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1249
1228
|
}, {
|
|
1250
1229
|
key: "getOrderIdentityEntries",
|
|
1251
1230
|
value: function getOrderIdentityEntries(order) {
|
|
1252
|
-
var
|
|
1231
|
+
var _this10 = this;
|
|
1253
1232
|
if (!order) return [];
|
|
1254
1233
|
var record = order;
|
|
1255
1234
|
var candidates = [{
|
|
@@ -1266,10 +1245,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1266
1245
|
value: record.shop_order_number
|
|
1267
1246
|
}];
|
|
1268
1247
|
var entries = [];
|
|
1269
|
-
var
|
|
1248
|
+
var _loop = function _loop() {
|
|
1270
1249
|
var candidate = _candidates[_i];
|
|
1271
|
-
if (
|
|
1272
|
-
var key =
|
|
1250
|
+
if (_this10.isBlankIdentityValue(candidate.value)) return 0; // continue
|
|
1251
|
+
var key = _this10.getIdKey(candidate.value);
|
|
1273
1252
|
if (entries.some(function (entry) {
|
|
1274
1253
|
return entry.field === candidate.field && entry.key === key;
|
|
1275
1254
|
})) return 0; // continue
|
|
@@ -1280,7 +1259,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1280
1259
|
},
|
|
1281
1260
|
_ret;
|
|
1282
1261
|
for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {
|
|
1283
|
-
_ret =
|
|
1262
|
+
_ret = _loop();
|
|
1284
1263
|
if (_ret === 0) continue;
|
|
1285
1264
|
}
|
|
1286
1265
|
return entries;
|
|
@@ -1289,39 +1268,20 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1289
1268
|
key: "getOrderIdentityKeys",
|
|
1290
1269
|
value: function getOrderIdentityKeys(order) {
|
|
1291
1270
|
var keys = [];
|
|
1292
|
-
var
|
|
1293
|
-
|
|
1271
|
+
var _iterator8 = _createForOfIteratorHelper(this.getOrderIdentityEntries(order)),
|
|
1272
|
+
_step8;
|
|
1294
1273
|
try {
|
|
1295
|
-
for (
|
|
1296
|
-
var entry =
|
|
1274
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
1275
|
+
var entry = _step8.value;
|
|
1297
1276
|
if (!keys.includes(entry.key)) keys.push(entry.key);
|
|
1298
1277
|
}
|
|
1299
1278
|
} catch (err) {
|
|
1300
|
-
|
|
1279
|
+
_iterator8.e(err);
|
|
1301
1280
|
} finally {
|
|
1302
|
-
|
|
1281
|
+
_iterator8.f();
|
|
1303
1282
|
}
|
|
1304
1283
|
return keys;
|
|
1305
1284
|
}
|
|
1306
|
-
}, {
|
|
1307
|
-
key: "extractResourceIds",
|
|
1308
|
-
value: function extractResourceIds(order) {
|
|
1309
|
-
var ids = new Set();
|
|
1310
|
-
var visitResources = function visitResources(resources) {
|
|
1311
|
-
if (!Array.isArray(resources)) return;
|
|
1312
|
-
resources.forEach(function (resource) {
|
|
1313
|
-
var rid = resource === null || resource === void 0 ? void 0 : resource.relation_id;
|
|
1314
|
-
if (rid !== undefined && rid !== null && rid !== '') ids.add(String(rid));
|
|
1315
|
-
if (Array.isArray(resource === null || resource === void 0 ? void 0 : resource.children)) visitResources(resource.children);
|
|
1316
|
-
});
|
|
1317
|
-
};
|
|
1318
|
-
if (Array.isArray(order === null || order === void 0 ? void 0 : order.bookings)) {
|
|
1319
|
-
order.bookings.forEach(function (booking) {
|
|
1320
|
-
return visitResources((booking === null || booking === void 0 ? void 0 : booking.resources) || []);
|
|
1321
|
-
});
|
|
1322
|
-
}
|
|
1323
|
-
return _toConsumableArray(ids);
|
|
1324
|
-
}
|
|
1325
1285
|
}, {
|
|
1326
1286
|
key: "getOrderDateKey",
|
|
1327
1287
|
value: function getOrderDateKey(order) {
|
|
@@ -1355,7 +1315,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1355
1315
|
}, {
|
|
1356
1316
|
key: "setupOrderSync",
|
|
1357
1317
|
value: function setupOrderSync() {
|
|
1358
|
-
var
|
|
1318
|
+
var _this11 = this;
|
|
1359
1319
|
if (!this.orderDataSource) return;
|
|
1360
1320
|
this.orderDataSource.run({
|
|
1361
1321
|
pubsub: {
|
|
@@ -1363,22 +1323,22 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1363
1323
|
var _message$id, _message$order_id, _message$type;
|
|
1364
1324
|
console.log('orderDataSource', res);
|
|
1365
1325
|
var pubsubReceivedAt = Date.now();
|
|
1366
|
-
var message =
|
|
1326
|
+
var message = _this11.normalizeOrderSyncMessage(res);
|
|
1367
1327
|
if (!message) return;
|
|
1368
1328
|
message._pubsubReceivedAt = pubsubReceivedAt;
|
|
1369
|
-
|
|
1370
|
-
var throttleMs =
|
|
1371
|
-
var routeInfo =
|
|
1372
|
-
|
|
1329
|
+
_this11.pendingSyncMessages.push(message);
|
|
1330
|
+
var throttleMs = _this11.getOrderSyncThrottleMs();
|
|
1331
|
+
var routeInfo = _this11.resolveSyncMessageRoute(message);
|
|
1332
|
+
_this11.logInfo('orderSync-收到消息并入队', {
|
|
1373
1333
|
id: (_message$id = message.id) !== null && _message$id !== void 0 ? _message$id : null,
|
|
1374
1334
|
order_id: (_message$order_id = message.order_id) !== null && _message$order_id !== void 0 ? _message$order_id : null,
|
|
1375
1335
|
type: (_message$type = message.type) !== null && _message$type !== void 0 ? _message$type : null,
|
|
1376
|
-
pendingCount:
|
|
1336
|
+
pendingCount: _this11.pendingSyncMessages.length,
|
|
1377
1337
|
throttleMs: throttleMs,
|
|
1378
1338
|
pubsubReceivedAt: new Date(pubsubReceivedAt).toISOString(),
|
|
1379
1339
|
fullMessage: JSON.stringify(message)
|
|
1380
1340
|
});
|
|
1381
|
-
|
|
1341
|
+
_this11.scheduleOrderSyncThrottle();
|
|
1382
1342
|
}
|
|
1383
1343
|
}
|
|
1384
1344
|
}).catch(function () {
|
|
@@ -1395,7 +1355,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1395
1355
|
}, {
|
|
1396
1356
|
key: "scheduleOrderSyncThrottle",
|
|
1397
1357
|
value: function scheduleOrderSyncThrottle() {
|
|
1398
|
-
var
|
|
1358
|
+
var _this12 = this;
|
|
1399
1359
|
if (this.isProcessingSyncBatch) return;
|
|
1400
1360
|
if (this.isIdlePhase) {
|
|
1401
1361
|
this.isIdlePhase = false;
|
|
@@ -1406,8 +1366,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1406
1366
|
if (this.syncTimer) return;
|
|
1407
1367
|
var throttleMs = this.getOrderSyncThrottleMs();
|
|
1408
1368
|
this.syncTimer = setTimeout(function () {
|
|
1409
|
-
|
|
1410
|
-
void
|
|
1369
|
+
_this12.syncTimer = undefined;
|
|
1370
|
+
void _this12.flushOrderSyncMessagesByThrottle();
|
|
1411
1371
|
}, throttleMs);
|
|
1412
1372
|
}
|
|
1413
1373
|
|
|
@@ -1475,7 +1435,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1475
1435
|
key: "processOrderSyncMessages",
|
|
1476
1436
|
value: (function () {
|
|
1477
1437
|
var _processOrderSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
|
|
1478
|
-
var
|
|
1438
|
+
var _this13 = this;
|
|
1479
1439
|
var messages, batchProcessStartAt, earliestReceivedAt, upsertOrders, refreshIds, uniqueRefreshIds, upsertList, _this$filterRedundant, toFetch, skipped, freshOrders, batchProcessEndAt;
|
|
1480
1440
|
return _regeneratorRuntime().wrap(function _callee14$(_context14) {
|
|
1481
1441
|
while (1) switch (_context14.prev = _context14.next) {
|
|
@@ -1502,13 +1462,13 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1502
1462
|
upsertOrders = new Map();
|
|
1503
1463
|
refreshIds = [];
|
|
1504
1464
|
messages.forEach(function (msg, msgIndex) {
|
|
1505
|
-
var routeInfo =
|
|
1465
|
+
var routeInfo = _this13.resolveSyncMessageRoute(msg);
|
|
1506
1466
|
var hasBatchIds = routeInfo.hasBatchIds;
|
|
1507
1467
|
var singleId = routeInfo.singleId;
|
|
1508
1468
|
var hasSingleId = routeInfo.hasSingleId;
|
|
1509
|
-
var normalizedBody =
|
|
1469
|
+
var normalizedBody = _this13.normalizeOrderSyncPayload(msg.body || msg.data);
|
|
1510
1470
|
if (routeInfo.route === 'bodyUpsert' && normalizedBody) {
|
|
1511
|
-
upsertOrders.set(
|
|
1471
|
+
upsertOrders.set(_this13.getIdKey(normalizedBody.order_id), normalizedBody);
|
|
1512
1472
|
return;
|
|
1513
1473
|
}
|
|
1514
1474
|
if (hasBatchIds) refreshIds.push.apply(refreshIds, _toConsumableArray(routeInfo.batchIds));else if (routeInfo.route === 'httpRefresh.singleId' && singleId !== null) refreshIds.push(singleId);else if (routeInfo.route === 'httpRefresh.relationIds') refreshIds.push.apply(refreshIds, _toConsumableArray(routeInfo.batchIds));
|
|
@@ -1646,94 +1606,137 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1646
1606
|
key: "mergeOrdersToStore",
|
|
1647
1607
|
value: (function () {
|
|
1648
1608
|
var _mergeOrdersToStore = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16(freshOrders, source) {
|
|
1649
|
-
var normalizedFreshOrders,
|
|
1609
|
+
var storeOrderCountBefore, normalizedFreshOrders, _iterator9, _step9, order, id, uniqueFreshOrders, uniqueFreshCount, patchedOrders, mergeActions, updatedList, identityKeyToIndex, index, identityKeys, _iterator10, _step10, key, _iterator11, _step11, fresh, freshIdentityKeys, matchIndex, storageKey, mergeKey, existingOrder, _ref2, _existingOrder$order_, _ref3, _external_sale_number, _existingOrder$paymen, _fresh$payment_status, _existingOrder$need_s, _fresh$need_sync, mergedOrder, insertIndex, insertCount, updateCount;
|
|
1650
1610
|
return _regeneratorRuntime().wrap(function _callee16$(_context16) {
|
|
1651
1611
|
while (1) switch (_context16.prev = _context16.next) {
|
|
1652
1612
|
case 0:
|
|
1613
|
+
storeOrderCountBefore = this.store.list.length;
|
|
1653
1614
|
this.logInfo('mergeOrdersToStore-开始', {
|
|
1654
1615
|
freshOrderCount: freshOrders.length,
|
|
1655
|
-
storeOrderCountBefore:
|
|
1616
|
+
storeOrderCountBefore: storeOrderCountBefore,
|
|
1656
1617
|
source: source
|
|
1657
1618
|
});
|
|
1658
1619
|
this.logDuplicateOrders("".concat(source, ".beforeMerge"), this.store.list);
|
|
1659
1620
|
normalizedFreshOrders = [];
|
|
1660
|
-
|
|
1661
|
-
_context16.prev =
|
|
1662
|
-
|
|
1663
|
-
case
|
|
1664
|
-
if ((
|
|
1665
|
-
_context16.next =
|
|
1621
|
+
_iterator9 = _createForOfIteratorHelper(freshOrders);
|
|
1622
|
+
_context16.prev = 5;
|
|
1623
|
+
_iterator9.s();
|
|
1624
|
+
case 7:
|
|
1625
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
1626
|
+
_context16.next = 15;
|
|
1666
1627
|
break;
|
|
1667
1628
|
}
|
|
1668
|
-
order =
|
|
1629
|
+
order = _step9.value;
|
|
1669
1630
|
id = order === null || order === void 0 ? void 0 : order.order_id;
|
|
1670
1631
|
if (!(id === undefined || id === null)) {
|
|
1671
|
-
_context16.next =
|
|
1632
|
+
_context16.next = 12;
|
|
1672
1633
|
break;
|
|
1673
1634
|
}
|
|
1674
|
-
return _context16.abrupt("continue",
|
|
1675
|
-
case 11:
|
|
1676
|
-
normalizedFreshOrders.push(this.normalizeRemoteSyncedOrder(order));
|
|
1635
|
+
return _context16.abrupt("continue", 13);
|
|
1677
1636
|
case 12:
|
|
1678
|
-
|
|
1637
|
+
normalizedFreshOrders.push(this.normalizeRemoteSyncedOrder(order));
|
|
1638
|
+
case 13:
|
|
1639
|
+
_context16.next = 7;
|
|
1679
1640
|
break;
|
|
1680
|
-
case
|
|
1681
|
-
_context16.next =
|
|
1641
|
+
case 15:
|
|
1642
|
+
_context16.next = 20;
|
|
1682
1643
|
break;
|
|
1683
|
-
case
|
|
1684
|
-
_context16.prev =
|
|
1685
|
-
_context16.t0 = _context16["catch"](
|
|
1686
|
-
|
|
1687
|
-
case
|
|
1688
|
-
_context16.prev =
|
|
1689
|
-
|
|
1690
|
-
return _context16.finish(
|
|
1691
|
-
case
|
|
1644
|
+
case 17:
|
|
1645
|
+
_context16.prev = 17;
|
|
1646
|
+
_context16.t0 = _context16["catch"](5);
|
|
1647
|
+
_iterator9.e(_context16.t0);
|
|
1648
|
+
case 20:
|
|
1649
|
+
_context16.prev = 20;
|
|
1650
|
+
_iterator9.f();
|
|
1651
|
+
return _context16.finish(20);
|
|
1652
|
+
case 23:
|
|
1653
|
+
// 先对本批新单做去重(批内规模 m 很小),保证每条 fresh 身份唯一
|
|
1692
1654
|
uniqueFreshOrders = this.compactOrderListByIdentity(normalizedFreshOrders, "".concat(source, ".incoming")).list;
|
|
1693
1655
|
uniqueFreshCount = uniqueFreshOrders.length;
|
|
1694
1656
|
patchedOrders = [];
|
|
1695
1657
|
mergeActions = {};
|
|
1696
|
-
updatedList = _toConsumableArray(this.store.list);
|
|
1658
|
+
updatedList = _toConsumableArray(this.store.list); // 基于身份键(field:value)建立索引,把「查找已存在订单」从 O(n) 线性扫描降为 O(1),
|
|
1659
|
+
// 整体合并复杂度由 O(n^2) 降为 O(n + m)。索引语义与 doOrdersShareIdentity 完全一致:
|
|
1660
|
+
// 任一身份字段(order_id/external_sale_number/order_number/shop_order_number)同值即同一单。
|
|
1661
|
+
identityKeyToIndex = new Map();
|
|
1662
|
+
for (index = 0; index < updatedList.length; index += 1) {
|
|
1663
|
+
identityKeys = this.getOrderIdentityMatchKeys(updatedList[index]);
|
|
1664
|
+
_iterator10 = _createForOfIteratorHelper(identityKeys);
|
|
1665
|
+
try {
|
|
1666
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
1667
|
+
key = _step10.value;
|
|
1668
|
+
// 同一 key 命中多张时保留最靠前的下标,与原 findIndex「取首个匹配」一致
|
|
1669
|
+
if (!identityKeyToIndex.has(key)) identityKeyToIndex.set(key, index);
|
|
1670
|
+
}
|
|
1671
|
+
} catch (err) {
|
|
1672
|
+
_iterator10.e(err);
|
|
1673
|
+
} finally {
|
|
1674
|
+
_iterator10.f();
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1697
1677
|
_iterator11 = _createForOfIteratorHelper(uniqueFreshOrders);
|
|
1698
|
-
_context16.prev =
|
|
1678
|
+
_context16.prev = 31;
|
|
1699
1679
|
_iterator11.s();
|
|
1700
|
-
case
|
|
1680
|
+
case 33:
|
|
1701
1681
|
if ((_step11 = _iterator11.n()).done) {
|
|
1702
|
-
_context16.next =
|
|
1682
|
+
_context16.next = 57;
|
|
1703
1683
|
break;
|
|
1704
1684
|
}
|
|
1705
1685
|
fresh = _step11.value;
|
|
1706
|
-
|
|
1686
|
+
freshIdentityKeys = this.getOrderIdentityMatchKeys(fresh);
|
|
1687
|
+
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, freshIdentityKeys);
|
|
1707
1688
|
storageKey = this.getOrderStorageKey(fresh);
|
|
1708
1689
|
mergeKey = storageKey || (fresh.order_id !== undefined && fresh.order_id !== null ? this.getIdKey(fresh.order_id) : '');
|
|
1709
1690
|
if (!(matchIndex >= 0)) {
|
|
1710
|
-
_context16.next =
|
|
1691
|
+
_context16.next = 50;
|
|
1711
1692
|
break;
|
|
1712
1693
|
}
|
|
1713
|
-
|
|
1694
|
+
existingOrder = updatedList[matchIndex];
|
|
1695
|
+
if (!(this.isPendingSyncOrder(existingOrder) && this.isRemoteEchoMergeSource(source))) {
|
|
1696
|
+
_context16.next = 44;
|
|
1697
|
+
break;
|
|
1698
|
+
}
|
|
1699
|
+
this.logInfo('mergeOrdersToStore-跳过 pending 订单远端覆盖', {
|
|
1700
|
+
source: source,
|
|
1701
|
+
order_id: (_ref2 = (_existingOrder$order_ = existingOrder.order_id) !== null && _existingOrder$order_ !== void 0 ? _existingOrder$order_ : fresh.order_id) !== null && _ref2 !== void 0 ? _ref2 : null,
|
|
1702
|
+
external_sale_number: (_ref3 = (_external_sale_number = existingOrder.external_sale_number) !== null && _external_sale_number !== void 0 ? _external_sale_number : fresh.external_sale_number) !== null && _ref3 !== void 0 ? _ref3 : null,
|
|
1703
|
+
local_payment_status: (_existingOrder$paymen = existingOrder.payment_status) !== null && _existingOrder$paymen !== void 0 ? _existingOrder$paymen : null,
|
|
1704
|
+
remote_payment_status: (_fresh$payment_status = fresh.payment_status) !== null && _fresh$payment_status !== void 0 ? _fresh$payment_status : null,
|
|
1705
|
+
local_need_sync: (_existingOrder$need_s = existingOrder.need_sync) !== null && _existingOrder$need_s !== void 0 ? _existingOrder$need_s : null,
|
|
1706
|
+
remote_need_sync: (_fresh$need_sync = fresh.need_sync) !== null && _fresh$need_sync !== void 0 ? _fresh$need_sync : null,
|
|
1707
|
+
reason: 'protect_pending_sync_order_from_remote_echo'
|
|
1708
|
+
});
|
|
1709
|
+
return _context16.abrupt("continue", 55);
|
|
1710
|
+
case 44:
|
|
1711
|
+
mergedOrder = this.mergeOrderRecords(existingOrder, fresh);
|
|
1714
1712
|
updatedList[matchIndex] = mergedOrder;
|
|
1713
|
+
// 合并后身份字段可能新增(如挂单拿到 order_id),同步登记到索引,
|
|
1714
|
+
// 供同批后续 fresh 命中同一槽位,避免重复插入
|
|
1715
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder, matchIndex);
|
|
1715
1716
|
patchedOrders.push(mergedOrder);
|
|
1716
1717
|
if (mergeKey) mergeActions[mergeKey] = 'update';
|
|
1717
|
-
return _context16.abrupt("continue",
|
|
1718
|
-
case
|
|
1718
|
+
return _context16.abrupt("continue", 55);
|
|
1719
|
+
case 50:
|
|
1720
|
+
insertIndex = updatedList.length;
|
|
1719
1721
|
updatedList.push(fresh);
|
|
1722
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, fresh, insertIndex);
|
|
1720
1723
|
patchedOrders.push(fresh);
|
|
1721
1724
|
if (mergeKey) mergeActions[mergeKey] = 'insert';
|
|
1722
|
-
case
|
|
1723
|
-
_context16.next =
|
|
1725
|
+
case 55:
|
|
1726
|
+
_context16.next = 33;
|
|
1724
1727
|
break;
|
|
1725
|
-
case
|
|
1726
|
-
_context16.next =
|
|
1728
|
+
case 57:
|
|
1729
|
+
_context16.next = 62;
|
|
1727
1730
|
break;
|
|
1728
|
-
case
|
|
1729
|
-
_context16.prev =
|
|
1730
|
-
_context16.t1 = _context16["catch"](
|
|
1731
|
+
case 59:
|
|
1732
|
+
_context16.prev = 59;
|
|
1733
|
+
_context16.t1 = _context16["catch"](31);
|
|
1731
1734
|
_iterator11.e(_context16.t1);
|
|
1732
|
-
case
|
|
1733
|
-
_context16.prev =
|
|
1735
|
+
case 62:
|
|
1736
|
+
_context16.prev = 62;
|
|
1734
1737
|
_iterator11.f();
|
|
1735
|
-
return _context16.finish(
|
|
1736
|
-
case
|
|
1738
|
+
return _context16.finish(62);
|
|
1739
|
+
case 65:
|
|
1737
1740
|
insertCount = Object.values(mergeActions).filter(function (v) {
|
|
1738
1741
|
return v === 'insert';
|
|
1739
1742
|
}).length;
|
|
@@ -1745,30 +1748,110 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1745
1748
|
updateCount: updateCount,
|
|
1746
1749
|
storeOrderCountAfter: this.store.list.length
|
|
1747
1750
|
});
|
|
1748
|
-
|
|
1751
|
+
// 增量索引已保证 store 去重不变量,无需再对全表做 O(n^2) 压缩;
|
|
1752
|
+
// 仅在自检开关开启时做一次兜底校验。
|
|
1753
|
+
this.store.list = this.runOrderStoreSelfCheck(updatedList, "".concat(source, ".store"));
|
|
1749
1754
|
this.syncOrdersMap();
|
|
1750
|
-
_context16.next =
|
|
1755
|
+
_context16.next = 72;
|
|
1751
1756
|
return this.patchOrdersInSQLite(patchedOrders, source, mergeActions);
|
|
1752
|
-
case
|
|
1757
|
+
case 72:
|
|
1753
1758
|
this.logInfo('mergeOrdersToStore-结束', {
|
|
1754
1759
|
uniqueFreshCount: uniqueFreshCount,
|
|
1755
1760
|
storeOrderCountAfter: this.store.list.length,
|
|
1756
1761
|
insertCount: insertCount,
|
|
1757
1762
|
updateCount: updateCount
|
|
1758
1763
|
});
|
|
1759
|
-
_context16.next =
|
|
1764
|
+
_context16.next = 75;
|
|
1760
1765
|
return this.emitOrdersChanged(patchedOrders, source);
|
|
1761
|
-
case
|
|
1766
|
+
case 75:
|
|
1762
1767
|
case "end":
|
|
1763
1768
|
return _context16.stop();
|
|
1764
1769
|
}
|
|
1765
|
-
}, _callee16, this, [[
|
|
1770
|
+
}, _callee16, this, [[5, 17, 20, 23], [31, 59, 62, 65]]);
|
|
1766
1771
|
}));
|
|
1767
1772
|
function mergeOrdersToStore(_x9, _x10) {
|
|
1768
1773
|
return _mergeOrdersToStore.apply(this, arguments);
|
|
1769
1774
|
}
|
|
1770
1775
|
return mergeOrdersToStore;
|
|
1771
|
-
}()
|
|
1776
|
+
}()
|
|
1777
|
+
/**
|
|
1778
|
+
* 在身份索引中查找与目标订单共享任一身份键的已存在订单下标。
|
|
1779
|
+
* 返回所有命中键里最小的下标,等价于原 findOrderIndexByIdentity 的「取首个匹配」语义。
|
|
1780
|
+
*
|
|
1781
|
+
* @example
|
|
1782
|
+
* const idx = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, freshIdentityKeys)
|
|
1783
|
+
*/
|
|
1784
|
+
)
|
|
1785
|
+
}, {
|
|
1786
|
+
key: "lookupOrderIndexByIdentityKeys",
|
|
1787
|
+
value: function lookupOrderIndexByIdentityKeys(identityKeyToIndex, identityKeys) {
|
|
1788
|
+
var matchIndex = -1;
|
|
1789
|
+
var _iterator12 = _createForOfIteratorHelper(identityKeys),
|
|
1790
|
+
_step12;
|
|
1791
|
+
try {
|
|
1792
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
1793
|
+
var key = _step12.value;
|
|
1794
|
+
var index = identityKeyToIndex.get(key);
|
|
1795
|
+
if (index === undefined) continue;
|
|
1796
|
+
if (matchIndex < 0 || index < matchIndex) matchIndex = index;
|
|
1797
|
+
}
|
|
1798
|
+
} catch (err) {
|
|
1799
|
+
_iterator12.e(err);
|
|
1800
|
+
} finally {
|
|
1801
|
+
_iterator12.f();
|
|
1802
|
+
}
|
|
1803
|
+
return matchIndex;
|
|
1804
|
+
}
|
|
1805
|
+
}, {
|
|
1806
|
+
key: "isRemoteEchoMergeSource",
|
|
1807
|
+
value: function isRemoteEchoMergeSource(source) {
|
|
1808
|
+
return source === 'pubsub.bodyUpsert' || source === 'pubsub.httpRefresh';
|
|
1809
|
+
}
|
|
1810
|
+
|
|
1811
|
+
/**
|
|
1812
|
+
* 将订单的全部身份键登记到索引并指向其在列表中的下标。
|
|
1813
|
+
* 合并后订单新增的身份字段(如挂单同步后拿到 order_id)也会被登记。
|
|
1814
|
+
*
|
|
1815
|
+
* @example
|
|
1816
|
+
* this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder, matchIndex)
|
|
1817
|
+
*/
|
|
1818
|
+
}, {
|
|
1819
|
+
key: "registerOrderIdentityKeys",
|
|
1820
|
+
value: function registerOrderIdentityKeys(identityKeyToIndex, order, index) {
|
|
1821
|
+
var identityKeys = this.getOrderIdentityMatchKeys(order);
|
|
1822
|
+
var _iterator13 = _createForOfIteratorHelper(identityKeys),
|
|
1823
|
+
_step13;
|
|
1824
|
+
try {
|
|
1825
|
+
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
1826
|
+
var key = _step13.value;
|
|
1827
|
+
identityKeyToIndex.set(key, index);
|
|
1828
|
+
}
|
|
1829
|
+
} catch (err) {
|
|
1830
|
+
_iterator13.e(err);
|
|
1831
|
+
} finally {
|
|
1832
|
+
_iterator13.f();
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
/**
|
|
1837
|
+
* 合并热路径去重兜底:默认直接返回原列表(增量索引已保证无重复)。
|
|
1838
|
+
* 仅当 ORDER_MERGE_SELF_CHECK 开启时,额外做一次全表压缩并在发现残留重复时告警。
|
|
1839
|
+
*/
|
|
1840
|
+
}, {
|
|
1841
|
+
key: "runOrderStoreSelfCheck",
|
|
1842
|
+
value: function runOrderStoreSelfCheck(orders, source) {
|
|
1843
|
+
if (!ORDER_MERGE_SELF_CHECK) return orders;
|
|
1844
|
+
var _this$compactOrderLis = this.compactOrderListByIdentity(orders, source),
|
|
1845
|
+
list = _this$compactOrderLis.list,
|
|
1846
|
+
removedCount = _this$compactOrderLis.removedCount;
|
|
1847
|
+
if (removedCount > 0) {
|
|
1848
|
+
this.logWarning('合并自检发现残留重复订单,已压缩', {
|
|
1849
|
+
source: source,
|
|
1850
|
+
removedCount: removedCount
|
|
1851
|
+
});
|
|
1852
|
+
}
|
|
1853
|
+
return list;
|
|
1854
|
+
}
|
|
1772
1855
|
}, {
|
|
1773
1856
|
key: "normalizeOrderSyncMessage",
|
|
1774
1857
|
value: function normalizeOrderSyncMessage(res) {
|
|
@@ -1801,17 +1884,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1801
1884
|
key: "uniqueOrderIds",
|
|
1802
1885
|
value: function uniqueOrderIds(ids) {
|
|
1803
1886
|
var idMap = new Map();
|
|
1804
|
-
var
|
|
1805
|
-
|
|
1887
|
+
var _iterator14 = _createForOfIteratorHelper(ids),
|
|
1888
|
+
_step14;
|
|
1806
1889
|
try {
|
|
1807
|
-
for (
|
|
1808
|
-
var id =
|
|
1890
|
+
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
1891
|
+
var id = _step14.value;
|
|
1809
1892
|
idMap.set(this.getIdKey(id), id);
|
|
1810
1893
|
}
|
|
1811
1894
|
} catch (err) {
|
|
1812
|
-
|
|
1895
|
+
_iterator14.e(err);
|
|
1813
1896
|
} finally {
|
|
1814
|
-
|
|
1897
|
+
_iterator14.f();
|
|
1815
1898
|
}
|
|
1816
1899
|
return _toConsumableArray(idMap.values());
|
|
1817
1900
|
}
|
|
@@ -1823,12 +1906,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1823
1906
|
}, {
|
|
1824
1907
|
key: "isOrderLookupMatch",
|
|
1825
1908
|
value: function isOrderLookupMatch(order, lookupKey) {
|
|
1826
|
-
var
|
|
1909
|
+
var _this14 = this;
|
|
1827
1910
|
if (!order || !lookupKey) return false;
|
|
1828
1911
|
var candidates = [order.order_id, order.external_sale_number, order.order_number, order.shop_order_number, order.shop_full_order_number];
|
|
1829
1912
|
return candidates.some(function (value) {
|
|
1830
1913
|
if (value === undefined || value === null || value === '') return false;
|
|
1831
|
-
return
|
|
1914
|
+
return _this14.getIdKey(value) === lookupKey;
|
|
1832
1915
|
});
|
|
1833
1916
|
}
|
|
1834
1917
|
|
|
@@ -1871,10 +1954,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1871
1954
|
}, {
|
|
1872
1955
|
key: "findOrderIndexByIdentity",
|
|
1873
1956
|
value: function findOrderIndexByIdentity(orders, target) {
|
|
1874
|
-
var
|
|
1957
|
+
var _this15 = this;
|
|
1875
1958
|
if (this.getOrderIdentityMatchKeys(target).length === 0) return -1;
|
|
1876
1959
|
return orders.findIndex(function (order) {
|
|
1877
|
-
return
|
|
1960
|
+
return _this15.doOrdersShareIdentity(order, target);
|
|
1878
1961
|
});
|
|
1879
1962
|
}
|
|
1880
1963
|
}, {
|
|
@@ -1923,58 +2006,58 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1923
2006
|
if (secondaryList.length === 0) return preferredList;
|
|
1924
2007
|
if (preferredList.length === 0) return secondaryList;
|
|
1925
2008
|
var seenKeys = new Set();
|
|
1926
|
-
var
|
|
1927
|
-
|
|
2009
|
+
var _iterator15 = _createForOfIteratorHelper(preferredList),
|
|
2010
|
+
_step15;
|
|
1928
2011
|
try {
|
|
1929
|
-
for (
|
|
1930
|
-
var item =
|
|
2012
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
2013
|
+
var item = _step15.value;
|
|
1931
2014
|
var keys = this.getProductIdentityKeys(item);
|
|
1932
|
-
var
|
|
1933
|
-
|
|
2015
|
+
var _iterator17 = _createForOfIteratorHelper(keys),
|
|
2016
|
+
_step17;
|
|
1934
2017
|
try {
|
|
1935
|
-
for (
|
|
1936
|
-
var key =
|
|
2018
|
+
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
2019
|
+
var key = _step17.value;
|
|
1937
2020
|
seenKeys.add(key);
|
|
1938
2021
|
}
|
|
1939
2022
|
} catch (err) {
|
|
1940
|
-
|
|
2023
|
+
_iterator17.e(err);
|
|
1941
2024
|
} finally {
|
|
1942
|
-
|
|
2025
|
+
_iterator17.f();
|
|
1943
2026
|
}
|
|
1944
2027
|
}
|
|
1945
2028
|
} catch (err) {
|
|
1946
|
-
|
|
2029
|
+
_iterator15.e(err);
|
|
1947
2030
|
} finally {
|
|
1948
|
-
|
|
2031
|
+
_iterator15.f();
|
|
1949
2032
|
}
|
|
1950
2033
|
var result = _toConsumableArray(preferredList);
|
|
1951
|
-
var
|
|
1952
|
-
|
|
2034
|
+
var _iterator16 = _createForOfIteratorHelper(secondaryList),
|
|
2035
|
+
_step16;
|
|
1953
2036
|
try {
|
|
1954
|
-
for (
|
|
1955
|
-
var _item =
|
|
2037
|
+
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
2038
|
+
var _item = _step16.value;
|
|
1956
2039
|
var _keys = this.getProductIdentityKeys(_item);
|
|
1957
2040
|
if (_keys.length === 0 || _keys.some(function (key) {
|
|
1958
2041
|
return seenKeys.has(key);
|
|
1959
2042
|
})) continue;
|
|
1960
|
-
var
|
|
1961
|
-
|
|
2043
|
+
var _iterator18 = _createForOfIteratorHelper(_keys),
|
|
2044
|
+
_step18;
|
|
1962
2045
|
try {
|
|
1963
|
-
for (
|
|
1964
|
-
var _key =
|
|
2046
|
+
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
2047
|
+
var _key = _step18.value;
|
|
1965
2048
|
seenKeys.add(_key);
|
|
1966
2049
|
}
|
|
1967
2050
|
} catch (err) {
|
|
1968
|
-
|
|
2051
|
+
_iterator18.e(err);
|
|
1969
2052
|
} finally {
|
|
1970
|
-
|
|
2053
|
+
_iterator18.f();
|
|
1971
2054
|
}
|
|
1972
2055
|
result.push(cloneDeep(_item));
|
|
1973
2056
|
}
|
|
1974
2057
|
} catch (err) {
|
|
1975
|
-
|
|
2058
|
+
_iterator16.e(err);
|
|
1976
2059
|
} finally {
|
|
1977
|
-
|
|
2060
|
+
_iterator16.f();
|
|
1978
2061
|
}
|
|
1979
2062
|
return result;
|
|
1980
2063
|
}
|
|
@@ -2000,29 +2083,29 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2000
2083
|
}, {
|
|
2001
2084
|
key: "mergeOrderPaymentLists",
|
|
2002
2085
|
value: function mergeOrderPaymentLists(existing, incoming) {
|
|
2003
|
-
var
|
|
2086
|
+
var _this16 = this;
|
|
2004
2087
|
var existingList = Array.isArray(existing) ? existing : [];
|
|
2005
2088
|
var incomingList = Array.isArray(incoming) ? incoming : [];
|
|
2006
2089
|
if (incomingList.length === 0) return cloneDeep(existingList);
|
|
2007
2090
|
if (existingList.length === 0) return cloneDeep(incomingList);
|
|
2008
2091
|
var existingByKey = new Map();
|
|
2009
|
-
var
|
|
2010
|
-
|
|
2092
|
+
var _iterator19 = _createForOfIteratorHelper(existingList),
|
|
2093
|
+
_step19;
|
|
2011
2094
|
try {
|
|
2012
|
-
for (
|
|
2013
|
-
var payment =
|
|
2095
|
+
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
2096
|
+
var payment = _step19.value;
|
|
2014
2097
|
var key = this.getPaymentMergeKey(payment);
|
|
2015
2098
|
if (!key) continue;
|
|
2016
2099
|
existingByKey.set(key, payment);
|
|
2017
2100
|
}
|
|
2018
2101
|
} catch (err) {
|
|
2019
|
-
|
|
2102
|
+
_iterator19.e(err);
|
|
2020
2103
|
} finally {
|
|
2021
|
-
|
|
2104
|
+
_iterator19.f();
|
|
2022
2105
|
}
|
|
2023
2106
|
return incomingList.map(function (payment) {
|
|
2024
2107
|
var incomingPayment = payment;
|
|
2025
|
-
var key =
|
|
2108
|
+
var key = _this16.getPaymentMergeKey(incomingPayment);
|
|
2026
2109
|
var existingPayment = key ? existingByKey.get(key) : undefined;
|
|
2027
2110
|
if (!existingPayment) return cloneDeep(incomingPayment);
|
|
2028
2111
|
return _objectSpread(_objectSpread(_objectSpread({}, cloneDeep(existingPayment)), cloneDeep(incomingPayment)), {}, {
|
|
@@ -2079,47 +2162,47 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2079
2162
|
key: "summarizeDuplicateOrders",
|
|
2080
2163
|
value: function summarizeDuplicateOrders(orders) {
|
|
2081
2164
|
var groups = new Map();
|
|
2082
|
-
var
|
|
2083
|
-
|
|
2165
|
+
var _iterator20 = _createForOfIteratorHelper(orders),
|
|
2166
|
+
_step20;
|
|
2084
2167
|
try {
|
|
2085
|
-
for (
|
|
2086
|
-
var order =
|
|
2087
|
-
var
|
|
2088
|
-
|
|
2168
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
2169
|
+
var order = _step20.value;
|
|
2170
|
+
var _iterator21 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(order)),
|
|
2171
|
+
_step21;
|
|
2089
2172
|
try {
|
|
2090
|
-
for (
|
|
2091
|
-
var key =
|
|
2173
|
+
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
2174
|
+
var key = _step21.value;
|
|
2092
2175
|
var group = groups.get(key) || [];
|
|
2093
2176
|
group.push(order);
|
|
2094
2177
|
groups.set(key, group);
|
|
2095
2178
|
}
|
|
2096
2179
|
} catch (err) {
|
|
2097
|
-
|
|
2180
|
+
_iterator21.e(err);
|
|
2098
2181
|
} finally {
|
|
2099
|
-
|
|
2182
|
+
_iterator21.f();
|
|
2100
2183
|
}
|
|
2101
2184
|
}
|
|
2102
2185
|
} catch (err) {
|
|
2103
|
-
|
|
2186
|
+
_iterator20.e(err);
|
|
2104
2187
|
} finally {
|
|
2105
|
-
|
|
2188
|
+
_iterator20.f();
|
|
2106
2189
|
}
|
|
2107
|
-
return _toConsumableArray(groups.entries()).filter(function (
|
|
2108
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
2109
|
-
group = _ref3[1];
|
|
2110
|
-
return group.length > 1;
|
|
2111
|
-
}).slice(0, 20).map(function (_ref4) {
|
|
2190
|
+
return _toConsumableArray(groups.entries()).filter(function (_ref4) {
|
|
2112
2191
|
var _ref5 = _slicedToArray(_ref4, 2),
|
|
2113
|
-
key = _ref5[0],
|
|
2114
2192
|
group = _ref5[1];
|
|
2193
|
+
return group.length > 1;
|
|
2194
|
+
}).slice(0, 20).map(function (_ref6) {
|
|
2195
|
+
var _ref7 = _slicedToArray(_ref6, 2),
|
|
2196
|
+
key = _ref7[0],
|
|
2197
|
+
group = _ref7[1];
|
|
2115
2198
|
return {
|
|
2116
2199
|
key: key,
|
|
2117
2200
|
count: group.length,
|
|
2118
2201
|
orders: group.map(function (order) {
|
|
2119
|
-
var _order$order_id2,
|
|
2202
|
+
var _order$order_id2, _external_sale_number2, _shop_order_number, _shop_full_order_numb, _order$need_sync;
|
|
2120
2203
|
return {
|
|
2121
2204
|
order_id: (_order$order_id2 = order.order_id) !== null && _order$order_id2 !== void 0 ? _order$order_id2 : null,
|
|
2122
|
-
external_sale_number: (
|
|
2205
|
+
external_sale_number: (_external_sale_number2 = order.external_sale_number) !== null && _external_sale_number2 !== void 0 ? _external_sale_number2 : null,
|
|
2123
2206
|
shop_order_number: (_shop_order_number = order.shop_order_number) !== null && _shop_order_number !== void 0 ? _shop_order_number : null,
|
|
2124
2207
|
shop_full_order_number: (_shop_full_order_numb = order.shop_full_order_number) !== null && _shop_full_order_numb !== void 0 ? _shop_full_order_numb : null,
|
|
2125
2208
|
need_sync: (_order$need_sync = order.need_sync) !== null && _order$need_sync !== void 0 ? _order$need_sync : null
|
|
@@ -2144,11 +2227,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2144
2227
|
value: function compactOrderListByIdentity(orders, source) {
|
|
2145
2228
|
var list = [];
|
|
2146
2229
|
var removedCount = 0;
|
|
2147
|
-
var
|
|
2148
|
-
|
|
2230
|
+
var _iterator22 = _createForOfIteratorHelper(orders),
|
|
2231
|
+
_step22;
|
|
2149
2232
|
try {
|
|
2150
|
-
for (
|
|
2151
|
-
var order =
|
|
2233
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
2234
|
+
var order = _step22.value;
|
|
2152
2235
|
var matchIndex = this.findOrderIndexByIdentity(list, order);
|
|
2153
2236
|
if (matchIndex < 0) {
|
|
2154
2237
|
list.push(order);
|
|
@@ -2158,9 +2241,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2158
2241
|
removedCount += 1;
|
|
2159
2242
|
}
|
|
2160
2243
|
} catch (err) {
|
|
2161
|
-
|
|
2244
|
+
_iterator22.e(err);
|
|
2162
2245
|
} finally {
|
|
2163
|
-
|
|
2246
|
+
_iterator22.f();
|
|
2164
2247
|
}
|
|
2165
2248
|
if (removedCount > 0) {
|
|
2166
2249
|
this.logWarning('订单列表重复项已压缩', {
|
|
@@ -2306,15 +2389,15 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2306
2389
|
}, {
|
|
2307
2390
|
key: "mergeRemoteSnapshotWithPendingOrders",
|
|
2308
2391
|
value: function mergeRemoteSnapshotWithPendingOrders(remoteOrders, existingOrders) {
|
|
2309
|
-
var
|
|
2392
|
+
var _this17 = this;
|
|
2310
2393
|
var merged = remoteOrders.map(function (order) {
|
|
2311
|
-
return
|
|
2394
|
+
return _this17.normalizeRemoteSyncedOrder(order);
|
|
2312
2395
|
});
|
|
2313
|
-
var
|
|
2314
|
-
|
|
2396
|
+
var _iterator23 = _createForOfIteratorHelper(existingOrders),
|
|
2397
|
+
_step23;
|
|
2315
2398
|
try {
|
|
2316
|
-
for (
|
|
2317
|
-
var order =
|
|
2399
|
+
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
2400
|
+
var order = _step23.value;
|
|
2318
2401
|
if (!this.isPendingSyncOrder(order)) continue;
|
|
2319
2402
|
var matchIndex = this.findOrderIndexByIdentity(merged, order);
|
|
2320
2403
|
if (matchIndex >= 0) {
|
|
@@ -2325,9 +2408,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2325
2408
|
merged.push(order);
|
|
2326
2409
|
}
|
|
2327
2410
|
} catch (err) {
|
|
2328
|
-
|
|
2411
|
+
_iterator23.e(err);
|
|
2329
2412
|
} finally {
|
|
2330
|
-
|
|
2413
|
+
_iterator23.f();
|
|
2331
2414
|
}
|
|
2332
2415
|
return this.compactOrderListByIdentity(merged, 'mergeRemoteSnapshotWithPendingOrders').list;
|
|
2333
2416
|
}
|
|
@@ -2377,7 +2460,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2377
2460
|
key: "patchOrdersInSQLite",
|
|
2378
2461
|
value: (function () {
|
|
2379
2462
|
var _patchOrdersInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee20(orders, source) {
|
|
2380
|
-
var
|
|
2463
|
+
var _this18 = this;
|
|
2381
2464
|
var mergeActions,
|
|
2382
2465
|
ordersSnapshot,
|
|
2383
2466
|
_this$filterRedundant2,
|
|
@@ -2396,7 +2479,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2396
2479
|
return _context20.abrupt("return");
|
|
2397
2480
|
case 3:
|
|
2398
2481
|
ordersSnapshot = cloneDeep(orders).filter(function (order) {
|
|
2399
|
-
return
|
|
2482
|
+
return _this18.getOrderStorageKey(order);
|
|
2400
2483
|
});
|
|
2401
2484
|
if (!(ordersSnapshot.length === 0)) {
|
|
2402
2485
|
_context20.next = 6;
|
|
@@ -2421,54 +2504,54 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2421
2504
|
_context20.prev = 12;
|
|
2422
2505
|
_context20.next = 15;
|
|
2423
2506
|
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {
|
|
2424
|
-
var writeMethod,
|
|
2507
|
+
var writeMethod, _iterator24, _step24, order;
|
|
2425
2508
|
return _regeneratorRuntime().wrap(function _callee19$(_context19) {
|
|
2426
2509
|
while (1) switch (_context19.prev = _context19.next) {
|
|
2427
2510
|
case 0:
|
|
2428
2511
|
writeMethod = 'none';
|
|
2429
|
-
|
|
2512
|
+
_this18.logInfo('patchOrdersInSQLite-开始', {
|
|
2430
2513
|
source: source,
|
|
2431
2514
|
count: compactedToWrite.length,
|
|
2432
2515
|
dedupedCount: skipped.length
|
|
2433
2516
|
});
|
|
2434
|
-
if (!(typeof
|
|
2517
|
+
if (!(typeof _this18.dbManager.bulkUpdate === 'function')) {
|
|
2435
2518
|
_context19.next = 8;
|
|
2436
2519
|
break;
|
|
2437
2520
|
}
|
|
2438
2521
|
writeMethod = 'bulkUpdate';
|
|
2439
2522
|
_context19.next = 6;
|
|
2440
|
-
return
|
|
2523
|
+
return _this18.dbManager.bulkUpdate(INDEXDB_STORE_NAME, compactedToWrite);
|
|
2441
2524
|
case 6:
|
|
2442
2525
|
_context19.next = 33;
|
|
2443
2526
|
break;
|
|
2444
2527
|
case 8:
|
|
2445
|
-
if (!(typeof
|
|
2528
|
+
if (!(typeof _this18.dbManager.bulkAdd === 'function')) {
|
|
2446
2529
|
_context19.next = 14;
|
|
2447
2530
|
break;
|
|
2448
2531
|
}
|
|
2449
2532
|
writeMethod = 'bulkAdd';
|
|
2450
2533
|
_context19.next = 12;
|
|
2451
|
-
return
|
|
2534
|
+
return _this18.dbManager.bulkAdd(INDEXDB_STORE_NAME, compactedToWrite);
|
|
2452
2535
|
case 12:
|
|
2453
2536
|
_context19.next = 33;
|
|
2454
2537
|
break;
|
|
2455
2538
|
case 14:
|
|
2456
|
-
if (!(typeof
|
|
2539
|
+
if (!(typeof _this18.dbManager.update === 'function')) {
|
|
2457
2540
|
_context19.next = 33;
|
|
2458
2541
|
break;
|
|
2459
2542
|
}
|
|
2460
2543
|
writeMethod = 'update';
|
|
2461
|
-
|
|
2544
|
+
_iterator24 = _createForOfIteratorHelper(compactedToWrite);
|
|
2462
2545
|
_context19.prev = 17;
|
|
2463
|
-
|
|
2546
|
+
_iterator24.s();
|
|
2464
2547
|
case 19:
|
|
2465
|
-
if ((
|
|
2548
|
+
if ((_step24 = _iterator24.n()).done) {
|
|
2466
2549
|
_context19.next = 25;
|
|
2467
2550
|
break;
|
|
2468
2551
|
}
|
|
2469
|
-
order =
|
|
2552
|
+
order = _step24.value;
|
|
2470
2553
|
_context19.next = 23;
|
|
2471
|
-
return
|
|
2554
|
+
return _this18.dbManager.update(INDEXDB_STORE_NAME, order);
|
|
2472
2555
|
case 23:
|
|
2473
2556
|
_context19.next = 19;
|
|
2474
2557
|
break;
|
|
@@ -2478,14 +2561,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2478
2561
|
case 27:
|
|
2479
2562
|
_context19.prev = 27;
|
|
2480
2563
|
_context19.t0 = _context19["catch"](17);
|
|
2481
|
-
|
|
2564
|
+
_iterator24.e(_context19.t0);
|
|
2482
2565
|
case 30:
|
|
2483
2566
|
_context19.prev = 30;
|
|
2484
|
-
|
|
2567
|
+
_iterator24.f();
|
|
2485
2568
|
return _context19.finish(30);
|
|
2486
2569
|
case 33:
|
|
2487
|
-
|
|
2488
|
-
|
|
2570
|
+
_this18.recordRecentSqliteWrite(source, compactedToWrite);
|
|
2571
|
+
_this18.logInfo('patchOrdersInSQLite-完成', {
|
|
2489
2572
|
source: source,
|
|
2490
2573
|
count: compactedToWrite.length,
|
|
2491
2574
|
writeMethod: writeMethod,
|
|
@@ -2529,7 +2612,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2529
2612
|
key: "updateOrderInSQLite",
|
|
2530
2613
|
value: (function () {
|
|
2531
2614
|
var _updateOrderInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee22(order, source) {
|
|
2532
|
-
var
|
|
2615
|
+
var _this19 = this;
|
|
2533
2616
|
var orderSnapshot, _orderSnapshot$order_3;
|
|
2534
2617
|
return _regeneratorRuntime().wrap(function _callee22$(_context22) {
|
|
2535
2618
|
while (1) switch (_context22.prev = _context22.next) {
|
|
@@ -2550,43 +2633,43 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2550
2633
|
while (1) switch (_context21.prev = _context21.next) {
|
|
2551
2634
|
case 0:
|
|
2552
2635
|
writeMethod = 'none';
|
|
2553
|
-
|
|
2636
|
+
_this19.logInfo('updateOrderInSQLite-开始', {
|
|
2554
2637
|
source: source,
|
|
2555
2638
|
orderId: (_orderSnapshot$order_ = orderSnapshot.order_id) !== null && _orderSnapshot$order_ !== void 0 ? _orderSnapshot$order_ : null,
|
|
2556
|
-
storageKey:
|
|
2639
|
+
storageKey: _this19.getOrderStorageKey(orderSnapshot)
|
|
2557
2640
|
});
|
|
2558
|
-
if (!(typeof
|
|
2641
|
+
if (!(typeof _this19.dbManager.update === 'function')) {
|
|
2559
2642
|
_context21.next = 8;
|
|
2560
2643
|
break;
|
|
2561
2644
|
}
|
|
2562
2645
|
writeMethod = 'update';
|
|
2563
2646
|
_context21.next = 6;
|
|
2564
|
-
return
|
|
2647
|
+
return _this19.dbManager.update(INDEXDB_STORE_NAME, orderSnapshot);
|
|
2565
2648
|
case 6:
|
|
2566
2649
|
_context21.next = 18;
|
|
2567
2650
|
break;
|
|
2568
2651
|
case 8:
|
|
2569
|
-
if (!(typeof
|
|
2652
|
+
if (!(typeof _this19.dbManager.bulkUpdate === 'function')) {
|
|
2570
2653
|
_context21.next = 14;
|
|
2571
2654
|
break;
|
|
2572
2655
|
}
|
|
2573
2656
|
writeMethod = 'bulkUpdate';
|
|
2574
2657
|
_context21.next = 12;
|
|
2575
|
-
return
|
|
2658
|
+
return _this19.dbManager.bulkUpdate(INDEXDB_STORE_NAME, [orderSnapshot]);
|
|
2576
2659
|
case 12:
|
|
2577
2660
|
_context21.next = 18;
|
|
2578
2661
|
break;
|
|
2579
2662
|
case 14:
|
|
2580
|
-
if (!(typeof
|
|
2663
|
+
if (!(typeof _this19.dbManager.bulkAdd === 'function')) {
|
|
2581
2664
|
_context21.next = 18;
|
|
2582
2665
|
break;
|
|
2583
2666
|
}
|
|
2584
2667
|
writeMethod = 'bulkAdd';
|
|
2585
2668
|
_context21.next = 18;
|
|
2586
|
-
return
|
|
2669
|
+
return _this19.dbManager.bulkAdd(INDEXDB_STORE_NAME, [orderSnapshot]);
|
|
2587
2670
|
case 18:
|
|
2588
|
-
|
|
2589
|
-
|
|
2671
|
+
_this19.recordRecentSqliteWrite(source, [orderSnapshot]);
|
|
2672
|
+
_this19.logInfo('updateOrderInSQLite-完成', {
|
|
2590
2673
|
source: source,
|
|
2591
2674
|
orderId: (_orderSnapshot$order_2 = orderSnapshot.order_id) !== null && _orderSnapshot$order_2 !== void 0 ? _orderSnapshot$order_2 : null,
|
|
2592
2675
|
writeMethod: writeMethod
|
|
@@ -2629,7 +2712,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2629
2712
|
key: "replaceOrdersSnapshotInSQLite",
|
|
2630
2713
|
value: (function () {
|
|
2631
2714
|
var _replaceOrdersSnapshotInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee24(orderList, source) {
|
|
2632
|
-
var
|
|
2715
|
+
var _this20 = this;
|
|
2633
2716
|
var remoteSnapshot, mergedSnapshot;
|
|
2634
2717
|
return _regeneratorRuntime().wrap(function _callee24$(_context24) {
|
|
2635
2718
|
while (1) switch (_context24.prev = _context24.next) {
|
|
@@ -2639,12 +2722,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2639
2722
|
break;
|
|
2640
2723
|
}
|
|
2641
2724
|
return _context24.abrupt("return", this.compactOrderListByIdentity(orderList.map(function (order) {
|
|
2642
|
-
return
|
|
2725
|
+
return _this20.normalizeRemoteSyncedOrder(order);
|
|
2643
2726
|
}), "".concat(source, ".snapshotNoDb")).list);
|
|
2644
2727
|
case 2:
|
|
2645
2728
|
remoteSnapshot = cloneDeep(orderList);
|
|
2646
2729
|
mergedSnapshot = this.compactOrderListByIdentity(remoteSnapshot.map(function (order) {
|
|
2647
|
-
return
|
|
2730
|
+
return _this20.normalizeRemoteSyncedOrder(order);
|
|
2648
2731
|
}), "".concat(source, ".remoteSnapshot")).list;
|
|
2649
2732
|
_context24.prev = 4;
|
|
2650
2733
|
_context24.next = 7;
|
|
@@ -2653,12 +2736,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2653
2736
|
return _regeneratorRuntime().wrap(function _callee23$(_context23) {
|
|
2654
2737
|
while (1) switch (_context23.prev = _context23.next) {
|
|
2655
2738
|
case 0:
|
|
2656
|
-
if (!(typeof
|
|
2739
|
+
if (!(typeof _this20.dbManager.getAll === 'function')) {
|
|
2657
2740
|
_context23.next = 6;
|
|
2658
2741
|
break;
|
|
2659
2742
|
}
|
|
2660
2743
|
_context23.next = 3;
|
|
2661
|
-
return
|
|
2744
|
+
return _this20.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
2662
2745
|
case 3:
|
|
2663
2746
|
_context23.t0 = _context23.sent;
|
|
2664
2747
|
_context23.next = 7;
|
|
@@ -2667,18 +2750,18 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2667
2750
|
_context23.t0 = [];
|
|
2668
2751
|
case 7:
|
|
2669
2752
|
existingOrders = _context23.t0;
|
|
2670
|
-
orderListSnapshot =
|
|
2671
|
-
mergedSnapshot =
|
|
2672
|
-
|
|
2753
|
+
orderListSnapshot = _this20.mergeRemoteSnapshotWithPendingOrders(remoteSnapshot, existingOrders || []);
|
|
2754
|
+
mergedSnapshot = _this20.compactOrderListByIdentity(orderListSnapshot, "".concat(source, ".sqliteSnapshot")).list;
|
|
2755
|
+
_this20.logInfo('replaceOrdersSnapshotInSQLite-开始', {
|
|
2673
2756
|
source: source,
|
|
2674
2757
|
count: mergedSnapshot.length,
|
|
2675
2758
|
remoteCount: remoteSnapshot.length,
|
|
2676
2759
|
preservedPendingCount: mergedSnapshot.length - remoteSnapshot.length
|
|
2677
2760
|
});
|
|
2678
2761
|
_context23.next = 13;
|
|
2679
|
-
return
|
|
2762
|
+
return _this20.dbManager.clear(INDEXDB_STORE_NAME);
|
|
2680
2763
|
case 13:
|
|
2681
|
-
|
|
2764
|
+
_this20.logInfo('replaceOrdersSnapshotInSQLite-clear完成', {
|
|
2682
2765
|
count: mergedSnapshot.length
|
|
2683
2766
|
});
|
|
2684
2767
|
if (!(mergedSnapshot.length === 0)) {
|
|
@@ -2688,10 +2771,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2688
2771
|
return _context23.abrupt("return");
|
|
2689
2772
|
case 16:
|
|
2690
2773
|
_context23.next = 18;
|
|
2691
|
-
return
|
|
2774
|
+
return _this20.dbManager.bulkAdd(INDEXDB_STORE_NAME, mergedSnapshot);
|
|
2692
2775
|
case 18:
|
|
2693
|
-
|
|
2694
|
-
|
|
2776
|
+
_this20.recordRecentSqliteWrite(source, mergedSnapshot);
|
|
2777
|
+
_this20.logInfo('replaceOrdersSnapshotInSQLite-bulkAdd完成', {
|
|
2695
2778
|
source: source,
|
|
2696
2779
|
count: mergedSnapshot.length
|
|
2697
2780
|
});
|
|
@@ -2735,34 +2818,33 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2735
2818
|
key: "clear",
|
|
2736
2819
|
value: (function () {
|
|
2737
2820
|
var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {
|
|
2738
|
-
var
|
|
2821
|
+
var _this21 = this;
|
|
2739
2822
|
return _regeneratorRuntime().wrap(function _callee26$(_context26) {
|
|
2740
2823
|
while (1) switch (_context26.prev = _context26.next) {
|
|
2741
2824
|
case 0:
|
|
2742
2825
|
this.store.list = [];
|
|
2743
2826
|
this.store.map = new Map();
|
|
2744
|
-
this.resourceIdIndex.clear();
|
|
2745
2827
|
if (!this.dbManager) {
|
|
2746
|
-
_context26.next =
|
|
2828
|
+
_context26.next = 5;
|
|
2747
2829
|
break;
|
|
2748
2830
|
}
|
|
2749
|
-
_context26.next =
|
|
2831
|
+
_context26.next = 5;
|
|
2750
2832
|
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {
|
|
2751
2833
|
return _regeneratorRuntime().wrap(function _callee25$(_context25) {
|
|
2752
2834
|
while (1) switch (_context25.prev = _context25.next) {
|
|
2753
2835
|
case 0:
|
|
2754
2836
|
_context25.next = 2;
|
|
2755
|
-
return
|
|
2837
|
+
return _this21.dbManager.clear(INDEXDB_STORE_NAME);
|
|
2756
2838
|
case 2:
|
|
2757
2839
|
case "end":
|
|
2758
2840
|
return _context25.stop();
|
|
2759
2841
|
}
|
|
2760
2842
|
}, _callee25);
|
|
2761
2843
|
})));
|
|
2762
|
-
case
|
|
2844
|
+
case 5:
|
|
2763
2845
|
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, '');
|
|
2764
2846
|
this.emitOrdersChanged([], 'clear');
|
|
2765
|
-
case
|
|
2847
|
+
case 7:
|
|
2766
2848
|
case "end":
|
|
2767
2849
|
return _context26.stop();
|
|
2768
2850
|
}
|