@pisell/pisellos 2.2.274 → 2.2.276
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/core/index.d.ts +2 -0
- package/dist/core/index.js +7 -0
- 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/OpenData/index.d.ts +2 -0
- package/dist/modules/OpenData/index.js +8 -0
- package/dist/modules/Order/index.d.ts +28 -8
- package/dist/modules/Order/index.js +907 -588
- package/dist/modules/Order/payment-utils.d.ts +26 -0
- package/dist/modules/Order/payment-utils.js +225 -0
- package/dist/modules/Order/types.d.ts +35 -1
- package/dist/modules/Order/utils/orderCollectionIdentity.js +7 -2
- package/dist/modules/Order/utils.js +10 -6
- package/dist/modules/Payment/index.d.ts +2 -0
- package/dist/modules/Payment/index.js +78 -49
- package/dist/modules/Payment/types.d.ts +104 -25
- package/dist/modules/Payment/types.js +17 -0
- package/dist/modules/Payment/walletpass.d.ts +38 -1
- package/dist/modules/Payment/walletpass.js +917 -114
- package/dist/modules/Rules/index.d.ts +3 -0
- package/dist/modules/Rules/index.js +100 -70
- package/dist/server/index.d.ts +25 -0
- package/dist/server/index.js +1993 -1061
- package/dist/server/modules/index.d.ts +1 -1
- package/dist/server/modules/order/index.d.ts +70 -4
- package/dist/server/modules/order/index.js +1816 -728
- package/dist/server/modules/order/types.d.ts +25 -3
- package/dist/server/modules/order/types.js +7 -1
- package/dist/solution/BaseSales/index.d.ts +104 -5
- package/dist/solution/BaseSales/index.js +1767 -436
- package/dist/solution/BaseSales/types.d.ts +55 -1
- 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 +94 -32
- package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +6 -1
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -4
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +21 -5
- package/dist/solution/BookingTicket/index.js +139 -56
- package/dist/solution/BookingTicket/types.d.ts +1 -0
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +8 -0
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +173 -83
- package/dist/solution/Sales/index.d.ts +2 -0
- package/dist/solution/Sales/index.js +26 -4
- package/dist/solution/ScanOrder/index.js +31 -20
- package/dist/solution/VenueBooking/index.d.ts +1 -0
- package/dist/solution/VenueBooking/index.js +30 -19
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/payment-number.d.ts +9 -0
- package/dist/utils/payment-number.js +69 -0
- package/lib/core/index.d.ts +2 -0
- package/lib/core/index.js +4 -0
- 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/OpenData/index.d.ts +2 -0
- package/lib/modules/OpenData/index.js +5 -0
- package/lib/modules/Order/index.d.ts +28 -8
- package/lib/modules/Order/index.js +252 -84
- package/lib/modules/Order/payment-utils.d.ts +26 -0
- package/lib/modules/Order/payment-utils.js +224 -0
- package/lib/modules/Order/types.d.ts +35 -1
- package/lib/modules/Order/utils/orderCollectionIdentity.js +3 -0
- package/lib/modules/Order/utils.js +11 -4
- package/lib/modules/Payment/index.d.ts +2 -0
- package/lib/modules/Payment/index.js +33 -12
- package/lib/modules/Payment/types.d.ts +104 -25
- package/lib/modules/Payment/types.js +1 -0
- package/lib/modules/Payment/walletpass.d.ts +38 -1
- package/lib/modules/Payment/walletpass.js +730 -21
- package/lib/modules/Rules/index.d.ts +3 -0
- package/lib/modules/Rules/index.js +38 -9
- package/lib/server/index.d.ts +25 -0
- package/lib/server/index.js +726 -31
- package/lib/server/modules/index.d.ts +1 -1
- package/lib/server/modules/order/index.d.ts +70 -4
- package/lib/server/modules/order/index.js +818 -69
- package/lib/server/modules/order/types.d.ts +25 -3
- package/lib/server/modules/order/types.js +1 -0
- package/lib/solution/BaseSales/index.d.ts +104 -5
- package/lib/solution/BaseSales/index.js +858 -27
- package/lib/solution/BaseSales/types.d.ts +55 -1
- 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 +66 -12
- package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +6 -1
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +4 -3
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +21 -5
- package/lib/solution/BookingTicket/index.js +64 -13
- package/lib/solution/BookingTicket/types.d.ts +1 -0
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +8 -0
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +37 -5
- package/lib/solution/Sales/index.d.ts +2 -0
- package/lib/solution/Sales/index.js +20 -6
- package/lib/solution/ScanOrder/index.js +8 -0
- package/lib/solution/VenueBooking/index.d.ts +1 -0
- package/lib/solution/VenueBooking/index.js +8 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/utils/payment-number.d.ts +9 -0
- package/lib/utils/payment-number.js +64 -0
- package/package.json +1 -1
|
@@ -35,6 +35,7 @@ import dayjs from 'dayjs';
|
|
|
35
35
|
import { BaseModule } from "../../../modules/BaseModule";
|
|
36
36
|
import { applyOrderCollectionUidRemaps, getOrderCollectionPersistentId, getOrderCollectionReferenceUid, getOrderCollectionUid, isSameOrderCollectionItem, mergeOrderCollectionItems, normalizeOrderCollections } from "../../../modules/Order/utils/orderCollectionIdentity";
|
|
37
37
|
import { OrderHooks } from "./types";
|
|
38
|
+
import { getOrderPaymentIdentityKeys, isIdentifiedPendingOrderPayment, isPendingOrderPayment, mergeOrderPaymentListsByIdentity, mergeOrderPaymentRecord, resolveOrderPaymentIdentity } from "../../../modules/Order/payment-utils";
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
41
|
* SQLite 存储名称
|
|
@@ -48,7 +49,7 @@ var ORDER_SQLITE_DEDUPE_MS = 15000;
|
|
|
48
49
|
/** silentRefresh 最小间隔,避免 preload 后立即全量重拉 */
|
|
49
50
|
var ORDER_SILENT_REFRESH_MIN_INTERVAL_MS = 30000;
|
|
50
51
|
/** 视为「业务侧刚写入」的来源,pubsub 回声可跳过 SQLite */
|
|
51
|
-
var ORDER_BUSINESS_WRITE_SOURCES = new Set(['upsertOrdersFromRemote', 'upsertPendingSyncOrders', 'overwriteExistingOrder', 'markOrderSyncedByExternalSaleNumber']);
|
|
52
|
+
var ORDER_BUSINESS_WRITE_SOURCES = new Set(['upsertOrdersFromRemote', 'upsertPendingSyncOrders', 'upsertLocalDraftOrders', 'overwriteExistingOrder', 'markOrderSyncedByExternalSaleNumber', 'updateLocalPayment']);
|
|
52
53
|
|
|
53
54
|
/**
|
|
54
55
|
* 合并热路径全表去重自检开关:默认关闭。
|
|
@@ -56,6 +57,7 @@ var ORDER_BUSINESS_WRITE_SOURCES = new Set(['upsertOrdersFromRemote', 'upsertPen
|
|
|
56
57
|
* 仅用于排查增量身份索引是否遗漏了重复订单,不应在生产常开。
|
|
57
58
|
*/
|
|
58
59
|
var ORDER_MERGE_SELF_CHECK = false;
|
|
60
|
+
var PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER = '__pisell_os_pending_payment_without_unique_number__';
|
|
59
61
|
var ORDER_AUTHORITATIVE_COLLECTION_FIELDS = ['products', 'bookings', 'payments'];
|
|
60
62
|
var ORDER_COLLECTION_KIND_BY_FIELD = {
|
|
61
63
|
products: 'product',
|
|
@@ -133,16 +135,77 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
133
135
|
return _emitOrdersChanged.apply(this, arguments);
|
|
134
136
|
}
|
|
135
137
|
return emitOrdersChanged;
|
|
138
|
+
}()
|
|
139
|
+
/**
|
|
140
|
+
* 广播远端商品成员增删。监听器异常必须与订单落库和原有订单广播隔离。
|
|
141
|
+
*/
|
|
142
|
+
)
|
|
143
|
+
}, {
|
|
144
|
+
key: "emitRemoteProductMembershipChanges",
|
|
145
|
+
value: (function () {
|
|
146
|
+
var _emitRemoteProductMembershipChanges = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(changes) {
|
|
147
|
+
var _iterator, _step, payload;
|
|
148
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
149
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
150
|
+
case 0:
|
|
151
|
+
_iterator = _createForOfIteratorHelper(changes);
|
|
152
|
+
_context2.prev = 1;
|
|
153
|
+
_iterator.s();
|
|
154
|
+
case 3:
|
|
155
|
+
if ((_step = _iterator.n()).done) {
|
|
156
|
+
_context2.next = 15;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
payload = _step.value;
|
|
160
|
+
_context2.prev = 5;
|
|
161
|
+
_context2.next = 8;
|
|
162
|
+
return this.core.effects.emit(OrderHooks.onRemoteProductMembershipChanged, payload);
|
|
163
|
+
case 8:
|
|
164
|
+
_context2.next = 13;
|
|
165
|
+
break;
|
|
166
|
+
case 10:
|
|
167
|
+
_context2.prev = 10;
|
|
168
|
+
_context2.t0 = _context2["catch"](5);
|
|
169
|
+
this.logError('广播远端订单商品成员变更失败', {
|
|
170
|
+
order_id: payload.order_id,
|
|
171
|
+
source: payload.source,
|
|
172
|
+
added_product_count: payload.added_product_keys.length,
|
|
173
|
+
removed_product_count: payload.removed_product_keys.length,
|
|
174
|
+
error: _context2.t0 instanceof Error ? _context2.t0.message : String(_context2.t0)
|
|
175
|
+
});
|
|
176
|
+
case 13:
|
|
177
|
+
_context2.next = 3;
|
|
178
|
+
break;
|
|
179
|
+
case 15:
|
|
180
|
+
_context2.next = 20;
|
|
181
|
+
break;
|
|
182
|
+
case 17:
|
|
183
|
+
_context2.prev = 17;
|
|
184
|
+
_context2.t1 = _context2["catch"](1);
|
|
185
|
+
_iterator.e(_context2.t1);
|
|
186
|
+
case 20:
|
|
187
|
+
_context2.prev = 20;
|
|
188
|
+
_iterator.f();
|
|
189
|
+
return _context2.finish(20);
|
|
190
|
+
case 23:
|
|
191
|
+
case "end":
|
|
192
|
+
return _context2.stop();
|
|
193
|
+
}
|
|
194
|
+
}, _callee2, this, [[1, 17, 20, 23], [5, 10]]);
|
|
195
|
+
}));
|
|
196
|
+
function emitRemoteProductMembershipChanges(_x) {
|
|
197
|
+
return _emitRemoteProductMembershipChanges.apply(this, arguments);
|
|
198
|
+
}
|
|
199
|
+
return emitRemoteProductMembershipChanges;
|
|
136
200
|
}())
|
|
137
201
|
}, {
|
|
138
202
|
key: "initialize",
|
|
139
203
|
value: function () {
|
|
140
|
-
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
141
|
-
var _options$initialState
|
|
142
|
-
_this3 = this;
|
|
204
|
+
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(core, options) {
|
|
205
|
+
var _options$initialState;
|
|
143
206
|
var appPlugin, app;
|
|
144
|
-
return _regeneratorRuntime().wrap(function
|
|
145
|
-
while (1) switch (
|
|
207
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
208
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
146
209
|
case 0:
|
|
147
210
|
this.core = core;
|
|
148
211
|
this.store = options === null || options === void 0 ? void 0 : options.store;
|
|
@@ -156,9 +219,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
156
219
|
this.updateCreateStore();
|
|
157
220
|
}
|
|
158
221
|
if (Array.isArray(options === null || options === void 0 || (_options$initialState = options.initialState) === null || _options$initialState === void 0 ? void 0 : _options$initialState.list)) {
|
|
159
|
-
this.store.list = options.initialState.list
|
|
160
|
-
return _this3.normalizeOrderForMemoryList(order);
|
|
161
|
-
});
|
|
222
|
+
this.store.list = this.normalizeOrdersForMemoryList(options.initialState.list, 'initialState');
|
|
162
223
|
this.syncOrdersMap();
|
|
163
224
|
this.emitOrdersChanged([], 'initialState');
|
|
164
225
|
} else {
|
|
@@ -174,11 +235,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
174
235
|
});
|
|
175
236
|
case 10:
|
|
176
237
|
case "end":
|
|
177
|
-
return
|
|
238
|
+
return _context3.stop();
|
|
178
239
|
}
|
|
179
|
-
},
|
|
240
|
+
}, _callee3, this);
|
|
180
241
|
}));
|
|
181
|
-
function initialize(
|
|
242
|
+
function initialize(_x2, _x3) {
|
|
182
243
|
return _initialize.apply(this, arguments);
|
|
183
244
|
}
|
|
184
245
|
return initialize;
|
|
@@ -247,7 +308,31 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
247
308
|
}, {
|
|
248
309
|
key: "normalizeOrderCollectionsForIngress",
|
|
249
310
|
value: function normalizeOrderCollectionsForIngress(order, source) {
|
|
250
|
-
var
|
|
311
|
+
var sourceOrder = cloneDeep(order);
|
|
312
|
+
var sourceOrderRecord = sourceOrder;
|
|
313
|
+
if (Array.isArray(sourceOrderRecord.payments)) {
|
|
314
|
+
sourceOrderRecord.payments = sourceOrderRecord.payments.map(function (payment) {
|
|
315
|
+
if (!isPendingOrderPayment(payment) || getOrderPaymentIdentityKeys(payment).some(function (key) {
|
|
316
|
+
return key.startsWith('unique_payment_number:');
|
|
317
|
+
})) {
|
|
318
|
+
return payment;
|
|
319
|
+
}
|
|
320
|
+
return _objectSpread(_objectSpread({}, payment), {}, _defineProperty({}, PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER, true));
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
var result = normalizeOrderCollections(sourceOrder);
|
|
324
|
+
var normalizedOrderRecord = result.order;
|
|
325
|
+
if (Array.isArray(normalizedOrderRecord.payments)) {
|
|
326
|
+
normalizedOrderRecord.payments = normalizedOrderRecord.payments.map(function (payment) {
|
|
327
|
+
if (!(payment !== null && payment !== void 0 && payment[PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER])) return payment;
|
|
328
|
+
var nextPayment = _objectSpread({}, payment);
|
|
329
|
+
var metadata = _objectSpread({}, nextPayment.metadata || {});
|
|
330
|
+
delete metadata.unique_payment_number;
|
|
331
|
+
delete nextPayment[PENDING_PAYMENT_WITHOUT_UNIQUE_MARKER];
|
|
332
|
+
nextPayment.metadata = metadata;
|
|
333
|
+
return nextPayment;
|
|
334
|
+
});
|
|
335
|
+
}
|
|
251
336
|
var kinds = ['product', 'booking', 'payment'];
|
|
252
337
|
var hasChanges = kinds.some(function (kind) {
|
|
253
338
|
var stats = result.stats[kind];
|
|
@@ -291,8 +376,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
291
376
|
key: "mergeAuthoritativeOrderCollection",
|
|
292
377
|
value: function mergeAuthoritativeOrderCollection(field, existing, incoming) {
|
|
293
378
|
var uidRemaps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
379
|
+
var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
294
380
|
var kind = ORDER_COLLECTION_KIND_BY_FIELD[field];
|
|
295
381
|
var existingItems = Array.isArray(existing) ? existing : [];
|
|
382
|
+
if (field === 'payments' && options.preserveIdentifiedPendingPayments) {
|
|
383
|
+
return mergeOrderPaymentListsByIdentity(existingItems, incoming, {
|
|
384
|
+
preserveUnmatchedExistingWhen: isIdentifiedPendingOrderPayment
|
|
385
|
+
});
|
|
386
|
+
}
|
|
296
387
|
return incoming.map(function (incomingItem) {
|
|
297
388
|
var existingItem = existingItems.find(function (item) {
|
|
298
389
|
return isSameOrderCollectionItem(kind, item, incomingItem);
|
|
@@ -301,11 +392,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
301
392
|
var mergedItem = mergeOrderCollectionItems(kind, existingItem, incomingItem);
|
|
302
393
|
var mergedUid = getOrderCollectionUid(kind, mergedItem);
|
|
303
394
|
if (mergedUid) {
|
|
304
|
-
var
|
|
305
|
-
|
|
395
|
+
var _iterator2 = _createForOfIteratorHelper(new Set([getOrderCollectionReferenceUid(kind, existingItem), getOrderCollectionReferenceUid(kind, incomingItem)])),
|
|
396
|
+
_step2;
|
|
306
397
|
try {
|
|
307
|
-
for (
|
|
308
|
-
var from =
|
|
398
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
399
|
+
var from = _step2.value;
|
|
309
400
|
if (!from || from === mergedUid) continue;
|
|
310
401
|
uidRemaps.push({
|
|
311
402
|
kind: kind,
|
|
@@ -315,9 +406,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
315
406
|
});
|
|
316
407
|
}
|
|
317
408
|
} catch (err) {
|
|
318
|
-
|
|
409
|
+
_iterator2.e(err);
|
|
319
410
|
} finally {
|
|
320
|
-
|
|
411
|
+
_iterator2.f();
|
|
321
412
|
}
|
|
322
413
|
}
|
|
323
414
|
return mergedItem;
|
|
@@ -348,11 +439,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
348
439
|
key: "recordRecentSqliteWrite",
|
|
349
440
|
value: function recordRecentSqliteWrite(source, orders) {
|
|
350
441
|
var now = Date.now();
|
|
351
|
-
var
|
|
352
|
-
|
|
442
|
+
var _iterator3 = _createForOfIteratorHelper(orders),
|
|
443
|
+
_step3;
|
|
353
444
|
try {
|
|
354
|
-
for (
|
|
355
|
-
var order =
|
|
445
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
446
|
+
var order = _step3.value;
|
|
356
447
|
var storageKey = this.getOrderStorageKey(order);
|
|
357
448
|
if (!storageKey) continue;
|
|
358
449
|
this.recentSqliteWriteByStorageKey.set(storageKey, {
|
|
@@ -361,9 +452,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
361
452
|
});
|
|
362
453
|
}
|
|
363
454
|
} catch (err) {
|
|
364
|
-
|
|
455
|
+
_iterator3.e(err);
|
|
365
456
|
} finally {
|
|
366
|
-
|
|
457
|
+
_iterator3.f();
|
|
367
458
|
}
|
|
368
459
|
}
|
|
369
460
|
|
|
@@ -376,6 +467,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
376
467
|
}, {
|
|
377
468
|
key: "filterRedundantPatchOrders",
|
|
378
469
|
value: function filterRedundantPatchOrders(source, orders, mergeActions) {
|
|
470
|
+
var forceWriteStorageKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Set();
|
|
379
471
|
var eligibleSkipSources = new Set(['pubsub.bodyUpsert', 'pubsub.httpRefresh']);
|
|
380
472
|
if (!eligibleSkipSources.has(source)) {
|
|
381
473
|
return {
|
|
@@ -386,11 +478,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
386
478
|
var now = Date.now();
|
|
387
479
|
var toWrite = [];
|
|
388
480
|
var skipped = [];
|
|
389
|
-
var
|
|
390
|
-
|
|
481
|
+
var _iterator4 = _createForOfIteratorHelper(orders),
|
|
482
|
+
_step4;
|
|
391
483
|
try {
|
|
392
|
-
for (
|
|
393
|
-
var order =
|
|
484
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
485
|
+
var order = _step4.value;
|
|
394
486
|
var storageKey = this.getOrderStorageKey(order);
|
|
395
487
|
if (!storageKey) {
|
|
396
488
|
toWrite.push(order);
|
|
@@ -404,6 +496,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
404
496
|
toWrite.push(order);
|
|
405
497
|
continue;
|
|
406
498
|
}
|
|
499
|
+
|
|
500
|
+
// 远端商品成员确实发生增删时必须落库,避免内存已更新但 SQLite 仍被回声窗口跳过。
|
|
501
|
+
if (forceWriteStorageKeys.has(storageKey)) {
|
|
502
|
+
toWrite.push(order);
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
407
505
|
var recent = this.recentSqliteWriteByStorageKey.get(storageKey);
|
|
408
506
|
if (recent && ORDER_BUSINESS_WRITE_SOURCES.has(recent.source) && now - recent.ts < ORDER_SQLITE_DEDUPE_MS) {
|
|
409
507
|
var _order$order_id2;
|
|
@@ -419,9 +517,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
419
517
|
toWrite.push(order);
|
|
420
518
|
}
|
|
421
519
|
} catch (err) {
|
|
422
|
-
|
|
520
|
+
_iterator4.e(err);
|
|
423
521
|
} finally {
|
|
424
|
-
|
|
522
|
+
_iterator4.f();
|
|
425
523
|
}
|
|
426
524
|
return {
|
|
427
525
|
toWrite: toWrite,
|
|
@@ -441,11 +539,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
441
539
|
var now = Date.now();
|
|
442
540
|
var toFetch = [];
|
|
443
541
|
var skipped = [];
|
|
444
|
-
var
|
|
445
|
-
|
|
542
|
+
var _iterator5 = _createForOfIteratorHelper(ids),
|
|
543
|
+
_step5;
|
|
446
544
|
try {
|
|
447
|
-
for (
|
|
448
|
-
var id =
|
|
545
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
546
|
+
var id = _step5.value;
|
|
449
547
|
var existing = this.getOrderByOrderId(id);
|
|
450
548
|
if (!existing) {
|
|
451
549
|
toFetch.push(id);
|
|
@@ -464,9 +562,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
464
562
|
toFetch.push(id);
|
|
465
563
|
}
|
|
466
564
|
} catch (err) {
|
|
467
|
-
|
|
565
|
+
_iterator5.e(err);
|
|
468
566
|
} finally {
|
|
469
|
-
|
|
567
|
+
_iterator5.f();
|
|
470
568
|
}
|
|
471
569
|
return {
|
|
472
570
|
toFetch: toFetch,
|
|
@@ -602,61 +700,26 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
602
700
|
key: "preload",
|
|
603
701
|
value: function () {
|
|
604
702
|
var _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
605
|
-
var
|
|
606
|
-
var getData;
|
|
703
|
+
var orders;
|
|
607
704
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
608
705
|
while (1) switch (_context4.prev = _context4.next) {
|
|
609
706
|
case 0:
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
// if (cachedOrders.length > 0 && hasPulledInCurrentWindow) {
|
|
613
|
-
// this.store.list = cloneDeep(cachedOrders)
|
|
614
|
-
// this.syncOrdersMap()
|
|
615
|
-
// this.core.effects.emit(OrderHooks.onOrdersChanged, this.store.list)
|
|
616
|
-
// return
|
|
617
|
-
// }
|
|
618
|
-
// if (hasPulledInCurrentWindow) {
|
|
619
|
-
// this.logInfo('当天已完成全量订单拉取,跳过本次全量拉取', {
|
|
620
|
-
// lastFullFetchAt: this.getStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY),
|
|
621
|
-
// })
|
|
622
|
-
// return
|
|
623
|
-
// }
|
|
624
|
-
getData = /*#__PURE__*/function () {
|
|
625
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
626
|
-
var orders;
|
|
627
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
628
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
629
|
-
case 0:
|
|
630
|
-
_context3.next = 2;
|
|
631
|
-
return _this4.loadOrdersByServer();
|
|
632
|
-
case 2:
|
|
633
|
-
orders = _context3.sent;
|
|
634
|
-
if (!(orders.length === 0)) {
|
|
635
|
-
_context3.next = 5;
|
|
636
|
-
break;
|
|
637
|
-
}
|
|
638
|
-
return _context3.abrupt("return");
|
|
639
|
-
case 5:
|
|
640
|
-
_this4.store.list = cloneDeep(orders);
|
|
641
|
-
_this4.syncOrdersMap();
|
|
642
|
-
_this4.emitOrdersChanged([], 'preload');
|
|
643
|
-
_this4.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
644
|
-
case 9:
|
|
645
|
-
case "end":
|
|
646
|
-
return _context3.stop();
|
|
647
|
-
}
|
|
648
|
-
}, _callee3);
|
|
649
|
-
}));
|
|
650
|
-
return function getData() {
|
|
651
|
-
return _ref.apply(this, arguments);
|
|
652
|
-
};
|
|
653
|
-
}();
|
|
654
|
-
getData();
|
|
707
|
+
_context4.next = 2;
|
|
708
|
+
return this.loadOrdersByServer();
|
|
655
709
|
case 2:
|
|
710
|
+
orders = _context4.sent;
|
|
711
|
+
this.store.list = cloneDeep(orders);
|
|
712
|
+
this.syncOrdersMap();
|
|
713
|
+
_context4.next = 7;
|
|
714
|
+
return this.emitOrdersChanged([], 'preload');
|
|
715
|
+
case 7:
|
|
716
|
+
_context4.next = 9;
|
|
717
|
+
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
718
|
+
case 9:
|
|
656
719
|
case "end":
|
|
657
720
|
return _context4.stop();
|
|
658
721
|
}
|
|
659
|
-
}, _callee4);
|
|
722
|
+
}, _callee4, this);
|
|
660
723
|
}));
|
|
661
724
|
function preload() {
|
|
662
725
|
return _preload.apply(this, arguments);
|
|
@@ -680,15 +743,38 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
680
743
|
value: function getOrderByOrderId(orderId) {
|
|
681
744
|
return this.store.map.get(this.getIdKey(orderId));
|
|
682
745
|
}
|
|
746
|
+
}, {
|
|
747
|
+
key: "buildLocalPaymentOrderLogContext",
|
|
748
|
+
value: function buildLocalPaymentOrderLogContext(order) {
|
|
749
|
+
var _order$order_id3, _order$external_sale_, _order$order_number, _order$shop_order_num, _order$shop_full_orde, _order$status, _order$payment_status, _order$platform, _order$business_code, _order$order_sales_ch, _order$sales_channel, _order$type;
|
|
750
|
+
if (!order) return {};
|
|
751
|
+
return {
|
|
752
|
+
order_id: (_order$order_id3 = order.order_id) !== null && _order$order_id3 !== void 0 ? _order$order_id3 : null,
|
|
753
|
+
external_sale_number: (_order$external_sale_ = order.external_sale_number) !== null && _order$external_sale_ !== void 0 ? _order$external_sale_ : null,
|
|
754
|
+
order_number: (_order$order_number = order.order_number) !== null && _order$order_number !== void 0 ? _order$order_number : null,
|
|
755
|
+
shop_order_number: (_order$shop_order_num = order.shop_order_number) !== null && _order$shop_order_num !== void 0 ? _order$shop_order_num : null,
|
|
756
|
+
shop_full_order_number: (_order$shop_full_orde = order.shop_full_order_number) !== null && _order$shop_full_orde !== void 0 ? _order$shop_full_orde : null,
|
|
757
|
+
order_status: (_order$status = order.status) !== null && _order$status !== void 0 ? _order$status : null,
|
|
758
|
+
payment_status: (_order$payment_status = order.payment_status) !== null && _order$payment_status !== void 0 ? _order$payment_status : null,
|
|
759
|
+
is_draft_order: Number(order.is_draft_order || 0),
|
|
760
|
+
need_sync: Number(order.need_sync || 0),
|
|
761
|
+
platform: (_order$platform = order.platform) !== null && _order$platform !== void 0 ? _order$platform : null,
|
|
762
|
+
business_code: (_order$business_code = order.business_code) !== null && _order$business_code !== void 0 ? _order$business_code : null,
|
|
763
|
+
order_sales_channel: (_order$order_sales_ch = order.order_sales_channel) !== null && _order$order_sales_ch !== void 0 ? _order$order_sales_ch : null,
|
|
764
|
+
sales_channel: (_order$sales_channel = order.sales_channel) !== null && _order$sales_channel !== void 0 ? _order$sales_channel : null,
|
|
765
|
+
order_type: (_order$type = order.type) !== null && _order$type !== void 0 ? _order$type : null,
|
|
766
|
+
payments_count: Array.isArray(order.payments) ? order.payments.length : 0
|
|
767
|
+
};
|
|
768
|
+
}
|
|
683
769
|
}, {
|
|
684
770
|
key: "getLocalOrderFromMemoryByLookup",
|
|
685
771
|
value: function getLocalOrderFromMemoryByLookup(lookup) {
|
|
686
|
-
var
|
|
772
|
+
var _this3 = this;
|
|
687
773
|
var key = this.getIdKey(lookup);
|
|
688
774
|
var memoryOrderById = this.store.map.get(key);
|
|
689
775
|
if (memoryOrderById) return memoryOrderById;
|
|
690
776
|
var memoryOrder = this.store.list.find(function (order) {
|
|
691
|
-
return
|
|
777
|
+
return _this3.isOrderLookupMatch(order, key);
|
|
692
778
|
});
|
|
693
779
|
return memoryOrder || null;
|
|
694
780
|
}
|
|
@@ -696,118 +782,341 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
696
782
|
key: "getLocalOrderByLookup",
|
|
697
783
|
value: function () {
|
|
698
784
|
var _getLocalOrderByLookup = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(lookup) {
|
|
699
|
-
var
|
|
700
|
-
var
|
|
785
|
+
var _this4 = this;
|
|
786
|
+
var options,
|
|
787
|
+
key,
|
|
788
|
+
logContext,
|
|
789
|
+
memoryOrderById,
|
|
790
|
+
memoryOrder,
|
|
791
|
+
orders,
|
|
792
|
+
localOrder,
|
|
793
|
+
normalizedOrder,
|
|
794
|
+
_args5 = arguments;
|
|
701
795
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
702
796
|
while (1) switch (_context5.prev = _context5.next) {
|
|
703
797
|
case 0:
|
|
798
|
+
options = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};
|
|
704
799
|
key = this.getIdKey(lookup);
|
|
800
|
+
logContext = {
|
|
801
|
+
operation_id: options.operationId,
|
|
802
|
+
lookup: key,
|
|
803
|
+
memory_order_count: this.store.list.length
|
|
804
|
+
};
|
|
805
|
+
if (options.operationId) {
|
|
806
|
+
this.logInfo('getLocalOrderByLookup-localPayment-开始', logContext);
|
|
807
|
+
}
|
|
705
808
|
memoryOrderById = this.store.map.get(key);
|
|
706
809
|
if (!memoryOrderById) {
|
|
707
|
-
_context5.next =
|
|
810
|
+
_context5.next = 8;
|
|
708
811
|
break;
|
|
709
812
|
}
|
|
813
|
+
if (options.operationId) {
|
|
814
|
+
this.logInfo('getLocalOrderByLookup-localPayment-命中内存映射', _objectSpread(_objectSpread({}, logContext), this.buildLocalPaymentOrderLogContext(memoryOrderById)));
|
|
815
|
+
}
|
|
710
816
|
return _context5.abrupt("return", memoryOrderById);
|
|
711
|
-
case
|
|
817
|
+
case 8:
|
|
712
818
|
memoryOrder = this.store.list.find(function (order) {
|
|
713
|
-
return
|
|
819
|
+
return _this4.isOrderLookupMatch(order, key);
|
|
714
820
|
});
|
|
715
821
|
if (!memoryOrder) {
|
|
716
|
-
_context5.next =
|
|
822
|
+
_context5.next = 12;
|
|
717
823
|
break;
|
|
718
824
|
}
|
|
825
|
+
if (options.operationId) {
|
|
826
|
+
this.logInfo('getLocalOrderByLookup-localPayment-命中内存列表', _objectSpread(_objectSpread({}, logContext), this.buildLocalPaymentOrderLogContext(memoryOrder)));
|
|
827
|
+
}
|
|
719
828
|
return _context5.abrupt("return", memoryOrder);
|
|
720
|
-
case
|
|
721
|
-
|
|
829
|
+
case 12:
|
|
830
|
+
if (options.operationId) {
|
|
831
|
+
this.logInfo('getLocalOrderByLookup-localPayment-开始读取SQLite', logContext);
|
|
832
|
+
}
|
|
833
|
+
_context5.next = 15;
|
|
722
834
|
return this.loadOrdersFromSQLite();
|
|
723
|
-
case
|
|
835
|
+
case 15:
|
|
724
836
|
orders = _context5.sent;
|
|
725
837
|
localOrder = orders.find(function (order) {
|
|
726
|
-
return
|
|
838
|
+
return _this4.isOrderLookupMatch(order, key);
|
|
727
839
|
});
|
|
728
840
|
if (localOrder) {
|
|
729
|
-
_context5.next =
|
|
841
|
+
_context5.next = 20;
|
|
730
842
|
break;
|
|
731
843
|
}
|
|
844
|
+
if (options.operationId) {
|
|
845
|
+
this.logWarning('getLocalOrderByLookup-localPayment-SQLite未命中', _objectSpread(_objectSpread({}, logContext), {}, {
|
|
846
|
+
sqlite_order_count: orders.length
|
|
847
|
+
}));
|
|
848
|
+
}
|
|
732
849
|
return _context5.abrupt("return", null);
|
|
733
|
-
case
|
|
734
|
-
this.store.list =
|
|
735
|
-
return _this6.normalizeOrderForMemoryList(order);
|
|
736
|
-
});
|
|
850
|
+
case 20:
|
|
851
|
+
this.store.list = this.normalizeOrdersForMemoryList(orders, 'getLocalOrderByLookup.sqliteMemory');
|
|
737
852
|
this.syncOrdersMap();
|
|
738
|
-
|
|
739
|
-
|
|
853
|
+
normalizedOrder = this.normalizeOrderForMemoryList(localOrder);
|
|
854
|
+
if (options.operationId) {
|
|
855
|
+
this.logInfo('getLocalOrderByLookup-localPayment-SQLite命中', _objectSpread(_objectSpread({}, logContext), {}, {
|
|
856
|
+
sqlite_order_count: orders.length
|
|
857
|
+
}, this.buildLocalPaymentOrderLogContext(normalizedOrder)));
|
|
858
|
+
}
|
|
859
|
+
return _context5.abrupt("return", normalizedOrder);
|
|
860
|
+
case 25:
|
|
740
861
|
case "end":
|
|
741
862
|
return _context5.stop();
|
|
742
863
|
}
|
|
743
864
|
}, _callee5, this);
|
|
744
865
|
}));
|
|
745
|
-
function getLocalOrderByLookup(
|
|
866
|
+
function getLocalOrderByLookup(_x4) {
|
|
746
867
|
return _getLocalOrderByLookup.apply(this, arguments);
|
|
747
868
|
}
|
|
748
869
|
return getLocalOrderByLookup;
|
|
749
870
|
}()
|
|
750
871
|
}, {
|
|
751
|
-
key: "
|
|
872
|
+
key: "getLocalPayment",
|
|
752
873
|
value: function () {
|
|
753
|
-
var
|
|
754
|
-
var
|
|
755
|
-
_this7 = this;
|
|
756
|
-
var orderList, data, mergedOrders, memoryOrders;
|
|
874
|
+
var _getLocalPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(params) {
|
|
875
|
+
var logContext, order, payments, match;
|
|
757
876
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
758
877
|
while (1) switch (_context6.prev = _context6.next) {
|
|
878
|
+
case 0:
|
|
879
|
+
logContext = {
|
|
880
|
+
operation_id: params.operationId,
|
|
881
|
+
sale_id: params.saleId,
|
|
882
|
+
payment_number: params.paymentNumber
|
|
883
|
+
};
|
|
884
|
+
this.logInfo('getLocalPayment-开始', logContext);
|
|
885
|
+
_context6.prev = 2;
|
|
886
|
+
_context6.next = 5;
|
|
887
|
+
return this.getLocalOrderByLookup(params.saleId, {
|
|
888
|
+
operationId: params.operationId
|
|
889
|
+
});
|
|
890
|
+
case 5:
|
|
891
|
+
order = _context6.sent;
|
|
892
|
+
if (order) {
|
|
893
|
+
_context6.next = 9;
|
|
894
|
+
break;
|
|
895
|
+
}
|
|
896
|
+
this.logWarning('getLocalPayment-订单未命中', logContext);
|
|
897
|
+
return _context6.abrupt("return", null);
|
|
898
|
+
case 9:
|
|
899
|
+
payments = order.payments || [];
|
|
900
|
+
match = resolveOrderPaymentIdentity(payments, params.paymentNumber, 'compat');
|
|
901
|
+
if (match) {
|
|
902
|
+
_context6.next = 14;
|
|
903
|
+
break;
|
|
904
|
+
}
|
|
905
|
+
this.logWarning('getLocalPayment-支付项未命中', _objectSpread(_objectSpread(_objectSpread({}, logContext), this.buildLocalPaymentOrderLogContext(order)), {}, {
|
|
906
|
+
payments: payments
|
|
907
|
+
}));
|
|
908
|
+
return _context6.abrupt("return", null);
|
|
909
|
+
case 14:
|
|
910
|
+
this.logInfo('getLocalPayment-支付项命中', _objectSpread(_objectSpread(_objectSpread({}, logContext), this.buildLocalPaymentOrderLogContext(order)), {}, {
|
|
911
|
+
matched_by: match.matchedBy,
|
|
912
|
+
payment_index: match.index,
|
|
913
|
+
payment: match.payment
|
|
914
|
+
}));
|
|
915
|
+
return _context6.abrupt("return", {
|
|
916
|
+
order: order,
|
|
917
|
+
payment: match.payment,
|
|
918
|
+
paymentIndex: match.index,
|
|
919
|
+
matchedBy: match.matchedBy
|
|
920
|
+
});
|
|
921
|
+
case 18:
|
|
922
|
+
_context6.prev = 18;
|
|
923
|
+
_context6.t0 = _context6["catch"](2);
|
|
924
|
+
this.logError('getLocalPayment-查询失败', _objectSpread(_objectSpread({}, logContext), {}, {
|
|
925
|
+
error: _context6.t0 instanceof Error ? _context6.t0.message : String(_context6.t0)
|
|
926
|
+
}));
|
|
927
|
+
throw _context6.t0;
|
|
928
|
+
case 22:
|
|
929
|
+
case "end":
|
|
930
|
+
return _context6.stop();
|
|
931
|
+
}
|
|
932
|
+
}, _callee6, this, [[2, 18]]);
|
|
933
|
+
}));
|
|
934
|
+
function getLocalPayment(_x5) {
|
|
935
|
+
return _getLocalPayment.apply(this, arguments);
|
|
936
|
+
}
|
|
937
|
+
return getLocalPayment;
|
|
938
|
+
}()
|
|
939
|
+
}, {
|
|
940
|
+
key: "updateLocalPayment",
|
|
941
|
+
value: function () {
|
|
942
|
+
var _updateLocalPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(params) {
|
|
943
|
+
var logContext, found, previousPayment, nextPayment, nextOrder, paymentContext, targetIndex, shouldKeepInMemory, previousList, storageOrder, _storageOrder$order_i, _storageOrder$order_i2, _storageOrder$order_i3;
|
|
944
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
945
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
946
|
+
case 0:
|
|
947
|
+
logContext = {
|
|
948
|
+
operation_id: params.operationId,
|
|
949
|
+
sale_id: params.saleId,
|
|
950
|
+
payment_number: params.paymentNumber,
|
|
951
|
+
incoming_payment_update: params.updates
|
|
952
|
+
};
|
|
953
|
+
this.logInfo('updateLocalPayment-开始', logContext);
|
|
954
|
+
_context7.next = 4;
|
|
955
|
+
return this.getLocalPayment(params);
|
|
956
|
+
case 4:
|
|
957
|
+
found = _context7.sent;
|
|
958
|
+
if (found) {
|
|
959
|
+
_context7.next = 8;
|
|
960
|
+
break;
|
|
961
|
+
}
|
|
962
|
+
this.logWarning('updateLocalPayment-支付项未命中', logContext);
|
|
963
|
+
return _context7.abrupt("return", null);
|
|
964
|
+
case 8:
|
|
965
|
+
previousPayment = cloneDeep(found.payment);
|
|
966
|
+
nextPayment = mergeOrderPaymentRecord(found.payment, _objectSpread(_objectSpread({}, params.updates), {}, {
|
|
967
|
+
updated_at: params.updates.updated_at || dayjs().format('YYYY-MM-DD HH:mm:ss')
|
|
968
|
+
}));
|
|
969
|
+
nextOrder = _objectSpread(_objectSpread({}, found.order), {}, {
|
|
970
|
+
payments: (found.order.payments || []).map(function (payment, index) {
|
|
971
|
+
return index === found.paymentIndex ? nextPayment : payment;
|
|
972
|
+
}),
|
|
973
|
+
updated_at: dayjs().format('YYYY-MM-DD HH:mm:ss')
|
|
974
|
+
});
|
|
975
|
+
paymentContext = _objectSpread(_objectSpread(_objectSpread({}, logContext), {}, {
|
|
976
|
+
matched_by: found.matchedBy,
|
|
977
|
+
payment_index: found.paymentIndex
|
|
978
|
+
}, this.buildLocalPaymentOrderLogContext(nextOrder)), {}, {
|
|
979
|
+
previous_payment: previousPayment,
|
|
980
|
+
payment: nextPayment
|
|
981
|
+
});
|
|
982
|
+
this.logInfo('updateLocalPayment-支付项合并完成', paymentContext);
|
|
983
|
+
targetIndex = this.findOrderIndexByIdentity(this.store.list, found.order);
|
|
984
|
+
shouldKeepInMemory = this.shouldKeepOrderInMemory(nextOrder);
|
|
985
|
+
if (!(targetIndex < 0 && shouldKeepInMemory)) {
|
|
986
|
+
_context7.next = 18;
|
|
987
|
+
break;
|
|
988
|
+
}
|
|
989
|
+
this.logError('updateLocalPayment-订单Store索引未命中', paymentContext);
|
|
990
|
+
return _context7.abrupt("return", null);
|
|
991
|
+
case 18:
|
|
992
|
+
previousList = this.store.list;
|
|
993
|
+
this.store.list = shouldKeepInMemory ? this.store.list.map(function (order, index) {
|
|
994
|
+
return index === targetIndex ? nextOrder : order;
|
|
995
|
+
}) : this.store.list.filter(function (_, index) {
|
|
996
|
+
return index !== targetIndex;
|
|
997
|
+
});
|
|
998
|
+
this.syncOrdersMap();
|
|
999
|
+
storageOrder = this.withoutSyntheticDraftOrderId(nextOrder);
|
|
1000
|
+
_context7.prev = 22;
|
|
1001
|
+
this.logInfo('updateLocalPayment-SQLite写入开始', _objectSpread(_objectSpread({}, paymentContext), {}, {
|
|
1002
|
+
storage_order_id: (_storageOrder$order_i = storageOrder.order_id) !== null && _storageOrder$order_i !== void 0 ? _storageOrder$order_i : null
|
|
1003
|
+
}));
|
|
1004
|
+
_context7.next = 26;
|
|
1005
|
+
return this.updateOrderInSQLite(storageOrder, 'updateLocalPayment', {
|
|
1006
|
+
throwOnError: true
|
|
1007
|
+
});
|
|
1008
|
+
case 26:
|
|
1009
|
+
this.logInfo('updateLocalPayment-SQLite写入完成', _objectSpread(_objectSpread({}, paymentContext), {}, {
|
|
1010
|
+
storage_order_id: (_storageOrder$order_i2 = storageOrder.order_id) !== null && _storageOrder$order_i2 !== void 0 ? _storageOrder$order_i2 : null
|
|
1011
|
+
}));
|
|
1012
|
+
_context7.next = 35;
|
|
1013
|
+
break;
|
|
1014
|
+
case 29:
|
|
1015
|
+
_context7.prev = 29;
|
|
1016
|
+
_context7.t0 = _context7["catch"](22);
|
|
1017
|
+
this.store.list = previousList;
|
|
1018
|
+
this.syncOrdersMap();
|
|
1019
|
+
this.logError('updateLocalPayment-SQLite写入失败并回滚内存', _objectSpread(_objectSpread({}, paymentContext), {}, {
|
|
1020
|
+
storage_order_id: (_storageOrder$order_i3 = storageOrder.order_id) !== null && _storageOrder$order_i3 !== void 0 ? _storageOrder$order_i3 : null,
|
|
1021
|
+
error: _context7.t0 instanceof Error ? _context7.t0.message : String(_context7.t0)
|
|
1022
|
+
}));
|
|
1023
|
+
throw _context7.t0;
|
|
1024
|
+
case 35:
|
|
1025
|
+
if (!(shouldKeepInMemory || targetIndex >= 0)) {
|
|
1026
|
+
_context7.next = 38;
|
|
1027
|
+
break;
|
|
1028
|
+
}
|
|
1029
|
+
_context7.next = 38;
|
|
1030
|
+
return this.emitOrdersChanged(shouldKeepInMemory ? [nextOrder] : [], shouldKeepInMemory ? 'updateLocalPayment' : 'updateLocalPayment.sqliteOnlyDraft');
|
|
1031
|
+
case 38:
|
|
1032
|
+
this.logInfo('updateLocalPayment-变更事件完成', paymentContext);
|
|
1033
|
+
return _context7.abrupt("return", {
|
|
1034
|
+
order: nextOrder,
|
|
1035
|
+
payment: nextPayment,
|
|
1036
|
+
previousPayment: previousPayment
|
|
1037
|
+
});
|
|
1038
|
+
case 40:
|
|
1039
|
+
case "end":
|
|
1040
|
+
return _context7.stop();
|
|
1041
|
+
}
|
|
1042
|
+
}, _callee7, this, [[22, 29]]);
|
|
1043
|
+
}));
|
|
1044
|
+
function updateLocalPayment(_x6) {
|
|
1045
|
+
return _updateLocalPayment.apply(this, arguments);
|
|
1046
|
+
}
|
|
1047
|
+
return updateLocalPayment;
|
|
1048
|
+
}()
|
|
1049
|
+
}, {
|
|
1050
|
+
key: "loadOrdersByServer",
|
|
1051
|
+
value: function () {
|
|
1052
|
+
var _loadOrdersByServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
1053
|
+
var _this5 = this,
|
|
1054
|
+
_this$store;
|
|
1055
|
+
var orderList, protectedOrdersBeforeRemoteFetch, data, mergedOrders, memoryOrders;
|
|
1056
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
1057
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
759
1058
|
case 0:
|
|
760
1059
|
orderList = [];
|
|
1060
|
+
_context8.next = 3;
|
|
1061
|
+
return this.loadOrdersFromSQLite();
|
|
1062
|
+
case 3:
|
|
1063
|
+
protectedOrdersBeforeRemoteFetch = _context8.sent.filter(function (order) {
|
|
1064
|
+
return _this5.shouldProtectLocalOrderFromRemoteSnapshot(order);
|
|
1065
|
+
});
|
|
761
1066
|
this.logInfo('loadOrdersByServer-开始', {
|
|
762
1067
|
hasOrderDataSource: !!this.orderDataSource,
|
|
763
|
-
query: ((_this$store = this.store) === null || _this$store === void 0 ? void 0 : _this$store.createdAtQuery) || null
|
|
1068
|
+
query: ((_this$store = this.store) === null || _this$store === void 0 ? void 0 : _this$store.createdAtQuery) || null,
|
|
1069
|
+
protectedLocalOrderCount: protectedOrdersBeforeRemoteFetch.length,
|
|
1070
|
+
protectedPendingPaymentCount: protectedOrdersBeforeRemoteFetch.reduce(function (count, order) {
|
|
1071
|
+
return count + _this5.getIdentifiedPendingPayments(order).length;
|
|
1072
|
+
}, 0)
|
|
764
1073
|
});
|
|
765
1074
|
if (!this.orderDataSource) {
|
|
766
|
-
|
|
1075
|
+
_context8.next = 20;
|
|
767
1076
|
break;
|
|
768
1077
|
}
|
|
769
|
-
|
|
770
|
-
|
|
1078
|
+
_context8.prev = 6;
|
|
1079
|
+
_context8.next = 9;
|
|
771
1080
|
return this.orderDataSource.run({
|
|
772
1081
|
sse: {
|
|
773
1082
|
query: this.store.createdAtQuery
|
|
774
1083
|
}
|
|
775
1084
|
});
|
|
776
|
-
case
|
|
777
|
-
data =
|
|
1085
|
+
case 9:
|
|
1086
|
+
data = _context8.sent;
|
|
778
1087
|
orderList = data || [];
|
|
779
1088
|
this.logInfo('loadOrdersByServer-SSE拉取成功', {
|
|
780
1089
|
count: orderList.length
|
|
781
1090
|
});
|
|
782
1091
|
this.markOrderPulledAtNow();
|
|
783
1092
|
this.lastServerFullFetchAtMs = Date.now();
|
|
784
|
-
|
|
1093
|
+
_context8.next = 20;
|
|
785
1094
|
break;
|
|
786
|
-
case
|
|
787
|
-
|
|
788
|
-
|
|
1095
|
+
case 16:
|
|
1096
|
+
_context8.prev = 16;
|
|
1097
|
+
_context8.t0 = _context8["catch"](6);
|
|
789
1098
|
this.logInfo('loadOrdersByServer-SSE拉取失败,保持当前内存订单');
|
|
790
|
-
return
|
|
791
|
-
case
|
|
792
|
-
|
|
793
|
-
return this.replaceOrdersSnapshotInSQLite(orderList, 'loadOrdersByServer');
|
|
794
|
-
case
|
|
795
|
-
mergedOrders =
|
|
796
|
-
memoryOrders =
|
|
797
|
-
return _this7.normalizeOrderForMemoryList(order);
|
|
798
|
-
});
|
|
1099
|
+
return _context8.abrupt("return", this.store.list);
|
|
1100
|
+
case 20:
|
|
1101
|
+
_context8.next = 22;
|
|
1102
|
+
return this.replaceOrdersSnapshotInSQLite(orderList, 'loadOrdersByServer', protectedOrdersBeforeRemoteFetch);
|
|
1103
|
+
case 22:
|
|
1104
|
+
mergedOrders = _context8.sent;
|
|
1105
|
+
memoryOrders = this.normalizeOrdersForMemoryList(mergedOrders, 'loadOrdersByServer.memory');
|
|
799
1106
|
this.logInfo('loadOrdersByServer-结束', {
|
|
800
|
-
count: memoryOrders.length
|
|
1107
|
+
count: memoryOrders.length,
|
|
1108
|
+
persistedCount: mergedOrders.length,
|
|
1109
|
+
sqliteOnlyDraftCount: mergedOrders.length - memoryOrders.length
|
|
801
1110
|
});
|
|
802
|
-
|
|
1111
|
+
_context8.next = 27;
|
|
803
1112
|
return this.core.effects.emit(OrderHooks.onOrdersLoaded, memoryOrders);
|
|
804
|
-
case
|
|
805
|
-
return
|
|
806
|
-
case
|
|
1113
|
+
case 27:
|
|
1114
|
+
return _context8.abrupt("return", memoryOrders);
|
|
1115
|
+
case 28:
|
|
807
1116
|
case "end":
|
|
808
|
-
return
|
|
1117
|
+
return _context8.stop();
|
|
809
1118
|
}
|
|
810
|
-
},
|
|
1119
|
+
}, _callee8, this, [[6, 16]]);
|
|
811
1120
|
}));
|
|
812
1121
|
function loadOrdersByServer() {
|
|
813
1122
|
return _loadOrdersByServer.apply(this, arguments);
|
|
@@ -822,61 +1131,54 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
822
1131
|
}, {
|
|
823
1132
|
key: "silentRefresh",
|
|
824
1133
|
value: (function () {
|
|
825
|
-
var _silentRefresh = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1134
|
+
var _silentRefresh = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
826
1135
|
var startTime, elapsedSinceFullFetch, orders, errorMessage;
|
|
827
|
-
return _regeneratorRuntime().wrap(function
|
|
828
|
-
while (1) switch (
|
|
1136
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
1137
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
829
1138
|
case 0:
|
|
830
1139
|
startTime = Date.now();
|
|
831
1140
|
elapsedSinceFullFetch = Date.now() - this.lastServerFullFetchAtMs;
|
|
832
1141
|
if (!(this.lastServerFullFetchAtMs > 0 && elapsedSinceFullFetch < ORDER_SILENT_REFRESH_MIN_INTERVAL_MS)) {
|
|
833
|
-
|
|
1142
|
+
_context9.next = 4;
|
|
834
1143
|
break;
|
|
835
1144
|
}
|
|
836
|
-
return
|
|
1145
|
+
return _context9.abrupt("return", this.store.list);
|
|
837
1146
|
case 4:
|
|
838
1147
|
this.logInfo('silentRefresh 开始');
|
|
839
|
-
|
|
1148
|
+
_context9.prev = 5;
|
|
840
1149
|
// 刷新前,需要更新当前营业日边界(store.createdAtQuery)
|
|
841
1150
|
this.updateCreateStore();
|
|
842
|
-
|
|
1151
|
+
_context9.next = 9;
|
|
843
1152
|
return this.loadOrdersByServer();
|
|
844
1153
|
case 9:
|
|
845
|
-
orders =
|
|
846
|
-
if (!(orders.length > 0)) {
|
|
847
|
-
_context7.next = 19;
|
|
848
|
-
break;
|
|
849
|
-
}
|
|
1154
|
+
orders = _context9.sent;
|
|
850
1155
|
this.store.list = cloneDeep(orders);
|
|
851
1156
|
this.syncOrdersMap();
|
|
852
|
-
|
|
853
|
-
|
|
1157
|
+
_context9.next = 14;
|
|
1158
|
+
return this.emitOrdersChanged([], 'silentRefresh');
|
|
1159
|
+
case 14:
|
|
1160
|
+
_context9.next = 16;
|
|
854
1161
|
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
855
1162
|
case 16:
|
|
856
1163
|
this.logInfo('silentRefresh 完成', {
|
|
857
1164
|
orderCount: orders.length,
|
|
858
1165
|
duration: "".concat(Date.now() - startTime, "ms")
|
|
859
1166
|
});
|
|
860
|
-
|
|
861
|
-
break;
|
|
862
|
-
case 19:
|
|
863
|
-
this.logInfo('silentRefresh: 服务器未返回数据');
|
|
1167
|
+
return _context9.abrupt("return", this.store.list);
|
|
864
1168
|
case 20:
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
_context7.t0 = _context7["catch"](5);
|
|
869
|
-
errorMessage = _context7.t0 instanceof Error ? _context7.t0.message : String(_context7.t0);
|
|
1169
|
+
_context9.prev = 20;
|
|
1170
|
+
_context9.t0 = _context9["catch"](5);
|
|
1171
|
+
errorMessage = _context9.t0 instanceof Error ? _context9.t0.message : String(_context9.t0);
|
|
870
1172
|
this.logError('silentRefresh 失败', {
|
|
871
1173
|
duration: "".concat(Date.now() - startTime, "ms"),
|
|
872
1174
|
error: errorMessage
|
|
873
1175
|
});
|
|
874
|
-
return
|
|
875
|
-
case
|
|
1176
|
+
return _context9.abrupt("return", this.store.list);
|
|
1177
|
+
case 25:
|
|
876
1178
|
case "end":
|
|
877
|
-
return
|
|
1179
|
+
return _context9.stop();
|
|
878
1180
|
}
|
|
879
|
-
},
|
|
1181
|
+
}, _callee9, this, [[5, 20]]);
|
|
880
1182
|
}));
|
|
881
1183
|
function silentRefresh() {
|
|
882
1184
|
return _silentRefresh.apply(this, arguments);
|
|
@@ -889,6 +1191,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
889
1191
|
var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'normalizeOrderForMemoryList';
|
|
890
1192
|
var normalizedOrder = this.normalizeOrderCollectionsForIngress(order, source);
|
|
891
1193
|
var externalSaleNumber = normalizedOrder === null || normalizedOrder === void 0 ? void 0 : normalizedOrder.external_sale_number;
|
|
1194
|
+
if (this.isDraftOrder(normalizedOrder) && !this.hasRealOrderId(normalizedOrder)) {
|
|
1195
|
+
return normalizedOrder;
|
|
1196
|
+
}
|
|
892
1197
|
if ((normalizedOrder === null || normalizedOrder === void 0 ? void 0 : normalizedOrder.order_id) !== undefined && (normalizedOrder === null || normalizedOrder === void 0 ? void 0 : normalizedOrder.order_id) !== null && (normalizedOrder === null || normalizedOrder === void 0 ? void 0 : normalizedOrder.order_id) !== '') {
|
|
893
1198
|
return normalizedOrder;
|
|
894
1199
|
}
|
|
@@ -899,6 +1204,39 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
899
1204
|
order_id: externalSaleNumber
|
|
900
1205
|
});
|
|
901
1206
|
}
|
|
1207
|
+
}, {
|
|
1208
|
+
key: "normalizeOrdersForMemoryList",
|
|
1209
|
+
value: function normalizeOrdersForMemoryList(orders, source) {
|
|
1210
|
+
var _this6 = this;
|
|
1211
|
+
return orders.map(function (order) {
|
|
1212
|
+
return _this6.normalizeOrderForMemoryList(order, source);
|
|
1213
|
+
}).filter(function (order) {
|
|
1214
|
+
return _this6.shouldKeepOrderInMemory(order);
|
|
1215
|
+
});
|
|
1216
|
+
}
|
|
1217
|
+
}, {
|
|
1218
|
+
key: "hasRealOrderId",
|
|
1219
|
+
value: function hasRealOrderId(order) {
|
|
1220
|
+
if (!order || this.isBlankIdentityValue(order.order_id)) return false;
|
|
1221
|
+
var externalSaleNumber = order.external_sale_number;
|
|
1222
|
+
return !(this.isDraftOrder(order) && !this.isBlankIdentityValue(externalSaleNumber) && String(order.order_id) === String(externalSaleNumber));
|
|
1223
|
+
}
|
|
1224
|
+
}, {
|
|
1225
|
+
key: "shouldKeepOrderInMemory",
|
|
1226
|
+
value: function shouldKeepOrderInMemory(order) {
|
|
1227
|
+
return !this.isDraftOrder(order) || this.hasRealOrderId(order);
|
|
1228
|
+
}
|
|
1229
|
+
}, {
|
|
1230
|
+
key: "withoutSyntheticDraftOrderId",
|
|
1231
|
+
value: function withoutSyntheticDraftOrderId(order) {
|
|
1232
|
+
var externalSaleNumber = order.external_sale_number;
|
|
1233
|
+
if (Number(order.is_draft_order || 0) !== 1 || order.order_id === undefined || externalSaleNumber === undefined || String(order.order_id) !== String(externalSaleNumber)) {
|
|
1234
|
+
return order;
|
|
1235
|
+
}
|
|
1236
|
+
var next = _objectSpread({}, order);
|
|
1237
|
+
delete next.order_id;
|
|
1238
|
+
return next;
|
|
1239
|
+
}
|
|
902
1240
|
|
|
903
1241
|
/**
|
|
904
1242
|
* 仅覆盖本地已存在的订单;不存在则直接跳过,不落库、不 emit。
|
|
@@ -907,31 +1245,31 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
907
1245
|
}, {
|
|
908
1246
|
key: "overwriteExistingOrder",
|
|
909
1247
|
value: (function () {
|
|
910
|
-
var _overwriteExistingOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
911
|
-
var
|
|
1248
|
+
var _overwriteExistingOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(fresh) {
|
|
1249
|
+
var _this7 = this;
|
|
912
1250
|
var orderId, key, normalizedFresh, existingOrder, reconciledFresh;
|
|
913
|
-
return _regeneratorRuntime().wrap(function
|
|
914
|
-
while (1) switch (
|
|
1251
|
+
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
1252
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
915
1253
|
case 0:
|
|
916
1254
|
orderId = fresh === null || fresh === void 0 ? void 0 : fresh.order_id;
|
|
917
1255
|
if (!(orderId === undefined || orderId === null)) {
|
|
918
|
-
|
|
1256
|
+
_context10.next = 4;
|
|
919
1257
|
break;
|
|
920
1258
|
}
|
|
921
1259
|
this.logError('overwriteExistingOrder-入参缺少 order_id');
|
|
922
|
-
return
|
|
1260
|
+
return _context10.abrupt("return", {
|
|
923
1261
|
overwritten: false
|
|
924
1262
|
});
|
|
925
1263
|
case 4:
|
|
926
1264
|
key = this.getIdKey(orderId);
|
|
927
1265
|
if (this.store.map.has(key)) {
|
|
928
|
-
|
|
1266
|
+
_context10.next = 8;
|
|
929
1267
|
break;
|
|
930
1268
|
}
|
|
931
1269
|
this.logInfo('overwriteExistingOrder-本地不存在该订单,跳过', {
|
|
932
1270
|
orderId: orderId
|
|
933
1271
|
});
|
|
934
|
-
return
|
|
1272
|
+
return _context10.abrupt("return", {
|
|
935
1273
|
overwritten: false
|
|
936
1274
|
});
|
|
937
1275
|
case 8:
|
|
@@ -945,31 +1283,31 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
945
1283
|
this.store.list = this.store.list.map(function (order) {
|
|
946
1284
|
var id = order === null || order === void 0 ? void 0 : order.order_id;
|
|
947
1285
|
if (id === undefined || id === null) {
|
|
948
|
-
return
|
|
1286
|
+
return _this7.normalizeOrderForMemoryList(order, 'overwriteExistingOrder.existingMemory');
|
|
949
1287
|
}
|
|
950
|
-
return
|
|
1288
|
+
return _this7.getIdKey(id) === key ? reconciledFresh : _this7.normalizeOrderForMemoryList(order, 'overwriteExistingOrder.existingMemory');
|
|
951
1289
|
});
|
|
952
1290
|
this.syncOrdersMap();
|
|
953
|
-
|
|
1291
|
+
_context10.next = 16;
|
|
954
1292
|
return this.updateOrderInSQLite(reconciledFresh, 'overwriteExistingOrder');
|
|
955
1293
|
case 16:
|
|
956
1294
|
this.logInfo('overwriteExistingOrder-结束', {
|
|
957
1295
|
orderId: orderId,
|
|
958
1296
|
storeOrderCountAfter: this.store.list.length
|
|
959
1297
|
});
|
|
960
|
-
|
|
1298
|
+
_context10.next = 19;
|
|
961
1299
|
return this.emitOrdersChanged([reconciledFresh], 'overwriteExistingOrder');
|
|
962
1300
|
case 19:
|
|
963
|
-
return
|
|
1301
|
+
return _context10.abrupt("return", {
|
|
964
1302
|
overwritten: true
|
|
965
1303
|
});
|
|
966
1304
|
case 20:
|
|
967
1305
|
case "end":
|
|
968
|
-
return
|
|
1306
|
+
return _context10.stop();
|
|
969
1307
|
}
|
|
970
|
-
},
|
|
1308
|
+
}, _callee10, this);
|
|
971
1309
|
}));
|
|
972
|
-
function overwriteExistingOrder(
|
|
1310
|
+
function overwriteExistingOrder(_x7) {
|
|
973
1311
|
return _overwriteExistingOrder.apply(this, arguments);
|
|
974
1312
|
}
|
|
975
1313
|
return overwriteExistingOrder;
|
|
@@ -982,29 +1320,33 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
982
1320
|
}, {
|
|
983
1321
|
key: "upsertOrdersFromRemote",
|
|
984
1322
|
value: (function () {
|
|
985
|
-
var _upsertOrdersFromRemote = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
986
|
-
|
|
987
|
-
|
|
1323
|
+
var _upsertOrdersFromRemote = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(freshOrders) {
|
|
1324
|
+
var source,
|
|
1325
|
+
_args11 = arguments;
|
|
1326
|
+
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
1327
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
988
1328
|
case 0:
|
|
1329
|
+
source = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : 'upsertOrdersFromRemote';
|
|
989
1330
|
if (freshOrders !== null && freshOrders !== void 0 && freshOrders.length) {
|
|
990
|
-
|
|
1331
|
+
_context11.next = 4;
|
|
991
1332
|
break;
|
|
992
1333
|
}
|
|
993
1334
|
this.logInfo('upsertOrdersFromRemote-订单列表为空', {});
|
|
994
|
-
return
|
|
995
|
-
case
|
|
1335
|
+
return _context11.abrupt("return");
|
|
1336
|
+
case 4:
|
|
996
1337
|
this.logInfo('upsertOrdersFromRemote-开始', {
|
|
997
|
-
count: freshOrders.length
|
|
1338
|
+
count: freshOrders.length,
|
|
1339
|
+
source: source
|
|
998
1340
|
});
|
|
999
|
-
|
|
1000
|
-
return this.mergeOrdersToStore(freshOrders,
|
|
1001
|
-
case
|
|
1341
|
+
_context11.next = 7;
|
|
1342
|
+
return this.mergeOrdersToStore(freshOrders, source);
|
|
1343
|
+
case 7:
|
|
1002
1344
|
case "end":
|
|
1003
|
-
return
|
|
1345
|
+
return _context11.stop();
|
|
1004
1346
|
}
|
|
1005
|
-
},
|
|
1347
|
+
}, _callee11, this);
|
|
1006
1348
|
}));
|
|
1007
|
-
function upsertOrdersFromRemote(
|
|
1349
|
+
function upsertOrdersFromRemote(_x8) {
|
|
1008
1350
|
return _upsertOrdersFromRemote.apply(this, arguments);
|
|
1009
1351
|
}
|
|
1010
1352
|
return upsertOrdersFromRemote;
|
|
@@ -1012,21 +1354,21 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1012
1354
|
}, {
|
|
1013
1355
|
key: "markOrderSyncedByExternalSaleNumber",
|
|
1014
1356
|
value: function () {
|
|
1015
|
-
var _markOrderSyncedByExternalSaleNumber = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1016
|
-
var
|
|
1357
|
+
var _markOrderSyncedByExternalSaleNumber = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(params) {
|
|
1358
|
+
var _this8 = this,
|
|
1017
1359
|
_existing$external_sa,
|
|
1018
1360
|
_nextOrder$order_id;
|
|
1019
1361
|
var externalSaleNumber, key, targetIndex, existing, nextOrder, storageKey;
|
|
1020
|
-
return _regeneratorRuntime().wrap(function
|
|
1021
|
-
while (1) switch (
|
|
1362
|
+
return _regeneratorRuntime().wrap(function _callee12$(_context12) {
|
|
1363
|
+
while (1) switch (_context12.prev = _context12.next) {
|
|
1022
1364
|
case 0:
|
|
1023
1365
|
externalSaleNumber = params.externalSaleNumber;
|
|
1024
1366
|
if (!(externalSaleNumber === undefined || externalSaleNumber === null || externalSaleNumber === '')) {
|
|
1025
|
-
|
|
1367
|
+
_context12.next = 4;
|
|
1026
1368
|
break;
|
|
1027
1369
|
}
|
|
1028
1370
|
this.logError('markOrderSyncedByExternalSaleNumber-缺少 external_sale_number');
|
|
1029
|
-
return
|
|
1371
|
+
return _context12.abrupt("return", {
|
|
1030
1372
|
updated: false
|
|
1031
1373
|
});
|
|
1032
1374
|
case 4:
|
|
@@ -1034,23 +1376,24 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1034
1376
|
targetIndex = this.store.list.findIndex(function (order) {
|
|
1035
1377
|
var value = order === null || order === void 0 ? void 0 : order.external_sale_number;
|
|
1036
1378
|
if (value === undefined || value === null || value === '') return false;
|
|
1037
|
-
return
|
|
1379
|
+
return _this8.getIdKey(value) === key;
|
|
1038
1380
|
});
|
|
1039
1381
|
if (!(targetIndex < 0)) {
|
|
1040
|
-
|
|
1382
|
+
_context12.next = 9;
|
|
1041
1383
|
break;
|
|
1042
1384
|
}
|
|
1043
1385
|
this.logInfo('markOrderSyncedByExternalSaleNumber-本地订单不存在,跳过', {
|
|
1044
1386
|
external_sale_number: externalSaleNumber
|
|
1045
1387
|
});
|
|
1046
|
-
return
|
|
1388
|
+
return _context12.abrupt("return", {
|
|
1047
1389
|
updated: false
|
|
1048
1390
|
});
|
|
1049
1391
|
case 9:
|
|
1050
1392
|
existing = this.store.list[targetIndex];
|
|
1051
1393
|
nextOrder = this.normalizeRemoteSyncedOrder(_objectSpread(_objectSpread(_objectSpread({}, existing), params.patch || {}), {}, {
|
|
1052
1394
|
external_sale_number: (_existing$external_sa = existing.external_sale_number) !== null && _existing$external_sa !== void 0 ? _existing$external_sa : externalSaleNumber,
|
|
1053
|
-
need_sync: 0
|
|
1395
|
+
need_sync: 0,
|
|
1396
|
+
is_draft_order: 0
|
|
1054
1397
|
}));
|
|
1055
1398
|
storageKey = this.getOrderStorageKey(nextOrder) || key;
|
|
1056
1399
|
this.store.list = this.store.list.map(function (order, index) {
|
|
@@ -1058,27 +1401,27 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1058
1401
|
return nextOrder;
|
|
1059
1402
|
});
|
|
1060
1403
|
this.syncOrdersMap();
|
|
1061
|
-
|
|
1404
|
+
_context12.next = 16;
|
|
1062
1405
|
return this.patchOrdersInSQLite([nextOrder], 'markOrderSyncedByExternalSaleNumber', _defineProperty({}, storageKey, 'update'));
|
|
1063
1406
|
case 16:
|
|
1064
1407
|
this.logInfo('markOrderSyncedByExternalSaleNumber-完成', {
|
|
1065
1408
|
external_sale_number: externalSaleNumber,
|
|
1066
1409
|
order_id: (_nextOrder$order_id = nextOrder.order_id) !== null && _nextOrder$order_id !== void 0 ? _nextOrder$order_id : null
|
|
1067
1410
|
});
|
|
1068
|
-
|
|
1411
|
+
_context12.next = 19;
|
|
1069
1412
|
return this.emitOrdersChanged([nextOrder], 'markOrderSyncedByExternalSaleNumber');
|
|
1070
1413
|
case 19:
|
|
1071
|
-
return
|
|
1414
|
+
return _context12.abrupt("return", {
|
|
1072
1415
|
updated: true,
|
|
1073
1416
|
order: nextOrder
|
|
1074
1417
|
});
|
|
1075
1418
|
case 20:
|
|
1076
1419
|
case "end":
|
|
1077
|
-
return
|
|
1420
|
+
return _context12.stop();
|
|
1078
1421
|
}
|
|
1079
|
-
},
|
|
1422
|
+
}, _callee12, this);
|
|
1080
1423
|
}));
|
|
1081
|
-
function markOrderSyncedByExternalSaleNumber(
|
|
1424
|
+
function markOrderSyncedByExternalSaleNumber(_x9) {
|
|
1082
1425
|
return _markOrderSyncedByExternalSaleNumber.apply(this, arguments);
|
|
1083
1426
|
}
|
|
1084
1427
|
return markOrderSyncedByExternalSaleNumber;
|
|
@@ -1090,155 +1433,391 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1090
1433
|
}, {
|
|
1091
1434
|
key: "upsertPendingSyncOrders",
|
|
1092
1435
|
value: (function () {
|
|
1093
|
-
var _upsertPendingSyncOrders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1094
|
-
var
|
|
1095
|
-
var
|
|
1096
|
-
|
|
1097
|
-
|
|
1436
|
+
var _upsertPendingSyncOrders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(pendingOrders) {
|
|
1437
|
+
var _this9 = this;
|
|
1438
|
+
var options,
|
|
1439
|
+
pendingMap,
|
|
1440
|
+
memoryPendingMap,
|
|
1441
|
+
_iterator6,
|
|
1442
|
+
_step6,
|
|
1443
|
+
order,
|
|
1444
|
+
normalizedOrder,
|
|
1445
|
+
pendingOrder,
|
|
1446
|
+
storageKey,
|
|
1447
|
+
mergeActions,
|
|
1448
|
+
updatedList,
|
|
1449
|
+
identityKeyToIndex,
|
|
1450
|
+
index,
|
|
1451
|
+
_iterator7,
|
|
1452
|
+
_step7,
|
|
1453
|
+
key,
|
|
1454
|
+
_iterator8,
|
|
1455
|
+
_step8,
|
|
1456
|
+
_step8$value,
|
|
1457
|
+
_storageKey,
|
|
1458
|
+
_pendingOrder,
|
|
1459
|
+
matchIndex,
|
|
1460
|
+
existingOrder,
|
|
1461
|
+
mergedOrder,
|
|
1462
|
+
nextOrder,
|
|
1463
|
+
pendingSnapshot,
|
|
1464
|
+
insertIndex,
|
|
1465
|
+
patchedOrders,
|
|
1466
|
+
previousList,
|
|
1467
|
+
_args13 = arguments;
|
|
1468
|
+
return _regeneratorRuntime().wrap(function _callee13$(_context13) {
|
|
1469
|
+
while (1) switch (_context13.prev = _context13.next) {
|
|
1098
1470
|
case 0:
|
|
1471
|
+
options = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : {};
|
|
1099
1472
|
if (pendingOrders !== null && pendingOrders !== void 0 && pendingOrders.length) {
|
|
1100
|
-
|
|
1473
|
+
_context13.next = 4;
|
|
1101
1474
|
break;
|
|
1102
1475
|
}
|
|
1103
1476
|
this.logInfo('upsertPendingSyncOrders-订单列表为空', {});
|
|
1104
|
-
return
|
|
1105
|
-
case
|
|
1477
|
+
return _context13.abrupt("return");
|
|
1478
|
+
case 4:
|
|
1106
1479
|
pendingMap = new Map();
|
|
1107
1480
|
memoryPendingMap = new Map();
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
case
|
|
1112
|
-
if ((
|
|
1113
|
-
|
|
1481
|
+
_iterator6 = _createForOfIteratorHelper(pendingOrders);
|
|
1482
|
+
_context13.prev = 7;
|
|
1483
|
+
_iterator6.s();
|
|
1484
|
+
case 9:
|
|
1485
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
1486
|
+
_context13.next = 20;
|
|
1114
1487
|
break;
|
|
1115
1488
|
}
|
|
1116
|
-
order =
|
|
1489
|
+
order = _step6.value;
|
|
1117
1490
|
normalizedOrder = this.normalizeOrderCollectionsForIngress(order, 'upsertPendingSyncOrders.incoming');
|
|
1118
|
-
|
|
1491
|
+
pendingOrder = _objectSpread(_objectSpread({}, normalizedOrder), {}, {
|
|
1492
|
+
need_sync: 1,
|
|
1493
|
+
is_draft_order: 0
|
|
1494
|
+
});
|
|
1495
|
+
storageKey = this.getOrderStorageKey(pendingOrder);
|
|
1119
1496
|
if (storageKey) {
|
|
1120
|
-
|
|
1497
|
+
_context13.next = 16;
|
|
1121
1498
|
break;
|
|
1122
1499
|
}
|
|
1123
|
-
return
|
|
1124
|
-
case 14:
|
|
1125
|
-
pendingMap.set(storageKey, normalizedOrder);
|
|
1126
|
-
memoryPendingMap.set(storageKey, this.normalizeOrderForMemoryList(normalizedOrder, 'upsertPendingSyncOrders.memory'));
|
|
1500
|
+
return _context13.abrupt("continue", 18);
|
|
1127
1501
|
case 16:
|
|
1128
|
-
|
|
1129
|
-
|
|
1502
|
+
pendingMap.set(storageKey, pendingOrder);
|
|
1503
|
+
memoryPendingMap.set(storageKey, this.normalizeOrderForMemoryList(pendingOrder, 'upsertPendingSyncOrders.memory'));
|
|
1130
1504
|
case 18:
|
|
1131
|
-
|
|
1505
|
+
_context13.next = 9;
|
|
1132
1506
|
break;
|
|
1133
1507
|
case 20:
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1508
|
+
_context13.next = 25;
|
|
1509
|
+
break;
|
|
1510
|
+
case 22:
|
|
1511
|
+
_context13.prev = 22;
|
|
1512
|
+
_context13.t0 = _context13["catch"](7);
|
|
1513
|
+
_iterator6.e(_context13.t0);
|
|
1514
|
+
case 25:
|
|
1515
|
+
_context13.prev = 25;
|
|
1516
|
+
_iterator6.f();
|
|
1517
|
+
return _context13.finish(25);
|
|
1518
|
+
case 28:
|
|
1142
1519
|
if (!(pendingMap.size === 0)) {
|
|
1143
|
-
|
|
1520
|
+
_context13.next = 31;
|
|
1144
1521
|
break;
|
|
1145
1522
|
}
|
|
1146
1523
|
this.logError('upsertPendingSyncOrders-订单缺少可落库标识', {
|
|
1147
1524
|
count: pendingOrders.length
|
|
1148
1525
|
});
|
|
1149
|
-
return
|
|
1150
|
-
case
|
|
1526
|
+
return _context13.abrupt("return");
|
|
1527
|
+
case 31:
|
|
1151
1528
|
this.logInfo('upsertPendingSyncOrders-开始', {
|
|
1152
1529
|
count: pendingMap.size
|
|
1153
1530
|
});
|
|
1154
1531
|
mergeActions = {};
|
|
1155
1532
|
updatedList = this.store.list.map(function (order) {
|
|
1156
|
-
return
|
|
1533
|
+
return _this9.normalizeOrderForMemoryList(order, 'upsertPendingSyncOrders.existingMemory');
|
|
1157
1534
|
}); // 与 mergeOrdersToStore 一致:基于身份键(field:value)建立索引,把「查找已存在订单」
|
|
1158
1535
|
// 从 O(n) 线性扫描降为 O(1),整体复杂度由 O(n^2) 降为 O(n + m)。
|
|
1159
1536
|
identityKeyToIndex = new Map();
|
|
1160
1537
|
for (index = 0; index < updatedList.length; index += 1) {
|
|
1161
|
-
|
|
1538
|
+
_iterator7 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(updatedList[index]));
|
|
1162
1539
|
try {
|
|
1163
|
-
for (
|
|
1164
|
-
key =
|
|
1540
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
1541
|
+
key = _step7.value;
|
|
1165
1542
|
// 同一 key 命中多张时保留最靠前的下标,与原 findIndex「取首个匹配」一致
|
|
1166
1543
|
if (!identityKeyToIndex.has(key)) identityKeyToIndex.set(key, index);
|
|
1167
1544
|
}
|
|
1168
1545
|
} catch (err) {
|
|
1169
|
-
|
|
1546
|
+
_iterator7.e(err);
|
|
1170
1547
|
} finally {
|
|
1171
|
-
|
|
1548
|
+
_iterator7.f();
|
|
1172
1549
|
}
|
|
1173
1550
|
}
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
case
|
|
1178
|
-
if ((
|
|
1179
|
-
|
|
1551
|
+
_iterator8 = _createForOfIteratorHelper(memoryPendingMap.entries());
|
|
1552
|
+
_context13.prev = 37;
|
|
1553
|
+
_iterator8.s();
|
|
1554
|
+
case 39:
|
|
1555
|
+
if ((_step8 = _iterator8.n()).done) {
|
|
1556
|
+
_context13.next = 58;
|
|
1180
1557
|
break;
|
|
1181
1558
|
}
|
|
1182
|
-
|
|
1183
|
-
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, this.getOrderIdentityMatchKeys(
|
|
1559
|
+
_step8$value = _slicedToArray(_step8.value, 2), _storageKey = _step8$value[0], _pendingOrder = _step8$value[1];
|
|
1560
|
+
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, this.getOrderIdentityMatchKeys(_pendingOrder));
|
|
1184
1561
|
if (!(matchIndex >= 0)) {
|
|
1185
|
-
|
|
1562
|
+
_context13.next = 52;
|
|
1186
1563
|
break;
|
|
1187
1564
|
}
|
|
1188
1565
|
existingOrder = updatedList[matchIndex];
|
|
1189
|
-
mergedOrder = this.mergeOrderRecords(existingOrder,
|
|
1190
|
-
|
|
1566
|
+
mergedOrder = this.mergeOrderRecords(existingOrder, _pendingOrder);
|
|
1567
|
+
nextOrder = _objectSpread(_objectSpread({}, mergedOrder), {}, {
|
|
1568
|
+
need_sync: 1,
|
|
1569
|
+
is_draft_order: 0
|
|
1570
|
+
});
|
|
1571
|
+
updatedList[matchIndex] = nextOrder;
|
|
1191
1572
|
pendingSnapshot = pendingMap.get(_storageKey);
|
|
1192
1573
|
if (pendingSnapshot) {
|
|
1193
1574
|
pendingMap.set(_storageKey, this.reconcileOverwriteOrderCollections(existingOrder, pendingSnapshot));
|
|
1194
1575
|
}
|
|
1195
1576
|
// 合并后身份字段可能新增(如挂单拿到 order_id),同步登记,供同批后续 pending 命中同一槽位
|
|
1196
|
-
this.registerOrderIdentityKeys(identityKeyToIndex,
|
|
1577
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, nextOrder, matchIndex);
|
|
1197
1578
|
mergeActions[_storageKey] = 'update';
|
|
1198
|
-
return
|
|
1199
|
-
case
|
|
1579
|
+
return _context13.abrupt("continue", 56);
|
|
1580
|
+
case 52:
|
|
1200
1581
|
insertIndex = updatedList.length;
|
|
1201
|
-
updatedList.push(
|
|
1202
|
-
this.registerOrderIdentityKeys(identityKeyToIndex,
|
|
1582
|
+
updatedList.push(_pendingOrder);
|
|
1583
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, _pendingOrder, insertIndex);
|
|
1203
1584
|
mergeActions[_storageKey] = 'insert';
|
|
1204
|
-
case
|
|
1205
|
-
|
|
1585
|
+
case 56:
|
|
1586
|
+
_context13.next = 39;
|
|
1206
1587
|
break;
|
|
1207
|
-
case
|
|
1208
|
-
|
|
1588
|
+
case 58:
|
|
1589
|
+
_context13.next = 63;
|
|
1209
1590
|
break;
|
|
1210
|
-
case 57:
|
|
1211
|
-
_context11.prev = 57;
|
|
1212
|
-
_context11.t1 = _context11["catch"](35);
|
|
1213
|
-
_iterator7.e(_context11.t1);
|
|
1214
1591
|
case 60:
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1592
|
+
_context13.prev = 60;
|
|
1593
|
+
_context13.t1 = _context13["catch"](37);
|
|
1594
|
+
_iterator8.e(_context13.t1);
|
|
1218
1595
|
case 63:
|
|
1596
|
+
_context13.prev = 63;
|
|
1597
|
+
_iterator8.f();
|
|
1598
|
+
return _context13.finish(63);
|
|
1599
|
+
case 66:
|
|
1219
1600
|
patchedOrders = _toConsumableArray(pendingMap.values()); // 增量索引已保证 store 去重不变量,无需再对全表做 O(n^2) 压缩;仅自检开关开启时兜底。
|
|
1601
|
+
previousList = this.store.list;
|
|
1220
1602
|
this.store.list = this.runOrderStoreSelfCheck(updatedList, 'upsertPendingSyncOrders.store');
|
|
1221
1603
|
this.syncOrdersMap();
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1604
|
+
_context13.prev = 70;
|
|
1605
|
+
_context13.next = 73;
|
|
1606
|
+
return this.patchOrdersInSQLite(patchedOrders, 'upsertPendingSyncOrders', mergeActions, options);
|
|
1607
|
+
case 73:
|
|
1608
|
+
_context13.next = 80;
|
|
1609
|
+
break;
|
|
1610
|
+
case 75:
|
|
1611
|
+
_context13.prev = 75;
|
|
1612
|
+
_context13.t2 = _context13["catch"](70);
|
|
1613
|
+
this.store.list = previousList;
|
|
1614
|
+
this.syncOrdersMap();
|
|
1615
|
+
throw _context13.t2;
|
|
1616
|
+
case 80:
|
|
1225
1617
|
this.logInfo('upsertPendingSyncOrders-结束', {
|
|
1226
1618
|
count: patchedOrders.length,
|
|
1227
1619
|
storeOrderCountAfter: this.store.list.length
|
|
1228
1620
|
});
|
|
1229
|
-
|
|
1621
|
+
_context13.next = 83;
|
|
1230
1622
|
return this.emitOrdersChanged(patchedOrders, 'upsertPendingSyncOrders');
|
|
1231
|
-
case
|
|
1623
|
+
case 83:
|
|
1232
1624
|
case "end":
|
|
1233
|
-
return
|
|
1625
|
+
return _context13.stop();
|
|
1234
1626
|
}
|
|
1235
|
-
},
|
|
1627
|
+
}, _callee13, this, [[7, 22, 25, 28], [37, 60, 63, 66], [70, 75]]);
|
|
1236
1628
|
}));
|
|
1237
|
-
function upsertPendingSyncOrders(
|
|
1629
|
+
function upsertPendingSyncOrders(_x10) {
|
|
1238
1630
|
return _upsertPendingSyncOrders.apply(this, arguments);
|
|
1239
1631
|
}
|
|
1240
1632
|
return upsertPendingSyncOrders;
|
|
1241
1633
|
}()
|
|
1634
|
+
/**
|
|
1635
|
+
* 将 POS 草稿订单按 SQLite storage key 落库。
|
|
1636
|
+
* 只有具备真实 order_id 的草稿进入 store;其余草稿仅供本地恢复查询。
|
|
1637
|
+
*/
|
|
1638
|
+
)
|
|
1639
|
+
}, {
|
|
1640
|
+
key: "upsertLocalDraftOrders",
|
|
1641
|
+
value: (function () {
|
|
1642
|
+
var _upsertLocalDraftOrders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(draftOrders) {
|
|
1643
|
+
var _this10 = this;
|
|
1644
|
+
var draftMap, memoryDraftMap, _iterator9, _step9, order, draftOrder, storageKey, memoryDraftOrder, mergeActions, updatedList, identityKeyToIndex, index, _iterator10, _step10, key, _iterator11, _step11, _step11$value, _storageKey2, _draftOrder, matchIndex, existingOrder, reconciledDraftOrder, mergedOrder, nextOrder, insertIndex, patchedOrders, previousList, removedLegacyMemoryDraft;
|
|
1645
|
+
return _regeneratorRuntime().wrap(function _callee14$(_context14) {
|
|
1646
|
+
while (1) switch (_context14.prev = _context14.next) {
|
|
1647
|
+
case 0:
|
|
1648
|
+
if (draftOrders !== null && draftOrders !== void 0 && draftOrders.length) {
|
|
1649
|
+
_context14.next = 3;
|
|
1650
|
+
break;
|
|
1651
|
+
}
|
|
1652
|
+
this.logInfo('upsertLocalDraftOrders-订单列表为空', {});
|
|
1653
|
+
return _context14.abrupt("return");
|
|
1654
|
+
case 3:
|
|
1655
|
+
draftMap = new Map();
|
|
1656
|
+
memoryDraftMap = new Map();
|
|
1657
|
+
_iterator9 = _createForOfIteratorHelper(draftOrders);
|
|
1658
|
+
_context14.prev = 6;
|
|
1659
|
+
_iterator9.s();
|
|
1660
|
+
case 8:
|
|
1661
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
1662
|
+
_context14.next = 19;
|
|
1663
|
+
break;
|
|
1664
|
+
}
|
|
1665
|
+
order = _step9.value;
|
|
1666
|
+
draftOrder = _objectSpread(_objectSpread({}, order), {}, {
|
|
1667
|
+
need_sync: 0,
|
|
1668
|
+
is_draft_order: 1
|
|
1669
|
+
});
|
|
1670
|
+
storageKey = this.getOrderStorageKey(draftOrder);
|
|
1671
|
+
if (storageKey) {
|
|
1672
|
+
_context14.next = 14;
|
|
1673
|
+
break;
|
|
1674
|
+
}
|
|
1675
|
+
return _context14.abrupt("continue", 17);
|
|
1676
|
+
case 14:
|
|
1677
|
+
draftMap.set(storageKey, draftOrder);
|
|
1678
|
+
memoryDraftOrder = this.normalizeOrderForMemoryList(draftOrder);
|
|
1679
|
+
if (this.shouldKeepOrderInMemory(memoryDraftOrder)) {
|
|
1680
|
+
memoryDraftMap.set(storageKey, memoryDraftOrder);
|
|
1681
|
+
}
|
|
1682
|
+
case 17:
|
|
1683
|
+
_context14.next = 8;
|
|
1684
|
+
break;
|
|
1685
|
+
case 19:
|
|
1686
|
+
_context14.next = 24;
|
|
1687
|
+
break;
|
|
1688
|
+
case 21:
|
|
1689
|
+
_context14.prev = 21;
|
|
1690
|
+
_context14.t0 = _context14["catch"](6);
|
|
1691
|
+
_iterator9.e(_context14.t0);
|
|
1692
|
+
case 24:
|
|
1693
|
+
_context14.prev = 24;
|
|
1694
|
+
_iterator9.f();
|
|
1695
|
+
return _context14.finish(24);
|
|
1696
|
+
case 27:
|
|
1697
|
+
if (!(draftMap.size === 0)) {
|
|
1698
|
+
_context14.next = 30;
|
|
1699
|
+
break;
|
|
1700
|
+
}
|
|
1701
|
+
this.logError('upsertLocalDraftOrders-订单缺少可落库标识', {
|
|
1702
|
+
count: draftOrders.length
|
|
1703
|
+
});
|
|
1704
|
+
return _context14.abrupt("return");
|
|
1705
|
+
case 30:
|
|
1706
|
+
this.logInfo('upsertLocalDraftOrders-开始', {
|
|
1707
|
+
count: draftMap.size,
|
|
1708
|
+
memoryDraftCount: memoryDraftMap.size,
|
|
1709
|
+
sqliteOnlyDraftCount: draftMap.size - memoryDraftMap.size
|
|
1710
|
+
});
|
|
1711
|
+
mergeActions = {};
|
|
1712
|
+
updatedList = this.store.list.filter(function (order) {
|
|
1713
|
+
return _this10.shouldKeepOrderInMemory(order);
|
|
1714
|
+
});
|
|
1715
|
+
identityKeyToIndex = new Map();
|
|
1716
|
+
for (index = 0; index < updatedList.length; index += 1) {
|
|
1717
|
+
_iterator10 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(updatedList[index]));
|
|
1718
|
+
try {
|
|
1719
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
1720
|
+
key = _step10.value;
|
|
1721
|
+
if (!identityKeyToIndex.has(key)) identityKeyToIndex.set(key, index);
|
|
1722
|
+
}
|
|
1723
|
+
} catch (err) {
|
|
1724
|
+
_iterator10.e(err);
|
|
1725
|
+
} finally {
|
|
1726
|
+
_iterator10.f();
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
_iterator11 = _createForOfIteratorHelper(memoryDraftMap.entries());
|
|
1730
|
+
_context14.prev = 36;
|
|
1731
|
+
_iterator11.s();
|
|
1732
|
+
case 38:
|
|
1733
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
1734
|
+
_context14.next = 57;
|
|
1735
|
+
break;
|
|
1736
|
+
}
|
|
1737
|
+
_step11$value = _slicedToArray(_step11.value, 2), _storageKey2 = _step11$value[0], _draftOrder = _step11$value[1];
|
|
1738
|
+
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, this.getOrderIdentityMatchKeys(_draftOrder));
|
|
1739
|
+
if (!(matchIndex >= 0)) {
|
|
1740
|
+
_context14.next = 51;
|
|
1741
|
+
break;
|
|
1742
|
+
}
|
|
1743
|
+
existingOrder = updatedList[matchIndex];
|
|
1744
|
+
reconciledDraftOrder = this.preserveExistingBusinessCodeForDraft(existingOrder, _draftOrder);
|
|
1745
|
+
mergedOrder = this.mergeOrderRecords(existingOrder, reconciledDraftOrder);
|
|
1746
|
+
nextOrder = _objectSpread(_objectSpread({}, mergedOrder), {}, {
|
|
1747
|
+
need_sync: 0,
|
|
1748
|
+
is_draft_order: 1
|
|
1749
|
+
});
|
|
1750
|
+
updatedList[matchIndex] = nextOrder;
|
|
1751
|
+
// SQLite 必须与内存中的草稿保持同一份 business_code,避免下次 hydrate 再次丢失分类。
|
|
1752
|
+
draftMap.set(_storageKey2, reconciledDraftOrder);
|
|
1753
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, nextOrder, matchIndex);
|
|
1754
|
+
mergeActions[_storageKey2] = 'update';
|
|
1755
|
+
return _context14.abrupt("continue", 55);
|
|
1756
|
+
case 51:
|
|
1757
|
+
insertIndex = updatedList.length;
|
|
1758
|
+
updatedList.push(_draftOrder);
|
|
1759
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, _draftOrder, insertIndex);
|
|
1760
|
+
mergeActions[_storageKey2] = 'insert';
|
|
1761
|
+
case 55:
|
|
1762
|
+
_context14.next = 38;
|
|
1763
|
+
break;
|
|
1764
|
+
case 57:
|
|
1765
|
+
_context14.next = 62;
|
|
1766
|
+
break;
|
|
1767
|
+
case 59:
|
|
1768
|
+
_context14.prev = 59;
|
|
1769
|
+
_context14.t1 = _context14["catch"](36);
|
|
1770
|
+
_iterator11.e(_context14.t1);
|
|
1771
|
+
case 62:
|
|
1772
|
+
_context14.prev = 62;
|
|
1773
|
+
_iterator11.f();
|
|
1774
|
+
return _context14.finish(62);
|
|
1775
|
+
case 65:
|
|
1776
|
+
patchedOrders = _toConsumableArray(draftMap.values());
|
|
1777
|
+
previousList = this.store.list;
|
|
1778
|
+
this.store.list = this.runOrderStoreSelfCheck(updatedList, 'upsertLocalDraftOrders.store');
|
|
1779
|
+
this.syncOrdersMap();
|
|
1780
|
+
_context14.prev = 69;
|
|
1781
|
+
_context14.next = 72;
|
|
1782
|
+
return this.patchOrdersInSQLite(patchedOrders, 'upsertLocalDraftOrders', mergeActions, {
|
|
1783
|
+
throwOnError: true
|
|
1784
|
+
});
|
|
1785
|
+
case 72:
|
|
1786
|
+
_context14.next = 79;
|
|
1787
|
+
break;
|
|
1788
|
+
case 74:
|
|
1789
|
+
_context14.prev = 74;
|
|
1790
|
+
_context14.t2 = _context14["catch"](69);
|
|
1791
|
+
this.store.list = previousList;
|
|
1792
|
+
this.syncOrdersMap();
|
|
1793
|
+
throw _context14.t2;
|
|
1794
|
+
case 79:
|
|
1795
|
+
this.logInfo('upsertLocalDraftOrders-结束', {
|
|
1796
|
+
count: patchedOrders.length,
|
|
1797
|
+
storeOrderCountAfter: this.store.list.length
|
|
1798
|
+
});
|
|
1799
|
+
removedLegacyMemoryDraft = previousList.some(function (order) {
|
|
1800
|
+
return !_this10.shouldKeepOrderInMemory(order);
|
|
1801
|
+
});
|
|
1802
|
+
if (!(memoryDraftMap.size > 0 || removedLegacyMemoryDraft)) {
|
|
1803
|
+
_context14.next = 84;
|
|
1804
|
+
break;
|
|
1805
|
+
}
|
|
1806
|
+
_context14.next = 84;
|
|
1807
|
+
return this.emitOrdersChanged(patchedOrders.filter(function (order) {
|
|
1808
|
+
return _this10.shouldKeepOrderInMemory(order);
|
|
1809
|
+
}), 'upsertLocalDraftOrders');
|
|
1810
|
+
case 84:
|
|
1811
|
+
case "end":
|
|
1812
|
+
return _context14.stop();
|
|
1813
|
+
}
|
|
1814
|
+
}, _callee14, this, [[6, 21, 24, 27], [36, 59, 62, 65], [69, 74]]);
|
|
1815
|
+
}));
|
|
1816
|
+
function upsertLocalDraftOrders(_x11) {
|
|
1817
|
+
return _upsertLocalDraftOrders.apply(this, arguments);
|
|
1818
|
+
}
|
|
1819
|
+
return upsertLocalDraftOrders;
|
|
1820
|
+
}()
|
|
1242
1821
|
/**
|
|
1243
1822
|
* 通过 SSE 按自定义 query 拉取订单(支持 select/with 精简字段)
|
|
1244
1823
|
*/
|
|
@@ -1246,42 +1825,42 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1246
1825
|
}, {
|
|
1247
1826
|
key: "fetchOrdersBySSE",
|
|
1248
1827
|
value: (function () {
|
|
1249
|
-
var _fetchOrdersBySSE = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1828
|
+
var _fetchOrdersBySSE = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
|
|
1250
1829
|
var query,
|
|
1251
1830
|
data,
|
|
1252
|
-
|
|
1253
|
-
return _regeneratorRuntime().wrap(function
|
|
1254
|
-
while (1) switch (
|
|
1831
|
+
_args15 = arguments;
|
|
1832
|
+
return _regeneratorRuntime().wrap(function _callee15$(_context15) {
|
|
1833
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
1255
1834
|
case 0:
|
|
1256
|
-
query =
|
|
1835
|
+
query = _args15.length > 0 && _args15[0] !== undefined ? _args15[0] : {};
|
|
1257
1836
|
if (this.orderDataSource) {
|
|
1258
|
-
|
|
1837
|
+
_context15.next = 3;
|
|
1259
1838
|
break;
|
|
1260
1839
|
}
|
|
1261
|
-
return
|
|
1840
|
+
return _context15.abrupt("return", []);
|
|
1262
1841
|
case 3:
|
|
1263
|
-
|
|
1264
|
-
|
|
1842
|
+
_context15.prev = 3;
|
|
1843
|
+
_context15.next = 6;
|
|
1265
1844
|
return this.orderDataSource.run({
|
|
1266
1845
|
sse: {
|
|
1267
1846
|
query: query
|
|
1268
1847
|
}
|
|
1269
1848
|
});
|
|
1270
1849
|
case 6:
|
|
1271
|
-
data =
|
|
1272
|
-
return
|
|
1850
|
+
data = _context15.sent;
|
|
1851
|
+
return _context15.abrupt("return", data || []);
|
|
1273
1852
|
case 10:
|
|
1274
|
-
|
|
1275
|
-
|
|
1853
|
+
_context15.prev = 10;
|
|
1854
|
+
_context15.t0 = _context15["catch"](3);
|
|
1276
1855
|
this.logError('fetchOrdersBySSE-失败', {
|
|
1277
|
-
error:
|
|
1856
|
+
error: _context15.t0 instanceof Error ? _context15.t0.message : String(_context15.t0)
|
|
1278
1857
|
});
|
|
1279
|
-
return
|
|
1858
|
+
return _context15.abrupt("return", []);
|
|
1280
1859
|
case 14:
|
|
1281
1860
|
case "end":
|
|
1282
|
-
return
|
|
1861
|
+
return _context15.stop();
|
|
1283
1862
|
}
|
|
1284
|
-
},
|
|
1863
|
+
}, _callee15, this, [[3, 10]]);
|
|
1285
1864
|
}));
|
|
1286
1865
|
function fetchOrdersBySSE() {
|
|
1287
1866
|
return _fetchOrdersBySSE.apply(this, arguments);
|
|
@@ -1309,20 +1888,24 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1309
1888
|
}, {
|
|
1310
1889
|
key: "syncOrdersMap",
|
|
1311
1890
|
value: function syncOrdersMap() {
|
|
1891
|
+
var _this11 = this;
|
|
1892
|
+
this.store.list = this.store.list.filter(function (order) {
|
|
1893
|
+
return _this11.shouldKeepOrderInMemory(order);
|
|
1894
|
+
});
|
|
1312
1895
|
this.store.map.clear();
|
|
1313
|
-
var
|
|
1314
|
-
|
|
1896
|
+
var _iterator12 = _createForOfIteratorHelper(this.store.list),
|
|
1897
|
+
_step12;
|
|
1315
1898
|
try {
|
|
1316
|
-
for (
|
|
1317
|
-
var order =
|
|
1899
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
1900
|
+
var order = _step12.value;
|
|
1318
1901
|
var primaryIdentity = this.getOrderMapKey(order);
|
|
1319
1902
|
if (!primaryIdentity) continue;
|
|
1320
1903
|
this.store.map.set(primaryIdentity, order);
|
|
1321
1904
|
}
|
|
1322
1905
|
} catch (err) {
|
|
1323
|
-
|
|
1906
|
+
_iterator12.e(err);
|
|
1324
1907
|
} finally {
|
|
1325
|
-
|
|
1908
|
+
_iterator12.f();
|
|
1326
1909
|
}
|
|
1327
1910
|
}
|
|
1328
1911
|
}, {
|
|
@@ -1343,10 +1926,27 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1343
1926
|
value: function isBlankIdentityValue(value) {
|
|
1344
1927
|
return value === undefined || value === null || value === '';
|
|
1345
1928
|
}
|
|
1929
|
+
|
|
1930
|
+
/**
|
|
1931
|
+
* `/sales/draft` 的旧调用方可能把未设置的 business_code 传成空串。
|
|
1932
|
+
* 对同一真实订单,空值不能覆盖已有的分类,否则 booking 查询会把该订单从 Party 列表过滤掉。
|
|
1933
|
+
*/
|
|
1934
|
+
}, {
|
|
1935
|
+
key: "preserveExistingBusinessCodeForDraft",
|
|
1936
|
+
value: function preserveExistingBusinessCodeForDraft(existingOrder, draftOrder) {
|
|
1937
|
+
var existingBusinessCode = existingOrder.business_code;
|
|
1938
|
+
var draftBusinessCode = draftOrder.business_code;
|
|
1939
|
+
var hasExistingBusinessCode = typeof existingBusinessCode === 'string' && existingBusinessCode.trim() !== '';
|
|
1940
|
+
var hasDraftBusinessCode = typeof draftBusinessCode === 'string' && draftBusinessCode.trim() !== '';
|
|
1941
|
+
if (!hasExistingBusinessCode || hasDraftBusinessCode) return draftOrder;
|
|
1942
|
+
return _objectSpread(_objectSpread({}, draftOrder), {}, {
|
|
1943
|
+
business_code: existingBusinessCode
|
|
1944
|
+
});
|
|
1945
|
+
}
|
|
1346
1946
|
}, {
|
|
1347
1947
|
key: "getOrderIdentityEntries",
|
|
1348
1948
|
value: function getOrderIdentityEntries(order) {
|
|
1349
|
-
var
|
|
1949
|
+
var _this12 = this;
|
|
1350
1950
|
if (!order) return [];
|
|
1351
1951
|
var record = order;
|
|
1352
1952
|
var candidates = [{
|
|
@@ -1365,8 +1965,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1365
1965
|
var entries = [];
|
|
1366
1966
|
var _loop = function _loop() {
|
|
1367
1967
|
var candidate = _candidates[_i2];
|
|
1368
|
-
if (
|
|
1369
|
-
var key =
|
|
1968
|
+
if (_this12.isBlankIdentityValue(candidate.value)) return 0; // continue
|
|
1969
|
+
var key = _this12.getIdKey(candidate.value);
|
|
1370
1970
|
if (entries.some(function (entry) {
|
|
1371
1971
|
return entry.field === candidate.field && entry.key === key;
|
|
1372
1972
|
})) return 0; // continue
|
|
@@ -1386,17 +1986,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1386
1986
|
key: "getOrderIdentityKeys",
|
|
1387
1987
|
value: function getOrderIdentityKeys(order) {
|
|
1388
1988
|
var keys = [];
|
|
1389
|
-
var
|
|
1390
|
-
|
|
1989
|
+
var _iterator13 = _createForOfIteratorHelper(this.getOrderIdentityEntries(order)),
|
|
1990
|
+
_step13;
|
|
1391
1991
|
try {
|
|
1392
|
-
for (
|
|
1393
|
-
var entry =
|
|
1992
|
+
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
1993
|
+
var entry = _step13.value;
|
|
1394
1994
|
if (!keys.includes(entry.key)) keys.push(entry.key);
|
|
1395
1995
|
}
|
|
1396
1996
|
} catch (err) {
|
|
1397
|
-
|
|
1997
|
+
_iterator13.e(err);
|
|
1398
1998
|
} finally {
|
|
1399
|
-
|
|
1999
|
+
_iterator13.f();
|
|
1400
2000
|
}
|
|
1401
2001
|
return keys;
|
|
1402
2002
|
}
|
|
@@ -1433,7 +2033,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1433
2033
|
}, {
|
|
1434
2034
|
key: "setupOrderSync",
|
|
1435
2035
|
value: function setupOrderSync() {
|
|
1436
|
-
var
|
|
2036
|
+
var _this13 = this;
|
|
1437
2037
|
if (!this.orderDataSource) return;
|
|
1438
2038
|
this.orderDataSource.run({
|
|
1439
2039
|
pubsub: {
|
|
@@ -1441,22 +2041,22 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1441
2041
|
var _message$id, _message$order_id, _message$type;
|
|
1442
2042
|
console.log('orderDataSource', res);
|
|
1443
2043
|
var pubsubReceivedAt = Date.now();
|
|
1444
|
-
var message =
|
|
2044
|
+
var message = _this13.normalizeOrderSyncMessage(res);
|
|
1445
2045
|
if (!message) return;
|
|
1446
2046
|
message._pubsubReceivedAt = pubsubReceivedAt;
|
|
1447
|
-
|
|
1448
|
-
var throttleMs =
|
|
1449
|
-
var routeInfo =
|
|
1450
|
-
|
|
2047
|
+
_this13.pendingSyncMessages.push(message);
|
|
2048
|
+
var throttleMs = _this13.getOrderSyncThrottleMs();
|
|
2049
|
+
var routeInfo = _this13.resolveSyncMessageRoute(message);
|
|
2050
|
+
_this13.logInfo('orderSync-收到消息并入队', {
|
|
1451
2051
|
id: (_message$id = message.id) !== null && _message$id !== void 0 ? _message$id : null,
|
|
1452
2052
|
order_id: (_message$order_id = message.order_id) !== null && _message$order_id !== void 0 ? _message$order_id : null,
|
|
1453
2053
|
type: (_message$type = message.type) !== null && _message$type !== void 0 ? _message$type : null,
|
|
1454
|
-
pendingCount:
|
|
2054
|
+
pendingCount: _this13.pendingSyncMessages.length,
|
|
1455
2055
|
throttleMs: throttleMs,
|
|
1456
2056
|
pubsubReceivedAt: new Date(pubsubReceivedAt).toISOString(),
|
|
1457
2057
|
fullMessage: JSON.stringify(message)
|
|
1458
2058
|
});
|
|
1459
|
-
|
|
2059
|
+
_this13.scheduleOrderSyncThrottle();
|
|
1460
2060
|
}
|
|
1461
2061
|
}
|
|
1462
2062
|
}).catch(function () {
|
|
@@ -1473,7 +2073,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1473
2073
|
}, {
|
|
1474
2074
|
key: "scheduleOrderSyncThrottle",
|
|
1475
2075
|
value: function scheduleOrderSyncThrottle() {
|
|
1476
|
-
var
|
|
2076
|
+
var _this14 = this;
|
|
1477
2077
|
if (this.isProcessingSyncBatch) return;
|
|
1478
2078
|
if (this.isIdlePhase) {
|
|
1479
2079
|
this.isIdlePhase = false;
|
|
@@ -1484,8 +2084,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1484
2084
|
if (this.syncTimer) return;
|
|
1485
2085
|
var throttleMs = this.getOrderSyncThrottleMs();
|
|
1486
2086
|
this.syncTimer = setTimeout(function () {
|
|
1487
|
-
|
|
1488
|
-
void
|
|
2087
|
+
_this14.syncTimer = undefined;
|
|
2088
|
+
void _this14.flushOrderSyncMessagesByThrottle();
|
|
1489
2089
|
}, throttleMs);
|
|
1490
2090
|
}
|
|
1491
2091
|
|
|
@@ -1496,41 +2096,41 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1496
2096
|
}, {
|
|
1497
2097
|
key: "flushOrderSyncMessagesByThrottle",
|
|
1498
2098
|
value: (function () {
|
|
1499
|
-
var _flushOrderSyncMessagesByThrottle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1500
|
-
return _regeneratorRuntime().wrap(function
|
|
1501
|
-
while (1) switch (
|
|
2099
|
+
var _flushOrderSyncMessagesByThrottle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {
|
|
2100
|
+
return _regeneratorRuntime().wrap(function _callee16$(_context16) {
|
|
2101
|
+
while (1) switch (_context16.prev = _context16.next) {
|
|
1502
2102
|
case 0:
|
|
1503
2103
|
if (!this.isProcessingSyncBatch) {
|
|
1504
|
-
|
|
2104
|
+
_context16.next = 2;
|
|
1505
2105
|
break;
|
|
1506
2106
|
}
|
|
1507
|
-
return
|
|
2107
|
+
return _context16.abrupt("return");
|
|
1508
2108
|
case 2:
|
|
1509
2109
|
if (!(this.pendingSyncMessages.length === 0)) {
|
|
1510
|
-
|
|
2110
|
+
_context16.next = 5;
|
|
1511
2111
|
break;
|
|
1512
2112
|
}
|
|
1513
2113
|
this.isIdlePhase = true;
|
|
1514
|
-
return
|
|
2114
|
+
return _context16.abrupt("return");
|
|
1515
2115
|
case 5:
|
|
1516
2116
|
this.isProcessingSyncBatch = true;
|
|
1517
|
-
|
|
1518
|
-
|
|
2117
|
+
_context16.prev = 6;
|
|
2118
|
+
_context16.next = 9;
|
|
1519
2119
|
return this.processOrderSyncMessages();
|
|
1520
2120
|
case 9:
|
|
1521
|
-
|
|
2121
|
+
_context16.prev = 9;
|
|
1522
2122
|
this.isProcessingSyncBatch = false;
|
|
1523
2123
|
if (this.pendingSyncMessages.length > 0) {
|
|
1524
2124
|
this.scheduleOrderSyncThrottle();
|
|
1525
2125
|
} else {
|
|
1526
2126
|
this.isIdlePhase = true;
|
|
1527
2127
|
}
|
|
1528
|
-
return
|
|
2128
|
+
return _context16.finish(9);
|
|
1529
2129
|
case 13:
|
|
1530
2130
|
case "end":
|
|
1531
|
-
return
|
|
2131
|
+
return _context16.stop();
|
|
1532
2132
|
}
|
|
1533
|
-
},
|
|
2133
|
+
}, _callee16, this, [[6,, 9, 13]]);
|
|
1534
2134
|
}));
|
|
1535
2135
|
function flushOrderSyncMessagesByThrottle() {
|
|
1536
2136
|
return _flushOrderSyncMessagesByThrottle.apply(this, arguments);
|
|
@@ -1552,19 +2152,19 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1552
2152
|
}, {
|
|
1553
2153
|
key: "processOrderSyncMessages",
|
|
1554
2154
|
value: (function () {
|
|
1555
|
-
var _processOrderSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1556
|
-
var
|
|
2155
|
+
var _processOrderSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {
|
|
2156
|
+
var _this15 = this;
|
|
1557
2157
|
var messages, batchProcessStartAt, earliestReceivedAt, upsertOrders, refreshIds, uniqueRefreshIds, upsertList, _this$filterRedundant, toFetch, skipped, freshOrders, batchProcessEndAt;
|
|
1558
|
-
return _regeneratorRuntime().wrap(function
|
|
1559
|
-
while (1) switch (
|
|
2158
|
+
return _regeneratorRuntime().wrap(function _callee17$(_context17) {
|
|
2159
|
+
while (1) switch (_context17.prev = _context17.next) {
|
|
1560
2160
|
case 0:
|
|
1561
2161
|
messages = _toConsumableArray(this.pendingSyncMessages);
|
|
1562
2162
|
this.pendingSyncMessages = [];
|
|
1563
2163
|
if (!(messages.length === 0)) {
|
|
1564
|
-
|
|
2164
|
+
_context17.next = 4;
|
|
1565
2165
|
break;
|
|
1566
2166
|
}
|
|
1567
|
-
return
|
|
2167
|
+
return _context17.abrupt("return");
|
|
1568
2168
|
case 4:
|
|
1569
2169
|
batchProcessStartAt = Date.now();
|
|
1570
2170
|
earliestReceivedAt = Math.min.apply(Math, _toConsumableArray(messages.map(function (m) {
|
|
@@ -1580,13 +2180,13 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1580
2180
|
upsertOrders = new Map();
|
|
1581
2181
|
refreshIds = [];
|
|
1582
2182
|
messages.forEach(function (msg, msgIndex) {
|
|
1583
|
-
var routeInfo =
|
|
2183
|
+
var routeInfo = _this15.resolveSyncMessageRoute(msg);
|
|
1584
2184
|
var hasBatchIds = routeInfo.hasBatchIds;
|
|
1585
2185
|
var singleId = routeInfo.singleId;
|
|
1586
2186
|
var hasSingleId = routeInfo.hasSingleId;
|
|
1587
|
-
var normalizedBody =
|
|
2187
|
+
var normalizedBody = _this15.normalizeOrderSyncPayload(msg.body || msg.data);
|
|
1588
2188
|
if (routeInfo.route === 'bodyUpsert' && normalizedBody) {
|
|
1589
|
-
upsertOrders.set(
|
|
2189
|
+
upsertOrders.set(_this15.getIdKey(normalizedBody.order_id), normalizedBody);
|
|
1590
2190
|
return;
|
|
1591
2191
|
}
|
|
1592
2192
|
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));
|
|
@@ -1598,41 +2198,41 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1598
2198
|
refreshIdCount: uniqueRefreshIds.length
|
|
1599
2199
|
});
|
|
1600
2200
|
if (!(upsertList.length > 0)) {
|
|
1601
|
-
|
|
2201
|
+
_context17.next = 16;
|
|
1602
2202
|
break;
|
|
1603
2203
|
}
|
|
1604
|
-
|
|
2204
|
+
_context17.next = 16;
|
|
1605
2205
|
return this.mergeOrdersToStore(upsertList, 'pubsub.bodyUpsert');
|
|
1606
2206
|
case 16:
|
|
1607
2207
|
if (!(uniqueRefreshIds.length > 0)) {
|
|
1608
|
-
|
|
2208
|
+
_context17.next = 28;
|
|
1609
2209
|
break;
|
|
1610
2210
|
}
|
|
1611
2211
|
_this$filterRedundant = this.filterRedundantHttpRefreshIds(uniqueRefreshIds), toFetch = _this$filterRedundant.toFetch, skipped = _this$filterRedundant.skipped;
|
|
1612
2212
|
if (skipped.length > 0) {}
|
|
1613
2213
|
if (!(toFetch.length > 0)) {
|
|
1614
|
-
|
|
2214
|
+
_context17.next = 28;
|
|
1615
2215
|
break;
|
|
1616
2216
|
}
|
|
1617
|
-
|
|
2217
|
+
_context17.next = 22;
|
|
1618
2218
|
return this.fetchOrdersByHttp(toFetch);
|
|
1619
2219
|
case 22:
|
|
1620
|
-
freshOrders =
|
|
2220
|
+
freshOrders = _context17.sent;
|
|
1621
2221
|
if (!(freshOrders.length > 0)) {
|
|
1622
|
-
|
|
2222
|
+
_context17.next = 28;
|
|
1623
2223
|
break;
|
|
1624
2224
|
}
|
|
1625
|
-
|
|
2225
|
+
_context17.next = 26;
|
|
1626
2226
|
return this.mergeOrdersToStore(freshOrders, 'pubsub.httpRefresh');
|
|
1627
2227
|
case 26:
|
|
1628
|
-
|
|
2228
|
+
_context17.next = 28;
|
|
1629
2229
|
break;
|
|
1630
2230
|
case 28:
|
|
1631
2231
|
if (!(upsertList.length === 0 && uniqueRefreshIds.length === 0)) {
|
|
1632
|
-
|
|
2232
|
+
_context17.next = 30;
|
|
1633
2233
|
break;
|
|
1634
2234
|
}
|
|
1635
|
-
return
|
|
2235
|
+
return _context17.abrupt("return");
|
|
1636
2236
|
case 30:
|
|
1637
2237
|
batchProcessEndAt = Date.now();
|
|
1638
2238
|
this.logInfo('processOrderSyncMessages-结束', {
|
|
@@ -1641,13 +2241,13 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1641
2241
|
batchProcessDurationMs: batchProcessEndAt - batchProcessStartAt,
|
|
1642
2242
|
totalFromPubsubToProcessedMs: batchProcessEndAt - earliestReceivedAt
|
|
1643
2243
|
});
|
|
1644
|
-
|
|
2244
|
+
_context17.next = 34;
|
|
1645
2245
|
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
1646
2246
|
case 34:
|
|
1647
2247
|
case "end":
|
|
1648
|
-
return
|
|
2248
|
+
return _context17.stop();
|
|
1649
2249
|
}
|
|
1650
|
-
},
|
|
2250
|
+
}, _callee17, this);
|
|
1651
2251
|
}));
|
|
1652
2252
|
function processOrderSyncMessages() {
|
|
1653
2253
|
return _processOrderSyncMessages.apply(this, arguments);
|
|
@@ -1668,29 +2268,29 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1668
2268
|
}, {
|
|
1669
2269
|
key: "fetchOrdersByHttp",
|
|
1670
2270
|
value: (function () {
|
|
1671
|
-
var _fetchOrdersByHttp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2271
|
+
var _fetchOrdersByHttp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee18(ids) {
|
|
1672
2272
|
var _orderList, orderList;
|
|
1673
|
-
return _regeneratorRuntime().wrap(function
|
|
1674
|
-
while (1) switch (
|
|
2273
|
+
return _regeneratorRuntime().wrap(function _callee18$(_context18) {
|
|
2274
|
+
while (1) switch (_context18.prev = _context18.next) {
|
|
1675
2275
|
case 0:
|
|
1676
2276
|
if (!(!this.orderDataSource || ids.length === 0)) {
|
|
1677
|
-
|
|
2277
|
+
_context18.next = 2;
|
|
1678
2278
|
break;
|
|
1679
2279
|
}
|
|
1680
|
-
return
|
|
2280
|
+
return _context18.abrupt("return", []);
|
|
1681
2281
|
case 2:
|
|
1682
|
-
|
|
2282
|
+
_context18.prev = 2;
|
|
1683
2283
|
if (!(typeof this.orderDataSource.fetchOrdersByIds === 'function')) {
|
|
1684
|
-
|
|
2284
|
+
_context18.next = 8;
|
|
1685
2285
|
break;
|
|
1686
2286
|
}
|
|
1687
|
-
|
|
2287
|
+
_context18.next = 6;
|
|
1688
2288
|
return this.orderDataSource.fetchOrdersByIds(ids);
|
|
1689
2289
|
case 6:
|
|
1690
|
-
_orderList =
|
|
1691
|
-
return
|
|
2290
|
+
_orderList = _context18.sent;
|
|
2291
|
+
return _context18.abrupt("return", _orderList || []);
|
|
1692
2292
|
case 8:
|
|
1693
|
-
|
|
2293
|
+
_context18.next = 10;
|
|
1694
2294
|
return this.orderDataSource.run({
|
|
1695
2295
|
http: {
|
|
1696
2296
|
query: {
|
|
@@ -1699,19 +2299,19 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1699
2299
|
}
|
|
1700
2300
|
});
|
|
1701
2301
|
case 10:
|
|
1702
|
-
orderList =
|
|
1703
|
-
return
|
|
2302
|
+
orderList = _context18.sent;
|
|
2303
|
+
return _context18.abrupt("return", orderList || []);
|
|
1704
2304
|
case 14:
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
return
|
|
2305
|
+
_context18.prev = 14;
|
|
2306
|
+
_context18.t0 = _context18["catch"](2);
|
|
2307
|
+
return _context18.abrupt("return", []);
|
|
1708
2308
|
case 17:
|
|
1709
2309
|
case "end":
|
|
1710
|
-
return
|
|
2310
|
+
return _context18.stop();
|
|
1711
2311
|
}
|
|
1712
|
-
},
|
|
2312
|
+
}, _callee18, this, [[2, 14]]);
|
|
1713
2313
|
}));
|
|
1714
|
-
function fetchOrdersByHttp(
|
|
2314
|
+
function fetchOrdersByHttp(_x12) {
|
|
1715
2315
|
return _fetchOrdersByHttp.apply(this, arguments);
|
|
1716
2316
|
}
|
|
1717
2317
|
return fetchOrdersByHttp;
|
|
@@ -1723,11 +2323,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1723
2323
|
}, {
|
|
1724
2324
|
key: "mergeOrdersToStore",
|
|
1725
2325
|
value: (function () {
|
|
1726
|
-
var _mergeOrdersToStore = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1727
|
-
var
|
|
1728
|
-
var storeOrderCountBefore, normalizedFreshOrders,
|
|
1729
|
-
return _regeneratorRuntime().wrap(function
|
|
1730
|
-
while (1) switch (
|
|
2326
|
+
var _mergeOrdersToStore = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee19(freshOrders, source) {
|
|
2327
|
+
var _this16 = this;
|
|
2328
|
+
var storeOrderCountBefore, normalizedFreshOrders, incomingProductsHaveStableIdentity, _iterator14, _step14, order, id, rawProducts, _incomingProductsHave, allProductsHaveStableIdentity, orderIdKey, uniqueFreshOrders, uniqueFreshCount, patchedOrders, remoteProductMembershipChanges, forceWriteStorageKeys, mergeActions, existingProductsHaveStableIdentity, updatedList, identityKeyToIndex, index, identityKeys, _iterator15, _step15, key, _iterator16, _step16, fresh, freshIdentityKeys, matchIndex, storageKey, mergeKey, existingOrder, _ref, _existingOrder$order_, _ref2, _external_sale_number2, _existingOrder$paymen, _fresh$payment_status, _existingOrder$need_s, _fresh$need_sync, _ref3, _existingOrder$order_2, _ref4, _external_sale_number3, _existingOrder$is_dra, _fresh$is_draft_order, mergedOrder, freshOrderId, incomingProductsAreStable, membershipChange, mergedProductsHaveStableIdentity, adjustedMatchIndex, duplicateIndexes, _iterator17, _step17, _key2, _duplicateIndex, _iterator18, _step18, duplicateIndex, _index, _iterator19, _step19, _key, mergedStorageKey, insertIndex, insertCount, updateCount;
|
|
2329
|
+
return _regeneratorRuntime().wrap(function _callee19$(_context19) {
|
|
2330
|
+
while (1) switch (_context19.prev = _context19.next) {
|
|
1731
2331
|
case 0:
|
|
1732
2332
|
storeOrderCountBefore = this.store.list.length;
|
|
1733
2333
|
this.logInfo('mergeOrdersToStore-开始', {
|
|
@@ -1737,127 +2337,234 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1737
2337
|
});
|
|
1738
2338
|
this.logDuplicateOrders("".concat(source, ".beforeMerge"), this.store.list);
|
|
1739
2339
|
normalizedFreshOrders = [];
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
2340
|
+
incomingProductsHaveStableIdentity = new Map();
|
|
2341
|
+
_iterator14 = _createForOfIteratorHelper(freshOrders);
|
|
2342
|
+
_context19.prev = 6;
|
|
2343
|
+
_iterator14.s();
|
|
2344
|
+
case 8:
|
|
2345
|
+
if ((_step14 = _iterator14.n()).done) {
|
|
2346
|
+
_context19.next = 18;
|
|
1746
2347
|
break;
|
|
1747
2348
|
}
|
|
1748
|
-
order =
|
|
2349
|
+
order = _step14.value;
|
|
1749
2350
|
id = order === null || order === void 0 ? void 0 : order.order_id;
|
|
1750
2351
|
if (!(id === undefined || id === null)) {
|
|
1751
|
-
|
|
2352
|
+
_context19.next = 13;
|
|
1752
2353
|
break;
|
|
1753
2354
|
}
|
|
1754
|
-
return
|
|
1755
|
-
case 12:
|
|
1756
|
-
normalizedFreshOrders.push(this.normalizeRemoteSyncedOrder(order));
|
|
2355
|
+
return _context19.abrupt("continue", 16);
|
|
1757
2356
|
case 13:
|
|
1758
|
-
|
|
2357
|
+
rawProducts = order.products;
|
|
2358
|
+
if (Array.isArray(rawProducts)) {
|
|
2359
|
+
allProductsHaveStableIdentity = this.doProductsHaveStableMembershipIdentity(rawProducts);
|
|
2360
|
+
orderIdKey = this.getIdKey(id);
|
|
2361
|
+
incomingProductsHaveStableIdentity.set(orderIdKey, ((_incomingProductsHave = incomingProductsHaveStableIdentity.get(orderIdKey)) !== null && _incomingProductsHave !== void 0 ? _incomingProductsHave : true) && allProductsHaveStableIdentity);
|
|
2362
|
+
}
|
|
2363
|
+
normalizedFreshOrders.push(this.normalizeRemoteSyncedOrder(order));
|
|
2364
|
+
case 16:
|
|
2365
|
+
_context19.next = 8;
|
|
1759
2366
|
break;
|
|
1760
|
-
case
|
|
1761
|
-
|
|
2367
|
+
case 18:
|
|
2368
|
+
_context19.next = 23;
|
|
1762
2369
|
break;
|
|
1763
|
-
case 17:
|
|
1764
|
-
_context16.prev = 17;
|
|
1765
|
-
_context16.t0 = _context16["catch"](5);
|
|
1766
|
-
_iterator10.e(_context16.t0);
|
|
1767
2370
|
case 20:
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
2371
|
+
_context19.prev = 20;
|
|
2372
|
+
_context19.t0 = _context19["catch"](6);
|
|
2373
|
+
_iterator14.e(_context19.t0);
|
|
1771
2374
|
case 23:
|
|
2375
|
+
_context19.prev = 23;
|
|
2376
|
+
_iterator14.f();
|
|
2377
|
+
return _context19.finish(23);
|
|
2378
|
+
case 26:
|
|
1772
2379
|
// 先对本批新单做去重(批内规模 m 很小),保证每条 fresh 身份唯一
|
|
1773
2380
|
uniqueFreshOrders = this.compactOrderListByIdentity(normalizedFreshOrders, "".concat(source, ".incoming")).list;
|
|
1774
2381
|
uniqueFreshCount = uniqueFreshOrders.length;
|
|
1775
2382
|
patchedOrders = [];
|
|
2383
|
+
remoteProductMembershipChanges = [];
|
|
2384
|
+
forceWriteStorageKeys = new Set();
|
|
1776
2385
|
mergeActions = {};
|
|
2386
|
+
existingProductsHaveStableIdentity = this.store.list.map(function (order) {
|
|
2387
|
+
return _this16.doProductsHaveStableMembershipIdentity(order.products);
|
|
2388
|
+
});
|
|
1777
2389
|
updatedList = this.store.list.map(function (order) {
|
|
1778
|
-
return
|
|
2390
|
+
return _this16.normalizeOrderForMemoryList(order, "".concat(source, ".existingMemory"));
|
|
1779
2391
|
}); // 基于身份键(field:value)建立索引,把「查找已存在订单」从 O(n) 线性扫描降为 O(1),
|
|
1780
2392
|
// 整体合并复杂度由 O(n^2) 降为 O(n + m)。索引语义与 doOrdersShareIdentity 完全一致:
|
|
1781
2393
|
// 任一身份字段(order_id/external_sale_number/order_number/shop_order_number)同值即同一单。
|
|
1782
2394
|
identityKeyToIndex = new Map();
|
|
1783
2395
|
for (index = 0; index < updatedList.length; index += 1) {
|
|
1784
2396
|
identityKeys = this.getOrderIdentityMatchKeys(updatedList[index]);
|
|
1785
|
-
|
|
2397
|
+
_iterator15 = _createForOfIteratorHelper(identityKeys);
|
|
1786
2398
|
try {
|
|
1787
|
-
for (
|
|
1788
|
-
key =
|
|
2399
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
2400
|
+
key = _step15.value;
|
|
1789
2401
|
// 同一 key 命中多张时保留最靠前的下标,与原 findIndex「取首个匹配」一致
|
|
1790
2402
|
if (!identityKeyToIndex.has(key)) identityKeyToIndex.set(key, index);
|
|
1791
2403
|
}
|
|
1792
2404
|
} catch (err) {
|
|
1793
|
-
|
|
2405
|
+
_iterator15.e(err);
|
|
1794
2406
|
} finally {
|
|
1795
|
-
|
|
2407
|
+
_iterator15.f();
|
|
1796
2408
|
}
|
|
1797
2409
|
}
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
case
|
|
1802
|
-
if ((
|
|
1803
|
-
|
|
2410
|
+
_iterator16 = _createForOfIteratorHelper(uniqueFreshOrders);
|
|
2411
|
+
_context19.prev = 37;
|
|
2412
|
+
_iterator16.s();
|
|
2413
|
+
case 39:
|
|
2414
|
+
if ((_step16 = _iterator16.n()).done) {
|
|
2415
|
+
_context19.next = 96;
|
|
1804
2416
|
break;
|
|
1805
2417
|
}
|
|
1806
|
-
fresh =
|
|
2418
|
+
fresh = _step16.value;
|
|
1807
2419
|
freshIdentityKeys = this.getOrderIdentityMatchKeys(fresh);
|
|
1808
2420
|
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, freshIdentityKeys);
|
|
1809
2421
|
storageKey = this.getOrderStorageKey(fresh);
|
|
1810
2422
|
mergeKey = storageKey || (fresh.order_id !== undefined && fresh.order_id !== null ? this.getIdKey(fresh.order_id) : '');
|
|
1811
2423
|
if (!(matchIndex >= 0)) {
|
|
1812
|
-
|
|
2424
|
+
_context19.next = 88;
|
|
1813
2425
|
break;
|
|
1814
2426
|
}
|
|
1815
2427
|
existingOrder = updatedList[matchIndex];
|
|
1816
2428
|
if (!(this.isPendingSyncOrder(existingOrder) && this.isRemoteEchoMergeSource(source))) {
|
|
1817
|
-
|
|
2429
|
+
_context19.next = 50;
|
|
1818
2430
|
break;
|
|
1819
2431
|
}
|
|
1820
2432
|
this.logInfo('mergeOrdersToStore-跳过 pending 订单远端覆盖', {
|
|
1821
2433
|
source: source,
|
|
1822
|
-
order_id: (
|
|
1823
|
-
external_sale_number: (
|
|
2434
|
+
order_id: (_ref = (_existingOrder$order_ = existingOrder.order_id) !== null && _existingOrder$order_ !== void 0 ? _existingOrder$order_ : fresh.order_id) !== null && _ref !== void 0 ? _ref : null,
|
|
2435
|
+
external_sale_number: (_ref2 = (_external_sale_number2 = existingOrder.external_sale_number) !== null && _external_sale_number2 !== void 0 ? _external_sale_number2 : fresh.external_sale_number) !== null && _ref2 !== void 0 ? _ref2 : null,
|
|
1824
2436
|
local_payment_status: (_existingOrder$paymen = existingOrder.payment_status) !== null && _existingOrder$paymen !== void 0 ? _existingOrder$paymen : null,
|
|
1825
2437
|
remote_payment_status: (_fresh$payment_status = fresh.payment_status) !== null && _fresh$payment_status !== void 0 ? _fresh$payment_status : null,
|
|
1826
2438
|
local_need_sync: (_existingOrder$need_s = existingOrder.need_sync) !== null && _existingOrder$need_s !== void 0 ? _existingOrder$need_s : null,
|
|
1827
2439
|
remote_need_sync: (_fresh$need_sync = fresh.need_sync) !== null && _fresh$need_sync !== void 0 ? _fresh$need_sync : null,
|
|
1828
2440
|
reason: 'protect_pending_sync_order_from_remote_echo'
|
|
1829
2441
|
});
|
|
1830
|
-
return
|
|
1831
|
-
case
|
|
2442
|
+
return _context19.abrupt("continue", 94);
|
|
2443
|
+
case 50:
|
|
2444
|
+
if (!(this.isDraftOrder(existingOrder) && this.shouldProtectDraftOrderFromIncoming(source))) {
|
|
2445
|
+
_context19.next = 53;
|
|
2446
|
+
break;
|
|
2447
|
+
}
|
|
2448
|
+
this.logInfo('mergeOrdersToStore-跳过 draft 订单远端覆盖', {
|
|
2449
|
+
source: source,
|
|
2450
|
+
order_id: (_ref3 = (_existingOrder$order_2 = existingOrder.order_id) !== null && _existingOrder$order_2 !== void 0 ? _existingOrder$order_2 : fresh.order_id) !== null && _ref3 !== void 0 ? _ref3 : null,
|
|
2451
|
+
external_sale_number: (_ref4 = (_external_sale_number3 = existingOrder.external_sale_number) !== null && _external_sale_number3 !== void 0 ? _external_sale_number3 : fresh.external_sale_number) !== null && _ref4 !== void 0 ? _ref4 : null,
|
|
2452
|
+
local_is_draft_order: (_existingOrder$is_dra = existingOrder.is_draft_order) !== null && _existingOrder$is_dra !== void 0 ? _existingOrder$is_dra : null,
|
|
2453
|
+
remote_is_draft_order: (_fresh$is_draft_order = fresh.is_draft_order) !== null && _fresh$is_draft_order !== void 0 ? _fresh$is_draft_order : null,
|
|
2454
|
+
reason: 'protect_draft_order_from_remote_echo'
|
|
2455
|
+
});
|
|
2456
|
+
return _context19.abrupt("continue", 94);
|
|
2457
|
+
case 53:
|
|
1832
2458
|
mergedOrder = this.mergeOrderRecords(existingOrder, fresh);
|
|
1833
|
-
|
|
2459
|
+
freshOrderId = fresh.order_id;
|
|
2460
|
+
incomingProductsAreStable = freshOrderId !== undefined && freshOrderId !== null && incomingProductsHaveStableIdentity.get(this.getIdKey(freshOrderId)) !== false;
|
|
2461
|
+
membershipChange = null;
|
|
2462
|
+
if (Array.isArray(fresh.products) && freshOrderId !== undefined && freshOrderId !== null && existingProductsHaveStableIdentity[matchIndex] !== false && incomingProductsAreStable) {
|
|
2463
|
+
membershipChange = this.getRemoteProductMembershipChange(existingOrder, mergedOrder, source);
|
|
2464
|
+
}
|
|
2465
|
+
mergedProductsHaveStableIdentity = existingProductsHaveStableIdentity[matchIndex] !== false && incomingProductsAreStable;
|
|
2466
|
+
adjustedMatchIndex = matchIndex;
|
|
2467
|
+
duplicateIndexes = new Set();
|
|
2468
|
+
_iterator17 = _createForOfIteratorHelper(freshIdentityKeys);
|
|
2469
|
+
_context19.prev = 62;
|
|
2470
|
+
_iterator17.s();
|
|
2471
|
+
case 64:
|
|
2472
|
+
if ((_step17 = _iterator17.n()).done) {
|
|
2473
|
+
_context19.next = 72;
|
|
2474
|
+
break;
|
|
2475
|
+
}
|
|
2476
|
+
_key2 = _step17.value;
|
|
2477
|
+
_duplicateIndex = identityKeyToIndex.get(_key2);
|
|
2478
|
+
if (!(_duplicateIndex === undefined || _duplicateIndex === matchIndex)) {
|
|
2479
|
+
_context19.next = 69;
|
|
2480
|
+
break;
|
|
2481
|
+
}
|
|
2482
|
+
return _context19.abrupt("continue", 70);
|
|
2483
|
+
case 69:
|
|
2484
|
+
duplicateIndexes.add(_duplicateIndex);
|
|
2485
|
+
case 70:
|
|
2486
|
+
_context19.next = 64;
|
|
2487
|
+
break;
|
|
2488
|
+
case 72:
|
|
2489
|
+
_context19.next = 77;
|
|
2490
|
+
break;
|
|
2491
|
+
case 74:
|
|
2492
|
+
_context19.prev = 74;
|
|
2493
|
+
_context19.t1 = _context19["catch"](62);
|
|
2494
|
+
_iterator17.e(_context19.t1);
|
|
2495
|
+
case 77:
|
|
2496
|
+
_context19.prev = 77;
|
|
2497
|
+
_iterator17.f();
|
|
2498
|
+
return _context19.finish(77);
|
|
2499
|
+
case 80:
|
|
2500
|
+
if (duplicateIndexes.size > 0) {
|
|
2501
|
+
_iterator18 = _createForOfIteratorHelper(_toConsumableArray(duplicateIndexes).sort(function (left, right) {
|
|
2502
|
+
return right - left;
|
|
2503
|
+
}));
|
|
2504
|
+
try {
|
|
2505
|
+
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
2506
|
+
duplicateIndex = _step18.value;
|
|
2507
|
+
mergedOrder = this.mergeOrderRecords(mergedOrder, updatedList[duplicateIndex]);
|
|
2508
|
+
mergedProductsHaveStableIdentity = mergedProductsHaveStableIdentity && existingProductsHaveStableIdentity[duplicateIndex] !== false;
|
|
2509
|
+
updatedList.splice(duplicateIndex, 1);
|
|
2510
|
+
existingProductsHaveStableIdentity.splice(duplicateIndex, 1);
|
|
2511
|
+
if (duplicateIndex < adjustedMatchIndex) adjustedMatchIndex -= 1;
|
|
2512
|
+
}
|
|
2513
|
+
} catch (err) {
|
|
2514
|
+
_iterator18.e(err);
|
|
2515
|
+
} finally {
|
|
2516
|
+
_iterator18.f();
|
|
2517
|
+
}
|
|
2518
|
+
identityKeyToIndex.clear();
|
|
2519
|
+
for (_index = 0; _index < updatedList.length; _index += 1) {
|
|
2520
|
+
_iterator19 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(updatedList[_index]));
|
|
2521
|
+
try {
|
|
2522
|
+
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
2523
|
+
_key = _step19.value;
|
|
2524
|
+
if (!identityKeyToIndex.has(_key)) identityKeyToIndex.set(_key, _index);
|
|
2525
|
+
}
|
|
2526
|
+
} catch (err) {
|
|
2527
|
+
_iterator19.e(err);
|
|
2528
|
+
} finally {
|
|
2529
|
+
_iterator19.f();
|
|
2530
|
+
}
|
|
2531
|
+
}
|
|
2532
|
+
}
|
|
2533
|
+
updatedList[adjustedMatchIndex] = mergedOrder;
|
|
2534
|
+
existingProductsHaveStableIdentity[adjustedMatchIndex] = mergedProductsHaveStableIdentity;
|
|
2535
|
+
if (membershipChange) {
|
|
2536
|
+
remoteProductMembershipChanges.push(membershipChange);
|
|
2537
|
+
mergedStorageKey = this.getOrderStorageKey(mergedOrder);
|
|
2538
|
+
if (mergedStorageKey) forceWriteStorageKeys.add(mergedStorageKey);
|
|
2539
|
+
}
|
|
1834
2540
|
// 合并后身份字段可能新增(如挂单拿到 order_id),同步登记到索引,
|
|
1835
2541
|
// 供同批后续 fresh 命中同一槽位,避免重复插入
|
|
1836
|
-
this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder,
|
|
2542
|
+
this.registerOrderIdentityKeys(identityKeyToIndex, mergedOrder, adjustedMatchIndex);
|
|
1837
2543
|
patchedOrders.push(mergedOrder);
|
|
1838
2544
|
if (mergeKey) mergeActions[mergeKey] = 'update';
|
|
1839
|
-
return
|
|
1840
|
-
case
|
|
2545
|
+
return _context19.abrupt("continue", 94);
|
|
2546
|
+
case 88:
|
|
1841
2547
|
insertIndex = updatedList.length;
|
|
1842
2548
|
updatedList.push(fresh);
|
|
2549
|
+
existingProductsHaveStableIdentity.push(fresh.order_id !== undefined && fresh.order_id !== null && incomingProductsHaveStableIdentity.get(this.getIdKey(fresh.order_id)) !== false);
|
|
1843
2550
|
this.registerOrderIdentityKeys(identityKeyToIndex, fresh, insertIndex);
|
|
1844
2551
|
patchedOrders.push(fresh);
|
|
1845
2552
|
if (mergeKey) mergeActions[mergeKey] = 'insert';
|
|
1846
|
-
case
|
|
1847
|
-
|
|
2553
|
+
case 94:
|
|
2554
|
+
_context19.next = 39;
|
|
1848
2555
|
break;
|
|
1849
|
-
case
|
|
1850
|
-
|
|
2556
|
+
case 96:
|
|
2557
|
+
_context19.next = 101;
|
|
1851
2558
|
break;
|
|
1852
|
-
case
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
case
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
return
|
|
1860
|
-
case
|
|
2559
|
+
case 98:
|
|
2560
|
+
_context19.prev = 98;
|
|
2561
|
+
_context19.t2 = _context19["catch"](37);
|
|
2562
|
+
_iterator16.e(_context19.t2);
|
|
2563
|
+
case 101:
|
|
2564
|
+
_context19.prev = 101;
|
|
2565
|
+
_iterator16.f();
|
|
2566
|
+
return _context19.finish(101);
|
|
2567
|
+
case 104:
|
|
1861
2568
|
insertCount = Object.values(mergeActions).filter(function (v) {
|
|
1862
2569
|
return v === 'insert';
|
|
1863
2570
|
}).length;
|
|
@@ -1873,24 +2580,27 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1873
2580
|
// 仅在自检开关开启时做一次兜底校验。
|
|
1874
2581
|
this.store.list = this.runOrderStoreSelfCheck(updatedList, "".concat(source, ".store"));
|
|
1875
2582
|
this.syncOrdersMap();
|
|
1876
|
-
|
|
1877
|
-
return this.patchOrdersInSQLite(patchedOrders, source, mergeActions);
|
|
1878
|
-
case
|
|
2583
|
+
_context19.next = 111;
|
|
2584
|
+
return this.patchOrdersInSQLite(patchedOrders, source, mergeActions, {}, forceWriteStorageKeys);
|
|
2585
|
+
case 111:
|
|
1879
2586
|
this.logInfo('mergeOrdersToStore-结束', {
|
|
1880
2587
|
uniqueFreshCount: uniqueFreshCount,
|
|
1881
2588
|
storeOrderCountAfter: this.store.list.length,
|
|
1882
2589
|
insertCount: insertCount,
|
|
1883
2590
|
updateCount: updateCount
|
|
1884
2591
|
});
|
|
1885
|
-
|
|
2592
|
+
_context19.next = 114;
|
|
2593
|
+
return this.emitRemoteProductMembershipChanges(remoteProductMembershipChanges);
|
|
2594
|
+
case 114:
|
|
2595
|
+
_context19.next = 116;
|
|
1886
2596
|
return this.emitOrdersChanged(patchedOrders, source);
|
|
1887
|
-
case
|
|
2597
|
+
case 116:
|
|
1888
2598
|
case "end":
|
|
1889
|
-
return
|
|
2599
|
+
return _context19.stop();
|
|
1890
2600
|
}
|
|
1891
|
-
},
|
|
2601
|
+
}, _callee19, this, [[6, 20, 23, 26], [37, 98, 101, 104], [62, 74, 77, 80]]);
|
|
1892
2602
|
}));
|
|
1893
|
-
function mergeOrdersToStore(
|
|
2603
|
+
function mergeOrdersToStore(_x13, _x14) {
|
|
1894
2604
|
return _mergeOrdersToStore.apply(this, arguments);
|
|
1895
2605
|
}
|
|
1896
2606
|
return mergeOrdersToStore;
|
|
@@ -1907,19 +2617,19 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1907
2617
|
key: "lookupOrderIndexByIdentityKeys",
|
|
1908
2618
|
value: function lookupOrderIndexByIdentityKeys(identityKeyToIndex, identityKeys) {
|
|
1909
2619
|
var matchIndex = -1;
|
|
1910
|
-
var
|
|
1911
|
-
|
|
2620
|
+
var _iterator20 = _createForOfIteratorHelper(identityKeys),
|
|
2621
|
+
_step20;
|
|
1912
2622
|
try {
|
|
1913
|
-
for (
|
|
1914
|
-
var key =
|
|
2623
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
2624
|
+
var key = _step20.value;
|
|
1915
2625
|
var index = identityKeyToIndex.get(key);
|
|
1916
2626
|
if (index === undefined) continue;
|
|
1917
2627
|
if (matchIndex < 0 || index < matchIndex) matchIndex = index;
|
|
1918
2628
|
}
|
|
1919
2629
|
} catch (err) {
|
|
1920
|
-
|
|
2630
|
+
_iterator20.e(err);
|
|
1921
2631
|
} finally {
|
|
1922
|
-
|
|
2632
|
+
_iterator20.f();
|
|
1923
2633
|
}
|
|
1924
2634
|
return matchIndex;
|
|
1925
2635
|
}
|
|
@@ -1928,6 +2638,92 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1928
2638
|
value: function isRemoteEchoMergeSource(source) {
|
|
1929
2639
|
return source === 'pubsub.bodyUpsert' || source === 'pubsub.httpRefresh';
|
|
1930
2640
|
}
|
|
2641
|
+
}, {
|
|
2642
|
+
key: "getProductMembershipKey",
|
|
2643
|
+
value: function getProductMembershipKey(product) {
|
|
2644
|
+
var persistentId = getOrderCollectionPersistentId('product', product);
|
|
2645
|
+
if (persistentId) return "order_detail_id:".concat(persistentId);
|
|
2646
|
+
var uid = getOrderCollectionUid('product', product);
|
|
2647
|
+
return uid ? "unique_identification_number:".concat(uid) : '';
|
|
2648
|
+
}
|
|
2649
|
+
}, {
|
|
2650
|
+
key: "doProductsHaveStableMembershipIdentity",
|
|
2651
|
+
value: function doProductsHaveStableMembershipIdentity(products) {
|
|
2652
|
+
if (!Array.isArray(products)) return true;
|
|
2653
|
+
return products.every(function (product) {
|
|
2654
|
+
return Boolean(getOrderCollectionPersistentId('product', product) || getOrderCollectionUid('product', product));
|
|
2655
|
+
});
|
|
2656
|
+
}
|
|
2657
|
+
|
|
2658
|
+
/**
|
|
2659
|
+
* 冲突提示关注逻辑商品行,而不是服务端 checkout 过程中可能被重建的 detail 记录。
|
|
2660
|
+
* 通用集合合并仍以 order_detail_id 为事实主键;这里只允许相同稳定 UID 跨 detail id 对齐,
|
|
2661
|
+
* 避免本机 checkout 回声被误判成“一删一增”。
|
|
2662
|
+
*/
|
|
2663
|
+
}, {
|
|
2664
|
+
key: "isSameProductMembershipItem",
|
|
2665
|
+
value: function isSameProductMembershipItem(left, right) {
|
|
2666
|
+
if (isSameOrderCollectionItem('product', left, right)) return true;
|
|
2667
|
+
var leftUid = getOrderCollectionUid('product', left);
|
|
2668
|
+
var rightUid = getOrderCollectionUid('product', right);
|
|
2669
|
+
return Boolean(leftUid && rightUid && leftUid === rightUid);
|
|
2670
|
+
}
|
|
2671
|
+
|
|
2672
|
+
/**
|
|
2673
|
+
* 对比合并前后的商品成员集合。商品字段修改与数组重排不会产生 diff。
|
|
2674
|
+
*/
|
|
2675
|
+
}, {
|
|
2676
|
+
key: "getRemoteProductMembershipChange",
|
|
2677
|
+
value: function getRemoteProductMembershipChange(existingOrder, mergedOrder, source) {
|
|
2678
|
+
var _this17 = this,
|
|
2679
|
+
_mergedOrder$order_id;
|
|
2680
|
+
if (!this.isRemoteEchoMergeSource(source)) return null;
|
|
2681
|
+
var previousProducts = Array.isArray(existingOrder.products) ? existingOrder.products : [];
|
|
2682
|
+
var currentProducts = Array.isArray(mergedOrder.products) ? mergedOrder.products : [];
|
|
2683
|
+
var unmatchedCurrentIndexes = new Set(currentProducts.map(function (_, index) {
|
|
2684
|
+
return index;
|
|
2685
|
+
}));
|
|
2686
|
+
var removedProductKeys = [];
|
|
2687
|
+
var _iterator21 = _createForOfIteratorHelper(previousProducts),
|
|
2688
|
+
_step21;
|
|
2689
|
+
try {
|
|
2690
|
+
var _loop2 = function _loop2() {
|
|
2691
|
+
var previousProduct = _step21.value;
|
|
2692
|
+
var matchedIndex = currentProducts.findIndex(function (currentProduct, index) {
|
|
2693
|
+
return unmatchedCurrentIndexes.has(index) && _this17.isSameProductMembershipItem(previousProduct, currentProduct);
|
|
2694
|
+
});
|
|
2695
|
+
if (matchedIndex >= 0) {
|
|
2696
|
+
unmatchedCurrentIndexes.delete(matchedIndex);
|
|
2697
|
+
return 1; // continue
|
|
2698
|
+
}
|
|
2699
|
+
var productKey = _this17.getProductMembershipKey(previousProduct);
|
|
2700
|
+
if (productKey) removedProductKeys.push(productKey);
|
|
2701
|
+
};
|
|
2702
|
+
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
2703
|
+
if (_loop2()) continue;
|
|
2704
|
+
}
|
|
2705
|
+
} catch (err) {
|
|
2706
|
+
_iterator21.e(err);
|
|
2707
|
+
} finally {
|
|
2708
|
+
_iterator21.f();
|
|
2709
|
+
}
|
|
2710
|
+
var addedProductKeys = _toConsumableArray(unmatchedCurrentIndexes).map(function (index) {
|
|
2711
|
+
return _this17.getProductMembershipKey(currentProducts[index]);
|
|
2712
|
+
}).filter(Boolean);
|
|
2713
|
+
if (addedProductKeys.length === 0 && removedProductKeys.length === 0) {
|
|
2714
|
+
return null;
|
|
2715
|
+
}
|
|
2716
|
+
var orderId = (_mergedOrder$order_id = mergedOrder.order_id) !== null && _mergedOrder$order_id !== void 0 ? _mergedOrder$order_id : existingOrder.order_id;
|
|
2717
|
+
if (orderId === undefined || orderId === null) return null;
|
|
2718
|
+
return {
|
|
2719
|
+
order_id: orderId,
|
|
2720
|
+
source: source,
|
|
2721
|
+
added_product_keys: addedProductKeys,
|
|
2722
|
+
removed_product_keys: removedProductKeys,
|
|
2723
|
+
previous_product_count: previousProducts.length,
|
|
2724
|
+
current_product_count: currentProducts.length
|
|
2725
|
+
};
|
|
2726
|
+
}
|
|
1931
2727
|
|
|
1932
2728
|
/**
|
|
1933
2729
|
* 将订单的全部身份键登记到索引并指向其在列表中的下标。
|
|
@@ -1940,17 +2736,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1940
2736
|
key: "registerOrderIdentityKeys",
|
|
1941
2737
|
value: function registerOrderIdentityKeys(identityKeyToIndex, order, index) {
|
|
1942
2738
|
var identityKeys = this.getOrderIdentityMatchKeys(order);
|
|
1943
|
-
var
|
|
1944
|
-
|
|
2739
|
+
var _iterator22 = _createForOfIteratorHelper(identityKeys),
|
|
2740
|
+
_step22;
|
|
1945
2741
|
try {
|
|
1946
|
-
for (
|
|
1947
|
-
var key =
|
|
2742
|
+
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
2743
|
+
var key = _step22.value;
|
|
1948
2744
|
identityKeyToIndex.set(key, index);
|
|
1949
2745
|
}
|
|
1950
2746
|
} catch (err) {
|
|
1951
|
-
|
|
2747
|
+
_iterator22.e(err);
|
|
1952
2748
|
} finally {
|
|
1953
|
-
|
|
2749
|
+
_iterator22.f();
|
|
1954
2750
|
}
|
|
1955
2751
|
}
|
|
1956
2752
|
|
|
@@ -2005,17 +2801,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2005
2801
|
key: "uniqueOrderIds",
|
|
2006
2802
|
value: function uniqueOrderIds(ids) {
|
|
2007
2803
|
var idMap = new Map();
|
|
2008
|
-
var
|
|
2009
|
-
|
|
2804
|
+
var _iterator23 = _createForOfIteratorHelper(ids),
|
|
2805
|
+
_step23;
|
|
2010
2806
|
try {
|
|
2011
|
-
for (
|
|
2012
|
-
var id =
|
|
2807
|
+
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
2808
|
+
var id = _step23.value;
|
|
2013
2809
|
idMap.set(this.getIdKey(id), id);
|
|
2014
2810
|
}
|
|
2015
2811
|
} catch (err) {
|
|
2016
|
-
|
|
2812
|
+
_iterator23.e(err);
|
|
2017
2813
|
} finally {
|
|
2018
|
-
|
|
2814
|
+
_iterator23.f();
|
|
2019
2815
|
}
|
|
2020
2816
|
return _toConsumableArray(idMap.values());
|
|
2021
2817
|
}
|
|
@@ -2027,12 +2823,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2027
2823
|
}, {
|
|
2028
2824
|
key: "isOrderLookupMatch",
|
|
2029
2825
|
value: function isOrderLookupMatch(order, lookupKey) {
|
|
2030
|
-
var
|
|
2826
|
+
var _this18 = this;
|
|
2031
2827
|
if (!order || !lookupKey) return false;
|
|
2032
2828
|
var candidates = [order.order_id, order.external_sale_number, order.order_number, order.shop_order_number, order.shop_full_order_number];
|
|
2033
2829
|
return candidates.some(function (value) {
|
|
2034
2830
|
if (value === undefined || value === null || value === '') return false;
|
|
2035
|
-
return
|
|
2831
|
+
return _this18.getIdKey(value) === lookupKey;
|
|
2036
2832
|
});
|
|
2037
2833
|
}
|
|
2038
2834
|
|
|
@@ -2075,10 +2871,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2075
2871
|
}, {
|
|
2076
2872
|
key: "findOrderIndexByIdentity",
|
|
2077
2873
|
value: function findOrderIndexByIdentity(orders, target) {
|
|
2078
|
-
var
|
|
2874
|
+
var _this19 = this;
|
|
2079
2875
|
if (this.getOrderIdentityMatchKeys(target).length === 0) return -1;
|
|
2080
2876
|
return orders.findIndex(function (order) {
|
|
2081
|
-
return
|
|
2877
|
+
return _this19.doOrdersShareIdentity(order, target);
|
|
2082
2878
|
});
|
|
2083
2879
|
}
|
|
2084
2880
|
}, {
|
|
@@ -2102,6 +2898,121 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2102
2898
|
if (rightScore >= leftScore) return right;
|
|
2103
2899
|
return left;
|
|
2104
2900
|
}
|
|
2901
|
+
}, {
|
|
2902
|
+
key: "getProductIdentityKeys",
|
|
2903
|
+
value: function getProductIdentityKeys(product) {
|
|
2904
|
+
var _record$metadata;
|
|
2905
|
+
var record = product;
|
|
2906
|
+
if (!record) return [];
|
|
2907
|
+
var keys = [];
|
|
2908
|
+
var metadataUid = (_record$metadata = record.metadata) === null || _record$metadata === void 0 ? void 0 : _record$metadata.unique_identification_number;
|
|
2909
|
+
if (!this.isBlankIdentityValue(metadataUid)) keys.push("uid:".concat(String(metadataUid)));
|
|
2910
|
+
var topLevelUid = record.unique_identification_number;
|
|
2911
|
+
if (!this.isBlankIdentityValue(topLevelUid)) keys.push("uid:".concat(String(topLevelUid)));
|
|
2912
|
+
var orderDetailId = record.order_detail_id;
|
|
2913
|
+
if (!this.isBlankIdentityValue(orderDetailId)) keys.push("detail:".concat(String(orderDetailId)));
|
|
2914
|
+
var bookingUid = record.booking_uid;
|
|
2915
|
+
if (!this.isBlankIdentityValue(bookingUid)) keys.push("booking:".concat(String(bookingUid)));
|
|
2916
|
+
return keys;
|
|
2917
|
+
}
|
|
2918
|
+
}, {
|
|
2919
|
+
key: "mergeOrderProductLists",
|
|
2920
|
+
value: function mergeOrderProductLists(preferred, secondary) {
|
|
2921
|
+
var preferredList = Array.isArray(preferred) ? preferred : [];
|
|
2922
|
+
var secondaryList = Array.isArray(secondary) ? secondary : [];
|
|
2923
|
+
if (secondaryList.length === 0) return preferredList;
|
|
2924
|
+
if (preferredList.length === 0) return secondaryList;
|
|
2925
|
+
var seenKeys = new Set();
|
|
2926
|
+
var _iterator24 = _createForOfIteratorHelper(preferredList),
|
|
2927
|
+
_step24;
|
|
2928
|
+
try {
|
|
2929
|
+
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
2930
|
+
var item = _step24.value;
|
|
2931
|
+
var keys = this.getProductIdentityKeys(item);
|
|
2932
|
+
var _iterator26 = _createForOfIteratorHelper(keys),
|
|
2933
|
+
_step26;
|
|
2934
|
+
try {
|
|
2935
|
+
for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
|
|
2936
|
+
var key = _step26.value;
|
|
2937
|
+
seenKeys.add(key);
|
|
2938
|
+
}
|
|
2939
|
+
} catch (err) {
|
|
2940
|
+
_iterator26.e(err);
|
|
2941
|
+
} finally {
|
|
2942
|
+
_iterator26.f();
|
|
2943
|
+
}
|
|
2944
|
+
}
|
|
2945
|
+
} catch (err) {
|
|
2946
|
+
_iterator24.e(err);
|
|
2947
|
+
} finally {
|
|
2948
|
+
_iterator24.f();
|
|
2949
|
+
}
|
|
2950
|
+
var result = _toConsumableArray(preferredList);
|
|
2951
|
+
var _iterator25 = _createForOfIteratorHelper(secondaryList),
|
|
2952
|
+
_step25;
|
|
2953
|
+
try {
|
|
2954
|
+
for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
|
|
2955
|
+
var _item = _step25.value;
|
|
2956
|
+
var _keys = this.getProductIdentityKeys(_item);
|
|
2957
|
+
if (_keys.length === 0 || _keys.some(function (key) {
|
|
2958
|
+
return seenKeys.has(key);
|
|
2959
|
+
})) continue;
|
|
2960
|
+
var _iterator27 = _createForOfIteratorHelper(_keys),
|
|
2961
|
+
_step27;
|
|
2962
|
+
try {
|
|
2963
|
+
for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
|
|
2964
|
+
var _key3 = _step27.value;
|
|
2965
|
+
seenKeys.add(_key3);
|
|
2966
|
+
}
|
|
2967
|
+
} catch (err) {
|
|
2968
|
+
_iterator27.e(err);
|
|
2969
|
+
} finally {
|
|
2970
|
+
_iterator27.f();
|
|
2971
|
+
}
|
|
2972
|
+
result.push(cloneDeep(_item));
|
|
2973
|
+
}
|
|
2974
|
+
} catch (err) {
|
|
2975
|
+
_iterator25.e(err);
|
|
2976
|
+
} finally {
|
|
2977
|
+
_iterator25.f();
|
|
2978
|
+
}
|
|
2979
|
+
return result;
|
|
2980
|
+
}
|
|
2981
|
+
}, {
|
|
2982
|
+
key: "mergeOrderPaymentLists",
|
|
2983
|
+
value: function mergeOrderPaymentLists(existing, incoming) {
|
|
2984
|
+
var existingList = Array.isArray(existing) ? existing : [];
|
|
2985
|
+
var incomingList = Array.isArray(incoming) ? incoming : [];
|
|
2986
|
+
if (incomingList.length === 0) return cloneDeep(existingList);
|
|
2987
|
+
return mergeOrderPaymentListsByIdentity(existingList, incomingList);
|
|
2988
|
+
}
|
|
2989
|
+
}, {
|
|
2990
|
+
key: "getIdentifiedPendingPayments",
|
|
2991
|
+
value: function getIdentifiedPendingPayments(order) {
|
|
2992
|
+
var payments = Array.isArray(order === null || order === void 0 ? void 0 : order.payments) ? order.payments : [];
|
|
2993
|
+
return payments.filter(function (payment) {
|
|
2994
|
+
return isIdentifiedPendingOrderPayment(payment);
|
|
2995
|
+
});
|
|
2996
|
+
}
|
|
2997
|
+
}, {
|
|
2998
|
+
key: "shouldProtectLocalOrderFromRemoteSnapshot",
|
|
2999
|
+
value: function shouldProtectLocalOrderFromRemoteSnapshot(order) {
|
|
3000
|
+
return this.isPendingSyncOrder(order) || this.isDraftOrder(order) || this.getIdentifiedPendingPayments(order).length > 0;
|
|
3001
|
+
}
|
|
3002
|
+
}, {
|
|
3003
|
+
key: "getUnmatchedIdentifiedPendingPayments",
|
|
3004
|
+
value: function getUnmatchedIdentifiedPendingPayments(existing, incoming) {
|
|
3005
|
+
var existingPayments = Array.isArray(existing) ? existing : [];
|
|
3006
|
+
var incomingPayments = Array.isArray(incoming) ? incoming : [];
|
|
3007
|
+
var incomingIdentityKeys = new Set(incomingPayments.flatMap(function (payment) {
|
|
3008
|
+
return getOrderPaymentIdentityKeys(payment);
|
|
3009
|
+
}));
|
|
3010
|
+
return existingPayments.filter(function (payment) {
|
|
3011
|
+
return isIdentifiedPendingOrderPayment(payment) && !getOrderPaymentIdentityKeys(payment).some(function (key) {
|
|
3012
|
+
return incomingIdentityKeys.has(key);
|
|
3013
|
+
});
|
|
3014
|
+
});
|
|
3015
|
+
}
|
|
2105
3016
|
}, {
|
|
2106
3017
|
key: "mergeOrderRecords",
|
|
2107
3018
|
value: function mergeOrderRecords(existing, incoming) {
|
|
@@ -2109,7 +3020,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2109
3020
|
var secondary = preferred === existing ? incoming : existing;
|
|
2110
3021
|
var merged = _objectSpread(_objectSpread({}, secondary), preferred);
|
|
2111
3022
|
var fieldsToPreserve = ['order_id', 'external_sale_number', 'order_number', 'shop_order_number', 'shop_full_order_number'];
|
|
2112
|
-
var incomingPatchFields = ['payment_status', 'status', 'shipping_status', 'updated_at', 'shop_discount', 'summary', 'note', 'customer_id', 'customer_name', 'customer', 'holder', 'contacts_info', 'phone', 'email', 'relation_forms'];
|
|
3023
|
+
var incomingPatchFields = ['payment_status', 'status', 'shipping_status', 'updated_at', 'shop_discount', 'summary', 'note', 'customer_id', 'customer_name', 'customer', 'holder', 'contacts_info', 'phone', 'email', 'relation_forms', 'is_draft_order'];
|
|
2113
3024
|
var mergedRecord = merged;
|
|
2114
3025
|
var preferredRecord = preferred;
|
|
2115
3026
|
var secondaryRecord = secondary;
|
|
@@ -2139,7 +3050,23 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2139
3050
|
for (var _i6 = 0, _ORDER_AUTHORITATIVE_2 = ORDER_AUTHORITATIVE_COLLECTION_FIELDS; _i6 < _ORDER_AUTHORITATIVE_2.length; _i6++) {
|
|
2140
3051
|
var _field2 = _ORDER_AUTHORITATIVE_2[_i6];
|
|
2141
3052
|
if (Array.isArray(incomingRecord[_field2])) {
|
|
2142
|
-
|
|
3053
|
+
if (_field2 === 'payments') {
|
|
3054
|
+
var preservedPending = this.getUnmatchedIdentifiedPendingPayments(existingRecord[_field2], incomingRecord[_field2]);
|
|
3055
|
+
if (preservedPending.length > 0) {
|
|
3056
|
+
var _ref5, _existing$order_id, _ref6, _existingRecord$exter;
|
|
3057
|
+
this.logInfo('mergeOrderRecords-保留本地 pending 支付项', {
|
|
3058
|
+
order_id: (_ref5 = (_existing$order_id = existing.order_id) !== null && _existing$order_id !== void 0 ? _existing$order_id : incoming.order_id) !== null && _ref5 !== void 0 ? _ref5 : null,
|
|
3059
|
+
external_sale_number: (_ref6 = (_existingRecord$exter = existingRecord.external_sale_number) !== null && _existingRecord$exter !== void 0 ? _existingRecord$exter : incomingRecord.external_sale_number) !== null && _ref6 !== void 0 ? _ref6 : null,
|
|
3060
|
+
preserved_pending_count: preservedPending.length,
|
|
3061
|
+
preserved_payment_identities: preservedPending.map(function (payment) {
|
|
3062
|
+
return getOrderPaymentIdentityKeys(payment);
|
|
3063
|
+
})
|
|
3064
|
+
});
|
|
3065
|
+
}
|
|
3066
|
+
}
|
|
3067
|
+
mergedRecord[_field2] = this.mergeAuthoritativeOrderCollection(_field2, existingRecord[_field2], incomingRecord[_field2], childUidRemaps, {
|
|
3068
|
+
preserveIdentifiedPendingPayments: _field2 === 'payments'
|
|
3069
|
+
});
|
|
2143
3070
|
continue;
|
|
2144
3071
|
}
|
|
2145
3072
|
if (Object.prototype.hasOwnProperty.call(existingRecord, _field2)) {
|
|
@@ -2157,50 +3084,51 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2157
3084
|
key: "summarizeDuplicateOrders",
|
|
2158
3085
|
value: function summarizeDuplicateOrders(orders) {
|
|
2159
3086
|
var groups = new Map();
|
|
2160
|
-
var
|
|
2161
|
-
|
|
3087
|
+
var _iterator28 = _createForOfIteratorHelper(orders),
|
|
3088
|
+
_step28;
|
|
2162
3089
|
try {
|
|
2163
|
-
for (
|
|
2164
|
-
var order =
|
|
2165
|
-
var
|
|
2166
|
-
|
|
3090
|
+
for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
|
|
3091
|
+
var order = _step28.value;
|
|
3092
|
+
var _iterator29 = _createForOfIteratorHelper(this.getOrderIdentityMatchKeys(order)),
|
|
3093
|
+
_step29;
|
|
2167
3094
|
try {
|
|
2168
|
-
for (
|
|
2169
|
-
var key =
|
|
3095
|
+
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
3096
|
+
var key = _step29.value;
|
|
2170
3097
|
var group = groups.get(key) || [];
|
|
2171
3098
|
group.push(order);
|
|
2172
3099
|
groups.set(key, group);
|
|
2173
3100
|
}
|
|
2174
3101
|
} catch (err) {
|
|
2175
|
-
|
|
3102
|
+
_iterator29.e(err);
|
|
2176
3103
|
} finally {
|
|
2177
|
-
|
|
3104
|
+
_iterator29.f();
|
|
2178
3105
|
}
|
|
2179
3106
|
}
|
|
2180
3107
|
} catch (err) {
|
|
2181
|
-
|
|
3108
|
+
_iterator28.e(err);
|
|
2182
3109
|
} finally {
|
|
2183
|
-
|
|
3110
|
+
_iterator28.f();
|
|
2184
3111
|
}
|
|
2185
|
-
return _toConsumableArray(groups.entries()).filter(function (
|
|
2186
|
-
var
|
|
2187
|
-
group =
|
|
3112
|
+
return _toConsumableArray(groups.entries()).filter(function (_ref7) {
|
|
3113
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
3114
|
+
group = _ref8[1];
|
|
2188
3115
|
return group.length > 1;
|
|
2189
|
-
}).slice(0, 20).map(function (
|
|
2190
|
-
var
|
|
2191
|
-
key =
|
|
2192
|
-
group =
|
|
3116
|
+
}).slice(0, 20).map(function (_ref9) {
|
|
3117
|
+
var _ref10 = _slicedToArray(_ref9, 2),
|
|
3118
|
+
key = _ref10[0],
|
|
3119
|
+
group = _ref10[1];
|
|
2193
3120
|
return {
|
|
2194
3121
|
key: key,
|
|
2195
3122
|
count: group.length,
|
|
2196
3123
|
orders: group.map(function (order) {
|
|
2197
|
-
var _order$
|
|
3124
|
+
var _order$order_id4, _external_sale_number4, _shop_order_number, _shop_full_order_numb, _order$need_sync, _order$is_draft_order;
|
|
2198
3125
|
return {
|
|
2199
|
-
order_id: (_order$
|
|
2200
|
-
external_sale_number: (
|
|
3126
|
+
order_id: (_order$order_id4 = order.order_id) !== null && _order$order_id4 !== void 0 ? _order$order_id4 : null,
|
|
3127
|
+
external_sale_number: (_external_sale_number4 = order.external_sale_number) !== null && _external_sale_number4 !== void 0 ? _external_sale_number4 : null,
|
|
2201
3128
|
shop_order_number: (_shop_order_number = order.shop_order_number) !== null && _shop_order_number !== void 0 ? _shop_order_number : null,
|
|
2202
3129
|
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,
|
|
2203
|
-
need_sync: (_order$need_sync = order.need_sync) !== null && _order$need_sync !== void 0 ? _order$need_sync : null
|
|
3130
|
+
need_sync: (_order$need_sync = order.need_sync) !== null && _order$need_sync !== void 0 ? _order$need_sync : null,
|
|
3131
|
+
is_draft_order: (_order$is_draft_order = order.is_draft_order) !== null && _order$is_draft_order !== void 0 ? _order$is_draft_order : null
|
|
2204
3132
|
};
|
|
2205
3133
|
})
|
|
2206
3134
|
};
|
|
@@ -2222,11 +3150,11 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2222
3150
|
value: function compactOrderListByIdentity(orders, source) {
|
|
2223
3151
|
var list = [];
|
|
2224
3152
|
var removedCount = 0;
|
|
2225
|
-
var
|
|
2226
|
-
|
|
3153
|
+
var _iterator30 = _createForOfIteratorHelper(orders),
|
|
3154
|
+
_step30;
|
|
2227
3155
|
try {
|
|
2228
|
-
for (
|
|
2229
|
-
var order =
|
|
3156
|
+
for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
|
|
3157
|
+
var order = _step30.value;
|
|
2230
3158
|
var normalizedOrder = this.normalizeOrderCollectionsForIngress(order, "".concat(source, ".order"));
|
|
2231
3159
|
var matchIndex = this.findOrderIndexByIdentity(list, normalizedOrder);
|
|
2232
3160
|
if (matchIndex < 0) {
|
|
@@ -2237,9 +3165,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2237
3165
|
removedCount += 1;
|
|
2238
3166
|
}
|
|
2239
3167
|
} catch (err) {
|
|
2240
|
-
|
|
3168
|
+
_iterator30.e(err);
|
|
2241
3169
|
} finally {
|
|
2242
|
-
|
|
3170
|
+
_iterator30.f();
|
|
2243
3171
|
}
|
|
2244
3172
|
if (removedCount > 0) {
|
|
2245
3173
|
this.logWarning('订单列表重复项已压缩', {
|
|
@@ -2337,35 +3265,35 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2337
3265
|
}, {
|
|
2338
3266
|
key: "loadOrdersFromSQLite",
|
|
2339
3267
|
value: function () {
|
|
2340
|
-
var _loadOrdersFromSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2341
|
-
var
|
|
3268
|
+
var _loadOrdersFromSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {
|
|
3269
|
+
var _this20 = this;
|
|
2342
3270
|
var orders;
|
|
2343
|
-
return _regeneratorRuntime().wrap(function
|
|
2344
|
-
while (1) switch (
|
|
3271
|
+
return _regeneratorRuntime().wrap(function _callee20$(_context20) {
|
|
3272
|
+
while (1) switch (_context20.prev = _context20.next) {
|
|
2345
3273
|
case 0:
|
|
2346
3274
|
if (this.dbManager) {
|
|
2347
|
-
|
|
3275
|
+
_context20.next = 2;
|
|
2348
3276
|
break;
|
|
2349
3277
|
}
|
|
2350
|
-
return
|
|
3278
|
+
return _context20.abrupt("return", []);
|
|
2351
3279
|
case 2:
|
|
2352
|
-
|
|
2353
|
-
|
|
3280
|
+
_context20.prev = 2;
|
|
3281
|
+
_context20.next = 5;
|
|
2354
3282
|
return this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
2355
3283
|
case 5:
|
|
2356
|
-
orders =
|
|
2357
|
-
return
|
|
2358
|
-
return
|
|
3284
|
+
orders = _context20.sent;
|
|
3285
|
+
return _context20.abrupt("return", (orders || []).map(function (order) {
|
|
3286
|
+
return _this20.normalizeOrderCollectionsForIngress(order, 'loadOrdersFromSQLite');
|
|
2359
3287
|
}));
|
|
2360
3288
|
case 9:
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
return
|
|
3289
|
+
_context20.prev = 9;
|
|
3290
|
+
_context20.t0 = _context20["catch"](2);
|
|
3291
|
+
return _context20.abrupt("return", []);
|
|
2364
3292
|
case 12:
|
|
2365
3293
|
case "end":
|
|
2366
|
-
return
|
|
3294
|
+
return _context20.stop();
|
|
2367
3295
|
}
|
|
2368
|
-
},
|
|
3296
|
+
}, _callee20, this, [[2, 9]]);
|
|
2369
3297
|
}));
|
|
2370
3298
|
function loadOrdersFromSQLite() {
|
|
2371
3299
|
return _loadOrdersFromSQLite.apply(this, arguments);
|
|
@@ -2377,41 +3305,71 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2377
3305
|
value: function isPendingSyncOrder(order) {
|
|
2378
3306
|
return Number(order === null || order === void 0 ? void 0 : order.need_sync) === 1;
|
|
2379
3307
|
}
|
|
3308
|
+
}, {
|
|
3309
|
+
key: "isDraftOrder",
|
|
3310
|
+
value: function isDraftOrder(order) {
|
|
3311
|
+
return Number(order === null || order === void 0 ? void 0 : order.is_draft_order) === 1;
|
|
3312
|
+
}
|
|
3313
|
+
}, {
|
|
3314
|
+
key: "shouldProtectDraftOrderFromIncoming",
|
|
3315
|
+
value: function shouldProtectDraftOrderFromIncoming(source) {
|
|
3316
|
+
return source !== 'checkoutSync';
|
|
3317
|
+
}
|
|
2380
3318
|
}, {
|
|
2381
3319
|
key: "normalizeRemoteSyncedOrder",
|
|
2382
3320
|
value: function normalizeRemoteSyncedOrder(order) {
|
|
2383
3321
|
var normalizedOrder = this.normalizeOrderCollectionsForIngress(order, 'normalizeRemoteSyncedOrder');
|
|
2384
|
-
if (this.isPendingSyncOrder(normalizedOrder)) return normalizedOrder
|
|
3322
|
+
if (this.isPendingSyncOrder(normalizedOrder)) return _objectSpread(_objectSpread({}, normalizedOrder), {}, {
|
|
3323
|
+
is_draft_order: 0
|
|
3324
|
+
});
|
|
2385
3325
|
return _objectSpread(_objectSpread({}, normalizedOrder), {}, {
|
|
2386
|
-
need_sync: 0
|
|
3326
|
+
need_sync: 0,
|
|
3327
|
+
is_draft_order: 0
|
|
2387
3328
|
});
|
|
2388
3329
|
}
|
|
3330
|
+
}, {
|
|
3331
|
+
key: "mergeRemoteIdentityIntoDraftOrder",
|
|
3332
|
+
value: function mergeRemoteIdentityIntoDraftOrder(draftOrder, remoteOrder) {
|
|
3333
|
+
var merged = _objectSpread({}, this.withoutSyntheticDraftOrderId(draftOrder));
|
|
3334
|
+
var remote = remoteOrder;
|
|
3335
|
+
for (var _i7 = 0, _arr = ['order_id', 'order_number', 'shop_order_number', 'shop_full_order_number']; _i7 < _arr.length; _i7++) {
|
|
3336
|
+
var field = _arr[_i7];
|
|
3337
|
+
if (this.isBlankIdentityValue(merged[field]) && !this.isBlankIdentityValue(remote[field])) {
|
|
3338
|
+
merged[field] = remote[field];
|
|
3339
|
+
}
|
|
3340
|
+
}
|
|
3341
|
+
return this.normalizeOrderCollectionsForIngress(merged, 'mergeRemoteIdentityIntoDraftOrder');
|
|
3342
|
+
}
|
|
2389
3343
|
}, {
|
|
2390
3344
|
key: "mergeRemoteSnapshotWithPendingOrders",
|
|
2391
3345
|
value: function mergeRemoteSnapshotWithPendingOrders(remoteOrders, existingOrders) {
|
|
2392
|
-
var
|
|
3346
|
+
var _this21 = this;
|
|
2393
3347
|
var merged = remoteOrders.map(function (order) {
|
|
2394
|
-
return
|
|
3348
|
+
return _this21.normalizeRemoteSyncedOrder(order);
|
|
2395
3349
|
});
|
|
2396
|
-
var
|
|
2397
|
-
|
|
3350
|
+
var _iterator31 = _createForOfIteratorHelper(existingOrders),
|
|
3351
|
+
_step31;
|
|
2398
3352
|
try {
|
|
2399
|
-
for (
|
|
2400
|
-
var rawOrder =
|
|
3353
|
+
for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
|
|
3354
|
+
var rawOrder = _step31.value;
|
|
2401
3355
|
var order = this.normalizeOrderCollectionsForIngress(rawOrder, 'mergeRemoteSnapshotWithPendingOrders.existingSQLite');
|
|
2402
|
-
if (!this.
|
|
3356
|
+
if (!this.shouldProtectLocalOrderFromRemoteSnapshot(order)) continue;
|
|
2403
3357
|
var matchIndex = this.findOrderIndexByIdentity(merged, order);
|
|
2404
3358
|
if (matchIndex >= 0) {
|
|
2405
|
-
|
|
3359
|
+
if (this.isDraftOrder(order)) {
|
|
3360
|
+
merged[matchIndex] = this.mergeRemoteIdentityIntoDraftOrder(order, merged[matchIndex]);
|
|
3361
|
+
} else {
|
|
3362
|
+
merged[matchIndex] = this.mergeOrderRecords(order, merged[matchIndex]);
|
|
3363
|
+
}
|
|
2406
3364
|
continue;
|
|
2407
3365
|
}
|
|
2408
3366
|
if (!this.getOrderStorageKey(order)) continue;
|
|
2409
3367
|
merged.push(order);
|
|
2410
3368
|
}
|
|
2411
3369
|
} catch (err) {
|
|
2412
|
-
|
|
3370
|
+
_iterator31.e(err);
|
|
2413
3371
|
} finally {
|
|
2414
|
-
|
|
3372
|
+
_iterator31.f();
|
|
2415
3373
|
}
|
|
2416
3374
|
return this.compactOrderListByIdentity(merged, 'mergeRemoteSnapshotWithPendingOrders').list;
|
|
2417
3375
|
}
|
|
@@ -2427,10 +3385,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2427
3385
|
}, {
|
|
2428
3386
|
key: "runInOrderSQLiteSaveQueue",
|
|
2429
3387
|
value: (function () {
|
|
2430
|
-
var _runInOrderSQLiteSaveQueue = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
3388
|
+
var _runInOrderSQLiteSaveQueue = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee21(task) {
|
|
2431
3389
|
var queuedTask;
|
|
2432
|
-
return _regeneratorRuntime().wrap(function
|
|
2433
|
-
while (1) switch (
|
|
3390
|
+
return _regeneratorRuntime().wrap(function _callee21$(_context21) {
|
|
3391
|
+
while (1) switch (_context21.prev = _context21.next) {
|
|
2434
3392
|
case 0:
|
|
2435
3393
|
queuedTask = this.orderSQLiteSaveQueue.then(task, task);
|
|
2436
3394
|
this.orderSQLiteSaveQueue = queuedTask.then(function () {
|
|
@@ -2438,14 +3396,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2438
3396
|
}, function () {
|
|
2439
3397
|
return undefined;
|
|
2440
3398
|
});
|
|
2441
|
-
return
|
|
3399
|
+
return _context21.abrupt("return", queuedTask);
|
|
2442
3400
|
case 3:
|
|
2443
3401
|
case "end":
|
|
2444
|
-
return
|
|
3402
|
+
return _context21.stop();
|
|
2445
3403
|
}
|
|
2446
|
-
},
|
|
3404
|
+
}, _callee21, this);
|
|
2447
3405
|
}));
|
|
2448
|
-
function runInOrderSQLiteSaveQueue(
|
|
3406
|
+
function runInOrderSQLiteSaveQueue(_x15) {
|
|
2449
3407
|
return _runInOrderSQLiteSaveQueue.apply(this, arguments);
|
|
2450
3408
|
}
|
|
2451
3409
|
return runInOrderSQLiteSaveQueue;
|
|
@@ -2460,146 +3418,176 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2460
3418
|
}, {
|
|
2461
3419
|
key: "patchOrdersInSQLite",
|
|
2462
3420
|
value: (function () {
|
|
2463
|
-
var _patchOrdersInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2464
|
-
var
|
|
3421
|
+
var _patchOrdersInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee23(orders, source) {
|
|
3422
|
+
var _this22 = this;
|
|
2465
3423
|
var mergeActions,
|
|
3424
|
+
options,
|
|
3425
|
+
forceWriteStorageKeys,
|
|
2466
3426
|
ordersSnapshot,
|
|
2467
3427
|
_this$filterRedundant2,
|
|
2468
3428
|
toWrite,
|
|
2469
3429
|
skipped,
|
|
2470
3430
|
compactedToWrite,
|
|
2471
|
-
|
|
2472
|
-
return _regeneratorRuntime().wrap(function
|
|
2473
|
-
while (1) switch (
|
|
3431
|
+
_args23 = arguments;
|
|
3432
|
+
return _regeneratorRuntime().wrap(function _callee23$(_context23) {
|
|
3433
|
+
while (1) switch (_context23.prev = _context23.next) {
|
|
2474
3434
|
case 0:
|
|
2475
|
-
mergeActions =
|
|
2476
|
-
|
|
2477
|
-
|
|
3435
|
+
mergeActions = _args23.length > 2 && _args23[2] !== undefined ? _args23[2] : {};
|
|
3436
|
+
options = _args23.length > 3 && _args23[3] !== undefined ? _args23[3] : {};
|
|
3437
|
+
forceWriteStorageKeys = _args23.length > 4 && _args23[4] !== undefined ? _args23[4] : new Set();
|
|
3438
|
+
if (!(orders.length === 0)) {
|
|
3439
|
+
_context23.next = 5;
|
|
2478
3440
|
break;
|
|
2479
3441
|
}
|
|
2480
|
-
return
|
|
2481
|
-
case
|
|
3442
|
+
return _context23.abrupt("return");
|
|
3443
|
+
case 5:
|
|
3444
|
+
if (this.dbManager) {
|
|
3445
|
+
_context23.next = 9;
|
|
3446
|
+
break;
|
|
3447
|
+
}
|
|
3448
|
+
if (!options.throwOnError) {
|
|
3449
|
+
_context23.next = 8;
|
|
3450
|
+
break;
|
|
3451
|
+
}
|
|
3452
|
+
throw new Error('订单 SQLite 数据库未初始化');
|
|
3453
|
+
case 8:
|
|
3454
|
+
return _context23.abrupt("return");
|
|
3455
|
+
case 9:
|
|
2482
3456
|
ordersSnapshot = cloneDeep(orders).map(function (order) {
|
|
2483
|
-
return
|
|
3457
|
+
return _this22.normalizeOrderCollectionsForIngress(order, "".concat(source, ".sqliteIngress"));
|
|
2484
3458
|
}).filter(function (order) {
|
|
2485
|
-
return
|
|
3459
|
+
return _this22.getOrderStorageKey(order);
|
|
2486
3460
|
});
|
|
2487
3461
|
if (!(ordersSnapshot.length === 0)) {
|
|
2488
|
-
|
|
3462
|
+
_context23.next = 12;
|
|
2489
3463
|
break;
|
|
2490
3464
|
}
|
|
2491
|
-
return
|
|
2492
|
-
case
|
|
2493
|
-
_this$filterRedundant2 = this.filterRedundantPatchOrders(source, ordersSnapshot, mergeActions), toWrite = _this$filterRedundant2.toWrite, skipped = _this$filterRedundant2.skipped;
|
|
3465
|
+
return _context23.abrupt("return");
|
|
3466
|
+
case 12:
|
|
3467
|
+
_this$filterRedundant2 = this.filterRedundantPatchOrders(source, ordersSnapshot, mergeActions, forceWriteStorageKeys), toWrite = _this$filterRedundant2.toWrite, skipped = _this$filterRedundant2.skipped;
|
|
2494
3468
|
if (!(toWrite.length === 0)) {
|
|
2495
|
-
|
|
3469
|
+
_context23.next = 15;
|
|
2496
3470
|
break;
|
|
2497
3471
|
}
|
|
2498
|
-
return
|
|
2499
|
-
case
|
|
3472
|
+
return _context23.abrupt("return");
|
|
3473
|
+
case 15:
|
|
2500
3474
|
compactedToWrite = this.compactOrderListByIdentity(toWrite, "".concat(source, ".sqlitePatch")).list;
|
|
2501
3475
|
if (!(compactedToWrite.length === 0)) {
|
|
2502
|
-
|
|
3476
|
+
_context23.next = 18;
|
|
2503
3477
|
break;
|
|
2504
3478
|
}
|
|
2505
|
-
return
|
|
2506
|
-
case
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2510
|
-
var writeMethod,
|
|
2511
|
-
return _regeneratorRuntime().wrap(function
|
|
2512
|
-
while (1) switch (
|
|
3479
|
+
return _context23.abrupt("return");
|
|
3480
|
+
case 18:
|
|
3481
|
+
_context23.prev = 18;
|
|
3482
|
+
_context23.next = 21;
|
|
3483
|
+
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {
|
|
3484
|
+
var writeMethod, _iterator32, _step32, order;
|
|
3485
|
+
return _regeneratorRuntime().wrap(function _callee22$(_context22) {
|
|
3486
|
+
while (1) switch (_context22.prev = _context22.next) {
|
|
2513
3487
|
case 0:
|
|
2514
3488
|
writeMethod = 'none';
|
|
2515
|
-
|
|
3489
|
+
_this22.logInfo('patchOrdersInSQLite-开始', {
|
|
2516
3490
|
source: source,
|
|
2517
3491
|
count: compactedToWrite.length,
|
|
2518
3492
|
dedupedCount: skipped.length
|
|
2519
3493
|
});
|
|
2520
|
-
if (!(typeof
|
|
2521
|
-
|
|
3494
|
+
if (!(typeof _this22.dbManager.bulkUpdate === 'function')) {
|
|
3495
|
+
_context22.next = 8;
|
|
2522
3496
|
break;
|
|
2523
3497
|
}
|
|
2524
3498
|
writeMethod = 'bulkUpdate';
|
|
2525
|
-
|
|
2526
|
-
return
|
|
3499
|
+
_context22.next = 6;
|
|
3500
|
+
return _this22.dbManager.bulkUpdate(INDEXDB_STORE_NAME, compactedToWrite);
|
|
2527
3501
|
case 6:
|
|
2528
|
-
|
|
3502
|
+
_context22.next = 37;
|
|
2529
3503
|
break;
|
|
2530
3504
|
case 8:
|
|
2531
|
-
if (!(typeof
|
|
2532
|
-
|
|
3505
|
+
if (!(typeof _this22.dbManager.bulkAdd === 'function')) {
|
|
3506
|
+
_context22.next = 14;
|
|
2533
3507
|
break;
|
|
2534
3508
|
}
|
|
2535
3509
|
writeMethod = 'bulkAdd';
|
|
2536
|
-
|
|
2537
|
-
return
|
|
3510
|
+
_context22.next = 12;
|
|
3511
|
+
return _this22.dbManager.bulkAdd(INDEXDB_STORE_NAME, compactedToWrite);
|
|
2538
3512
|
case 12:
|
|
2539
|
-
|
|
3513
|
+
_context22.next = 37;
|
|
2540
3514
|
break;
|
|
2541
3515
|
case 14:
|
|
2542
|
-
if (!(typeof
|
|
2543
|
-
|
|
3516
|
+
if (!(typeof _this22.dbManager.update === 'function')) {
|
|
3517
|
+
_context22.next = 35;
|
|
2544
3518
|
break;
|
|
2545
3519
|
}
|
|
2546
3520
|
writeMethod = 'update';
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
3521
|
+
_iterator32 = _createForOfIteratorHelper(compactedToWrite);
|
|
3522
|
+
_context22.prev = 17;
|
|
3523
|
+
_iterator32.s();
|
|
2550
3524
|
case 19:
|
|
2551
|
-
if ((
|
|
2552
|
-
|
|
3525
|
+
if ((_step32 = _iterator32.n()).done) {
|
|
3526
|
+
_context22.next = 25;
|
|
2553
3527
|
break;
|
|
2554
3528
|
}
|
|
2555
|
-
order =
|
|
2556
|
-
|
|
2557
|
-
return
|
|
3529
|
+
order = _step32.value;
|
|
3530
|
+
_context22.next = 23;
|
|
3531
|
+
return _this22.dbManager.update(INDEXDB_STORE_NAME, order);
|
|
2558
3532
|
case 23:
|
|
2559
|
-
|
|
3533
|
+
_context22.next = 19;
|
|
2560
3534
|
break;
|
|
2561
3535
|
case 25:
|
|
2562
|
-
|
|
3536
|
+
_context22.next = 30;
|
|
2563
3537
|
break;
|
|
2564
3538
|
case 27:
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
3539
|
+
_context22.prev = 27;
|
|
3540
|
+
_context22.t0 = _context22["catch"](17);
|
|
3541
|
+
_iterator32.e(_context22.t0);
|
|
2568
3542
|
case 30:
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
return
|
|
3543
|
+
_context22.prev = 30;
|
|
3544
|
+
_iterator32.f();
|
|
3545
|
+
return _context22.finish(30);
|
|
2572
3546
|
case 33:
|
|
2573
|
-
|
|
2574
|
-
|
|
3547
|
+
_context22.next = 37;
|
|
3548
|
+
break;
|
|
3549
|
+
case 35:
|
|
3550
|
+
if (!options.throwOnError) {
|
|
3551
|
+
_context22.next = 37;
|
|
3552
|
+
break;
|
|
3553
|
+
}
|
|
3554
|
+
throw new Error('订单 SQLite 数据库不支持写入');
|
|
3555
|
+
case 37:
|
|
3556
|
+
_this22.recordRecentSqliteWrite(source, compactedToWrite);
|
|
3557
|
+
_this22.logInfo('patchOrdersInSQLite-完成', {
|
|
2575
3558
|
source: source,
|
|
2576
3559
|
count: compactedToWrite.length,
|
|
2577
3560
|
writeMethod: writeMethod,
|
|
2578
3561
|
dedupedCount: skipped.length
|
|
2579
3562
|
});
|
|
2580
|
-
case
|
|
3563
|
+
case 39:
|
|
2581
3564
|
case "end":
|
|
2582
|
-
return
|
|
3565
|
+
return _context22.stop();
|
|
2583
3566
|
}
|
|
2584
|
-
},
|
|
3567
|
+
}, _callee22, null, [[17, 27, 30, 33]]);
|
|
2585
3568
|
})));
|
|
2586
|
-
case
|
|
2587
|
-
|
|
3569
|
+
case 21:
|
|
3570
|
+
_context23.next = 28;
|
|
2588
3571
|
break;
|
|
2589
|
-
case
|
|
2590
|
-
|
|
2591
|
-
|
|
3572
|
+
case 23:
|
|
3573
|
+
_context23.prev = 23;
|
|
3574
|
+
_context23.t0 = _context23["catch"](18);
|
|
2592
3575
|
this.logError('增量保存订单到 SQLite 失败', {
|
|
2593
|
-
error:
|
|
3576
|
+
error: _context23.t0 instanceof Error ? _context23.t0.message : String(_context23.t0),
|
|
2594
3577
|
orderCount: ordersSnapshot.length
|
|
2595
3578
|
});
|
|
2596
|
-
|
|
3579
|
+
if (!options.throwOnError) {
|
|
3580
|
+
_context23.next = 28;
|
|
3581
|
+
break;
|
|
3582
|
+
}
|
|
3583
|
+
throw _context23.t0;
|
|
3584
|
+
case 28:
|
|
2597
3585
|
case "end":
|
|
2598
|
-
return
|
|
3586
|
+
return _context23.stop();
|
|
2599
3587
|
}
|
|
2600
|
-
},
|
|
3588
|
+
}, _callee23, this, [[18, 23]]);
|
|
2601
3589
|
}));
|
|
2602
|
-
function patchOrdersInSQLite(
|
|
3590
|
+
function patchOrdersInSQLite(_x16, _x17) {
|
|
2603
3591
|
return _patchOrdersInSQLite.apply(this, arguments);
|
|
2604
3592
|
}
|
|
2605
3593
|
return patchOrdersInSQLite;
|
|
@@ -2614,98 +3602,135 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2614
3602
|
}, {
|
|
2615
3603
|
key: "updateOrderInSQLite",
|
|
2616
3604
|
value: (function () {
|
|
2617
|
-
var _updateOrderInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2618
|
-
var
|
|
2619
|
-
var
|
|
2620
|
-
|
|
2621
|
-
|
|
3605
|
+
var _updateOrderInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee25(order, source) {
|
|
3606
|
+
var _this23 = this;
|
|
3607
|
+
var options,
|
|
3608
|
+
orderSnapshot,
|
|
3609
|
+
_orderSnapshot$order_3,
|
|
3610
|
+
_args25 = arguments;
|
|
3611
|
+
return _regeneratorRuntime().wrap(function _callee25$(_context25) {
|
|
3612
|
+
while (1) switch (_context25.prev = _context25.next) {
|
|
2622
3613
|
case 0:
|
|
2623
|
-
|
|
2624
|
-
|
|
3614
|
+
options = _args25.length > 2 && _args25[2] !== undefined ? _args25[2] : {};
|
|
3615
|
+
if (this.getOrderStorageKey(order)) {
|
|
3616
|
+
_context25.next = 5;
|
|
2625
3617
|
break;
|
|
2626
3618
|
}
|
|
2627
|
-
|
|
2628
|
-
|
|
3619
|
+
if (!options.throwOnError) {
|
|
3620
|
+
_context25.next = 4;
|
|
3621
|
+
break;
|
|
3622
|
+
}
|
|
3623
|
+
throw new Error('订单缺少可用的 SQLite 存储主键');
|
|
3624
|
+
case 4:
|
|
3625
|
+
return _context25.abrupt("return");
|
|
3626
|
+
case 5:
|
|
3627
|
+
if (this.dbManager) {
|
|
3628
|
+
_context25.next = 9;
|
|
3629
|
+
break;
|
|
3630
|
+
}
|
|
3631
|
+
if (!options.throwOnError) {
|
|
3632
|
+
_context25.next = 8;
|
|
3633
|
+
break;
|
|
3634
|
+
}
|
|
3635
|
+
throw new Error('订单 SQLite 数据库未初始化');
|
|
3636
|
+
case 8:
|
|
3637
|
+
return _context25.abrupt("return");
|
|
3638
|
+
case 9:
|
|
2629
3639
|
orderSnapshot = this.normalizeOrderCollectionsForIngress(cloneDeep(order), "".concat(source, ".sqliteIngress"));
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
3640
|
+
_context25.prev = 10;
|
|
3641
|
+
_context25.next = 13;
|
|
3642
|
+
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {
|
|
2633
3643
|
var _orderSnapshot$order_, _orderSnapshot$order_2;
|
|
2634
3644
|
var writeMethod;
|
|
2635
|
-
return _regeneratorRuntime().wrap(function
|
|
2636
|
-
while (1) switch (
|
|
3645
|
+
return _regeneratorRuntime().wrap(function _callee24$(_context24) {
|
|
3646
|
+
while (1) switch (_context24.prev = _context24.next) {
|
|
2637
3647
|
case 0:
|
|
2638
3648
|
writeMethod = 'none';
|
|
2639
|
-
|
|
3649
|
+
_this23.logInfo('updateOrderInSQLite-开始', {
|
|
2640
3650
|
source: source,
|
|
2641
3651
|
orderId: (_orderSnapshot$order_ = orderSnapshot.order_id) !== null && _orderSnapshot$order_ !== void 0 ? _orderSnapshot$order_ : null,
|
|
2642
|
-
storageKey:
|
|
3652
|
+
storageKey: _this23.getOrderStorageKey(orderSnapshot)
|
|
2643
3653
|
});
|
|
2644
|
-
if (!(typeof
|
|
2645
|
-
|
|
3654
|
+
if (!(typeof _this23.dbManager.update === 'function')) {
|
|
3655
|
+
_context24.next = 8;
|
|
2646
3656
|
break;
|
|
2647
3657
|
}
|
|
2648
3658
|
writeMethod = 'update';
|
|
2649
|
-
|
|
2650
|
-
return
|
|
3659
|
+
_context24.next = 6;
|
|
3660
|
+
return _this23.dbManager.update(INDEXDB_STORE_NAME, orderSnapshot);
|
|
2651
3661
|
case 6:
|
|
2652
|
-
|
|
3662
|
+
_context24.next = 22;
|
|
2653
3663
|
break;
|
|
2654
3664
|
case 8:
|
|
2655
|
-
if (!(typeof
|
|
2656
|
-
|
|
3665
|
+
if (!(typeof _this23.dbManager.bulkUpdate === 'function')) {
|
|
3666
|
+
_context24.next = 14;
|
|
2657
3667
|
break;
|
|
2658
3668
|
}
|
|
2659
3669
|
writeMethod = 'bulkUpdate';
|
|
2660
|
-
|
|
2661
|
-
return
|
|
3670
|
+
_context24.next = 12;
|
|
3671
|
+
return _this23.dbManager.bulkUpdate(INDEXDB_STORE_NAME, [orderSnapshot]);
|
|
2662
3672
|
case 12:
|
|
2663
|
-
|
|
3673
|
+
_context24.next = 22;
|
|
2664
3674
|
break;
|
|
2665
3675
|
case 14:
|
|
2666
|
-
if (!(typeof
|
|
2667
|
-
|
|
3676
|
+
if (!(typeof _this23.dbManager.bulkAdd === 'function')) {
|
|
3677
|
+
_context24.next = 20;
|
|
2668
3678
|
break;
|
|
2669
3679
|
}
|
|
2670
3680
|
writeMethod = 'bulkAdd';
|
|
2671
|
-
|
|
2672
|
-
return
|
|
3681
|
+
_context24.next = 18;
|
|
3682
|
+
return _this23.dbManager.bulkAdd(INDEXDB_STORE_NAME, [orderSnapshot]);
|
|
2673
3683
|
case 18:
|
|
2674
|
-
|
|
2675
|
-
|
|
3684
|
+
_context24.next = 22;
|
|
3685
|
+
break;
|
|
3686
|
+
case 20:
|
|
3687
|
+
if (!options.throwOnError) {
|
|
3688
|
+
_context24.next = 22;
|
|
3689
|
+
break;
|
|
3690
|
+
}
|
|
3691
|
+
throw new Error('订单 SQLite 数据库不支持写入');
|
|
3692
|
+
case 22:
|
|
3693
|
+
_this23.recordRecentSqliteWrite(source, [orderSnapshot]);
|
|
3694
|
+
_this23.logInfo('updateOrderInSQLite-完成', {
|
|
2676
3695
|
source: source,
|
|
2677
3696
|
orderId: (_orderSnapshot$order_2 = orderSnapshot.order_id) !== null && _orderSnapshot$order_2 !== void 0 ? _orderSnapshot$order_2 : null,
|
|
2678
3697
|
writeMethod: writeMethod
|
|
2679
3698
|
});
|
|
2680
|
-
case
|
|
3699
|
+
case 24:
|
|
2681
3700
|
case "end":
|
|
2682
|
-
return
|
|
3701
|
+
return _context24.stop();
|
|
2683
3702
|
}
|
|
2684
|
-
},
|
|
3703
|
+
}, _callee24);
|
|
2685
3704
|
})));
|
|
2686
|
-
case
|
|
2687
|
-
|
|
3705
|
+
case 13:
|
|
3706
|
+
_context25.next = 20;
|
|
2688
3707
|
break;
|
|
2689
|
-
case
|
|
2690
|
-
|
|
2691
|
-
|
|
3708
|
+
case 15:
|
|
3709
|
+
_context25.prev = 15;
|
|
3710
|
+
_context25.t0 = _context25["catch"](10);
|
|
2692
3711
|
this.logError('单条保存订单到 SQLite 失败', {
|
|
2693
|
-
error:
|
|
3712
|
+
error: _context25.t0 instanceof Error ? _context25.t0.message : String(_context25.t0),
|
|
2694
3713
|
orderId: (_orderSnapshot$order_3 = orderSnapshot.order_id) !== null && _orderSnapshot$order_3 !== void 0 ? _orderSnapshot$order_3 : null
|
|
2695
3714
|
});
|
|
2696
|
-
|
|
3715
|
+
if (!options.throwOnError) {
|
|
3716
|
+
_context25.next = 20;
|
|
3717
|
+
break;
|
|
3718
|
+
}
|
|
3719
|
+
throw _context25.t0;
|
|
3720
|
+
case 20:
|
|
2697
3721
|
case "end":
|
|
2698
|
-
return
|
|
3722
|
+
return _context25.stop();
|
|
2699
3723
|
}
|
|
2700
|
-
},
|
|
3724
|
+
}, _callee25, this, [[10, 15]]);
|
|
2701
3725
|
}));
|
|
2702
|
-
function updateOrderInSQLite(
|
|
3726
|
+
function updateOrderInSQLite(_x18, _x19) {
|
|
2703
3727
|
return _updateOrderInSQLite.apply(this, arguments);
|
|
2704
3728
|
}
|
|
2705
3729
|
return updateOrderInSQLite;
|
|
2706
3730
|
}()
|
|
2707
3731
|
/**
|
|
2708
|
-
* 全量快照替换 orders 表(clear + bulkAdd
|
|
3732
|
+
* 全量快照替换 orders 表(clear + bulkAdd),并保留本地 draft / need_sync / pending 支付订单。
|
|
3733
|
+
* 用于 SSE 全量拉取与营业日窗口裁剪。
|
|
2709
3734
|
*
|
|
2710
3735
|
* @example
|
|
2711
3736
|
* await this.replaceOrdersSnapshotInSQLite(orderList)
|
|
@@ -2714,100 +3739,163 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2714
3739
|
}, {
|
|
2715
3740
|
key: "replaceOrdersSnapshotInSQLite",
|
|
2716
3741
|
value: (function () {
|
|
2717
|
-
var _replaceOrdersSnapshotInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2718
|
-
var
|
|
2719
|
-
var
|
|
2720
|
-
|
|
2721
|
-
|
|
3742
|
+
var _replaceOrdersSnapshotInSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee27(orderList, source) {
|
|
3743
|
+
var _this24 = this;
|
|
3744
|
+
var protectedOrdersBeforeRemoteFetch,
|
|
3745
|
+
remoteSnapshot,
|
|
3746
|
+
mergedSnapshot,
|
|
3747
|
+
_args27 = arguments;
|
|
3748
|
+
return _regeneratorRuntime().wrap(function _callee27$(_context27) {
|
|
3749
|
+
while (1) switch (_context27.prev = _context27.next) {
|
|
2722
3750
|
case 0:
|
|
3751
|
+
protectedOrdersBeforeRemoteFetch = _args27.length > 2 && _args27[2] !== undefined ? _args27[2] : [];
|
|
2723
3752
|
if (this.dbManager) {
|
|
2724
|
-
|
|
3753
|
+
_context27.next = 3;
|
|
2725
3754
|
break;
|
|
2726
3755
|
}
|
|
2727
|
-
return
|
|
2728
|
-
return
|
|
3756
|
+
return _context27.abrupt("return", this.compactOrderListByIdentity(orderList.map(function (order) {
|
|
3757
|
+
return _this24.normalizeRemoteSyncedOrder(order);
|
|
2729
3758
|
}), "".concat(source, ".snapshotNoDb")).list);
|
|
2730
|
-
case
|
|
3759
|
+
case 3:
|
|
2731
3760
|
remoteSnapshot = cloneDeep(orderList).map(function (order) {
|
|
2732
|
-
return
|
|
3761
|
+
return _this24.normalizeOrderCollectionsForIngress(order, "".concat(source, ".remoteIngress"));
|
|
2733
3762
|
});
|
|
2734
3763
|
mergedSnapshot = this.compactOrderListByIdentity(remoteSnapshot.map(function (order) {
|
|
2735
|
-
return
|
|
3764
|
+
return _this24.normalizeRemoteSyncedOrder(order);
|
|
2736
3765
|
}), "".concat(source, ".remoteSnapshot")).list;
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2740
|
-
var existingOrders, orderListSnapshot;
|
|
2741
|
-
return _regeneratorRuntime().wrap(function
|
|
2742
|
-
while (1) switch (
|
|
3766
|
+
_context27.prev = 5;
|
|
3767
|
+
_context27.next = 8;
|
|
3768
|
+
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {
|
|
3769
|
+
var existingOrders, protectedLocalOrders, _iterator33, _step33, rawCurrentOrder, currentOrder, protectedIndex, currentNeedsProtection, orderListSnapshot;
|
|
3770
|
+
return _regeneratorRuntime().wrap(function _callee26$(_context26) {
|
|
3771
|
+
while (1) switch (_context26.prev = _context26.next) {
|
|
2743
3772
|
case 0:
|
|
2744
|
-
if (!(typeof
|
|
2745
|
-
|
|
3773
|
+
if (!(typeof _this24.dbManager.getAll === 'function')) {
|
|
3774
|
+
_context26.next = 6;
|
|
2746
3775
|
break;
|
|
2747
3776
|
}
|
|
2748
|
-
|
|
2749
|
-
return
|
|
3777
|
+
_context26.next = 3;
|
|
3778
|
+
return _this24.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
2750
3779
|
case 3:
|
|
2751
|
-
|
|
2752
|
-
|
|
3780
|
+
_context26.t0 = _context26.sent;
|
|
3781
|
+
_context26.next = 7;
|
|
2753
3782
|
break;
|
|
2754
3783
|
case 6:
|
|
2755
|
-
|
|
3784
|
+
_context26.t0 = [];
|
|
2756
3785
|
case 7:
|
|
2757
|
-
existingOrders =
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
3786
|
+
existingOrders = _context26.t0;
|
|
3787
|
+
protectedLocalOrders = protectedOrdersBeforeRemoteFetch.map(function (order) {
|
|
3788
|
+
return _this24.normalizeOrderCollectionsForIngress(order, "".concat(source, ".protectedBeforeRemoteFetch"));
|
|
3789
|
+
}).filter(function (order) {
|
|
3790
|
+
return _this24.shouldProtectLocalOrderFromRemoteSnapshot(order);
|
|
3791
|
+
});
|
|
3792
|
+
_iterator33 = _createForOfIteratorHelper(existingOrders || []);
|
|
3793
|
+
_context26.prev = 10;
|
|
3794
|
+
_iterator33.s();
|
|
3795
|
+
case 12:
|
|
3796
|
+
if ((_step33 = _iterator33.n()).done) {
|
|
3797
|
+
_context26.next = 23;
|
|
3798
|
+
break;
|
|
3799
|
+
}
|
|
3800
|
+
rawCurrentOrder = _step33.value;
|
|
3801
|
+
currentOrder = _this24.normalizeOrderCollectionsForIngress(rawCurrentOrder, "".concat(source, ".currentSQLite"));
|
|
3802
|
+
protectedIndex = _this24.findOrderIndexByIdentity(protectedLocalOrders, currentOrder);
|
|
3803
|
+
currentNeedsProtection = _this24.shouldProtectLocalOrderFromRemoteSnapshot(currentOrder);
|
|
3804
|
+
if (!(protectedIndex >= 0)) {
|
|
3805
|
+
_context26.next = 20;
|
|
3806
|
+
break;
|
|
3807
|
+
}
|
|
3808
|
+
if (currentNeedsProtection) {
|
|
3809
|
+
protectedLocalOrders[protectedIndex] = currentOrder;
|
|
3810
|
+
} else {
|
|
3811
|
+
protectedLocalOrders.splice(protectedIndex, 1);
|
|
3812
|
+
}
|
|
3813
|
+
return _context26.abrupt("continue", 21);
|
|
3814
|
+
case 20:
|
|
3815
|
+
if (currentNeedsProtection) protectedLocalOrders.push(currentOrder);
|
|
3816
|
+
case 21:
|
|
3817
|
+
_context26.next = 12;
|
|
3818
|
+
break;
|
|
3819
|
+
case 23:
|
|
3820
|
+
_context26.next = 28;
|
|
3821
|
+
break;
|
|
3822
|
+
case 25:
|
|
3823
|
+
_context26.prev = 25;
|
|
3824
|
+
_context26.t1 = _context26["catch"](10);
|
|
3825
|
+
_iterator33.e(_context26.t1);
|
|
3826
|
+
case 28:
|
|
3827
|
+
_context26.prev = 28;
|
|
3828
|
+
_iterator33.f();
|
|
3829
|
+
return _context26.finish(28);
|
|
3830
|
+
case 31:
|
|
3831
|
+
orderListSnapshot = _this24.mergeRemoteSnapshotWithPendingOrders(remoteSnapshot, protectedLocalOrders);
|
|
3832
|
+
mergedSnapshot = _this24.compactOrderListByIdentity(orderListSnapshot, "".concat(source, ".sqliteSnapshot")).list;
|
|
3833
|
+
_this24.logInfo('replaceOrdersSnapshotInSQLite-开始', {
|
|
2761
3834
|
source: source,
|
|
2762
3835
|
count: mergedSnapshot.length,
|
|
2763
3836
|
remoteCount: remoteSnapshot.length,
|
|
2764
|
-
|
|
3837
|
+
protectedBeforeRemoteFetchCount: protectedOrdersBeforeRemoteFetch.length,
|
|
3838
|
+
protectedLocalOrderCount: protectedLocalOrders.length,
|
|
3839
|
+
preservedLocalUnsyncedCount: mergedSnapshot.length - remoteSnapshot.length,
|
|
3840
|
+
protectedPendingPaymentCount: protectedLocalOrders.reduce(function (count, order) {
|
|
3841
|
+
return count + _this24.getIdentifiedPendingPayments(order).length;
|
|
3842
|
+
}, 0),
|
|
3843
|
+
protectedPendingPaymentIdentities: protectedLocalOrders.flatMap(function (order) {
|
|
3844
|
+
return _this24.getIdentifiedPendingPayments(order).map(function (payment) {
|
|
3845
|
+
var _order$order_id5, _external_sale_number5;
|
|
3846
|
+
return {
|
|
3847
|
+
order_id: (_order$order_id5 = order.order_id) !== null && _order$order_id5 !== void 0 ? _order$order_id5 : null,
|
|
3848
|
+
external_sale_number: (_external_sale_number5 = order.external_sale_number) !== null && _external_sale_number5 !== void 0 ? _external_sale_number5 : null,
|
|
3849
|
+
payment_identities: getOrderPaymentIdentityKeys(payment)
|
|
3850
|
+
};
|
|
3851
|
+
});
|
|
3852
|
+
})
|
|
2765
3853
|
});
|
|
2766
|
-
|
|
2767
|
-
return
|
|
2768
|
-
case
|
|
2769
|
-
|
|
3854
|
+
_context26.next = 36;
|
|
3855
|
+
return _this24.dbManager.clear(INDEXDB_STORE_NAME);
|
|
3856
|
+
case 36:
|
|
3857
|
+
_this24.logInfo('replaceOrdersSnapshotInSQLite-clear完成', {
|
|
2770
3858
|
count: mergedSnapshot.length
|
|
2771
3859
|
});
|
|
2772
3860
|
if (!(mergedSnapshot.length === 0)) {
|
|
2773
|
-
|
|
3861
|
+
_context26.next = 39;
|
|
2774
3862
|
break;
|
|
2775
3863
|
}
|
|
2776
|
-
return
|
|
2777
|
-
case
|
|
2778
|
-
|
|
2779
|
-
return
|
|
2780
|
-
case
|
|
2781
|
-
|
|
2782
|
-
|
|
3864
|
+
return _context26.abrupt("return");
|
|
3865
|
+
case 39:
|
|
3866
|
+
_context26.next = 41;
|
|
3867
|
+
return _this24.dbManager.bulkAdd(INDEXDB_STORE_NAME, mergedSnapshot);
|
|
3868
|
+
case 41:
|
|
3869
|
+
_this24.recordRecentSqliteWrite(source, mergedSnapshot);
|
|
3870
|
+
_this24.logInfo('replaceOrdersSnapshotInSQLite-bulkAdd完成', {
|
|
2783
3871
|
source: source,
|
|
2784
3872
|
count: mergedSnapshot.length
|
|
2785
3873
|
});
|
|
2786
|
-
case
|
|
3874
|
+
case 43:
|
|
2787
3875
|
case "end":
|
|
2788
|
-
return
|
|
3876
|
+
return _context26.stop();
|
|
2789
3877
|
}
|
|
2790
|
-
},
|
|
3878
|
+
}, _callee26, null, [[10, 25, 28, 31]]);
|
|
2791
3879
|
})));
|
|
2792
|
-
case
|
|
2793
|
-
|
|
3880
|
+
case 8:
|
|
3881
|
+
_context27.next = 13;
|
|
2794
3882
|
break;
|
|
2795
|
-
case
|
|
2796
|
-
|
|
2797
|
-
|
|
3883
|
+
case 10:
|
|
3884
|
+
_context27.prev = 10;
|
|
3885
|
+
_context27.t0 = _context27["catch"](5);
|
|
2798
3886
|
this.logError('全量保存订单到 SQLite 失败', {
|
|
2799
|
-
error:
|
|
3887
|
+
error: _context27.t0 instanceof Error ? _context27.t0.message : String(_context27.t0),
|
|
2800
3888
|
orderList: remoteSnapshot.length
|
|
2801
3889
|
});
|
|
2802
|
-
case 12:
|
|
2803
|
-
return _context24.abrupt("return", mergedSnapshot);
|
|
2804
3890
|
case 13:
|
|
3891
|
+
return _context27.abrupt("return", mergedSnapshot);
|
|
3892
|
+
case 14:
|
|
2805
3893
|
case "end":
|
|
2806
|
-
return
|
|
3894
|
+
return _context27.stop();
|
|
2807
3895
|
}
|
|
2808
|
-
},
|
|
3896
|
+
}, _callee27, this, [[5, 10]]);
|
|
2809
3897
|
}));
|
|
2810
|
-
function replaceOrdersSnapshotInSQLite(
|
|
3898
|
+
function replaceOrdersSnapshotInSQLite(_x20, _x21) {
|
|
2811
3899
|
return _replaceOrdersSnapshotInSQLite.apply(this, arguments);
|
|
2812
3900
|
}
|
|
2813
3901
|
return replaceOrdersSnapshotInSQLite;
|
|
@@ -2822,38 +3910,38 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2822
3910
|
}, {
|
|
2823
3911
|
key: "clear",
|
|
2824
3912
|
value: (function () {
|
|
2825
|
-
var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2826
|
-
var
|
|
2827
|
-
return _regeneratorRuntime().wrap(function
|
|
2828
|
-
while (1) switch (
|
|
3913
|
+
var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {
|
|
3914
|
+
var _this25 = this;
|
|
3915
|
+
return _regeneratorRuntime().wrap(function _callee29$(_context29) {
|
|
3916
|
+
while (1) switch (_context29.prev = _context29.next) {
|
|
2829
3917
|
case 0:
|
|
2830
3918
|
this.store.list = [];
|
|
2831
3919
|
this.store.map = new Map();
|
|
2832
3920
|
if (!this.dbManager) {
|
|
2833
|
-
|
|
3921
|
+
_context29.next = 5;
|
|
2834
3922
|
break;
|
|
2835
3923
|
}
|
|
2836
|
-
|
|
2837
|
-
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
2838
|
-
return _regeneratorRuntime().wrap(function
|
|
2839
|
-
while (1) switch (
|
|
3924
|
+
_context29.next = 5;
|
|
3925
|
+
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {
|
|
3926
|
+
return _regeneratorRuntime().wrap(function _callee28$(_context28) {
|
|
3927
|
+
while (1) switch (_context28.prev = _context28.next) {
|
|
2840
3928
|
case 0:
|
|
2841
|
-
|
|
2842
|
-
return
|
|
3929
|
+
_context28.next = 2;
|
|
3930
|
+
return _this25.dbManager.clear(INDEXDB_STORE_NAME);
|
|
2843
3931
|
case 2:
|
|
2844
3932
|
case "end":
|
|
2845
|
-
return
|
|
3933
|
+
return _context28.stop();
|
|
2846
3934
|
}
|
|
2847
|
-
},
|
|
3935
|
+
}, _callee28);
|
|
2848
3936
|
})));
|
|
2849
3937
|
case 5:
|
|
2850
3938
|
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, '');
|
|
2851
3939
|
this.emitOrdersChanged([], 'clear');
|
|
2852
3940
|
case 7:
|
|
2853
3941
|
case "end":
|
|
2854
|
-
return
|
|
3942
|
+
return _context29.stop();
|
|
2855
3943
|
}
|
|
2856
|
-
},
|
|
3944
|
+
}, _callee29, this);
|
|
2857
3945
|
}));
|
|
2858
3946
|
function clear() {
|
|
2859
3947
|
return _clear.apply(this, arguments);
|