@pisell/pisellos 2.3.61 → 2.3.62
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 +7 -0
- package/dist/core/index.js +109 -66
- package/dist/modules/Quotation/index.d.ts +6 -0
- package/dist/modules/Quotation/index.js +75 -19
- package/dist/plugins/request.d.ts +1 -0
- package/dist/server/index.d.ts +6 -2
- package/dist/server/index.js +130 -90
- package/dist/server/modules/floor-plan/index.d.ts +4 -0
- package/dist/server/modules/floor-plan/index.js +240 -98
- package/dist/server/modules/menu/index.js +48 -23
- package/dist/server/modules/order/index.d.ts +12 -7
- package/dist/server/modules/order/index.js +248 -96
- package/dist/server/modules/products/index.d.ts +8 -2
- package/dist/server/modules/products/index.js +167 -75
- package/dist/server/modules/resource/index.js +21 -13
- package/lib/core/index.d.ts +7 -0
- package/lib/core/index.js +20 -3
- package/lib/model/strategy/adapter/promotion/index.js +51 -0
- package/lib/modules/Quotation/index.d.ts +6 -0
- package/lib/modules/Quotation/index.js +49 -5
- package/lib/plugins/request.d.ts +1 -0
- package/lib/server/index.d.ts +6 -2
- package/lib/server/index.js +18 -8
- package/lib/server/modules/floor-plan/index.d.ts +4 -0
- package/lib/server/modules/floor-plan/index.js +54 -6
- package/lib/server/modules/menu/index.js +31 -5
- package/lib/server/modules/order/index.d.ts +12 -7
- package/lib/server/modules/order/index.js +143 -28
- package/lib/server/modules/products/index.d.ts +8 -2
- package/lib/server/modules/products/index.js +97 -24
- package/lib/server/modules/resource/index.js +7 -2
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ import { getOrderPaymentIdentityKeys, isIdentifiedPendingOrderPayment, isPending
|
|
|
42
42
|
*/
|
|
43
43
|
var INDEXDB_STORE_NAME = 'orders';
|
|
44
44
|
var ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY = 'server_order_last_full_fetch_at';
|
|
45
|
+
var ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY = 'server_order_last_full_fetch_shop_id';
|
|
45
46
|
var ORDER_SYNC_THROTTLE_MS_STORAGE_KEY = 'order_sync_throttle_ms';
|
|
46
47
|
var DEFAULT_ORDER_SYNC_THROTTLE_MS = 2000;
|
|
47
48
|
/** pubsub 回声写入去重窗口:业务 API 刚写入后,跳过同单 SQLite patch */
|
|
@@ -700,26 +701,78 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
700
701
|
key: "preload",
|
|
701
702
|
value: function () {
|
|
702
703
|
var _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
703
|
-
var orders;
|
|
704
|
+
var preloadStartedAt, cachedOrders, memoryOrders, orders;
|
|
704
705
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
705
706
|
while (1) switch (_context4.prev = _context4.next) {
|
|
706
707
|
case 0:
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
708
|
+
preloadStartedAt = Date.now();
|
|
709
|
+
cachedOrders = null;
|
|
710
|
+
if (!this.dbManager) {
|
|
711
|
+
_context4.next = 12;
|
|
712
|
+
break;
|
|
713
|
+
}
|
|
714
|
+
_context4.prev = 3;
|
|
715
|
+
_context4.next = 6;
|
|
716
|
+
return this.loadOrdersFromSQLite({
|
|
717
|
+
throwOnError: true
|
|
718
|
+
});
|
|
719
|
+
case 6:
|
|
720
|
+
cachedOrders = _context4.sent;
|
|
721
|
+
_context4.next = 12;
|
|
722
|
+
break;
|
|
723
|
+
case 9:
|
|
724
|
+
_context4.prev = 9;
|
|
725
|
+
_context4.t0 = _context4["catch"](3);
|
|
726
|
+
this.logWarning('preload-SQLite读取失败,回退远端全量拉取', {
|
|
727
|
+
error: _context4.t0 instanceof Error ? _context4.t0.message : String(_context4.t0)
|
|
728
|
+
});
|
|
729
|
+
case 12:
|
|
730
|
+
if (!(cachedOrders !== null && this.hasPulledOrdersToday())) {
|
|
731
|
+
_context4.next = 22;
|
|
732
|
+
break;
|
|
733
|
+
}
|
|
734
|
+
memoryOrders = this.normalizeOrdersForMemoryList(cachedOrders, 'preload.sqliteMemory');
|
|
735
|
+
this.store.list = cloneDeep(memoryOrders);
|
|
736
|
+
this.syncOrdersMap();
|
|
737
|
+
_context4.next = 18;
|
|
738
|
+
return this.core.effects.emit(OrderHooks.onOrdersLoaded, this.store.list);
|
|
739
|
+
case 18:
|
|
740
|
+
_context4.next = 20;
|
|
741
|
+
return this.emitOrdersChanged([], 'preload.sqlite');
|
|
742
|
+
case 20:
|
|
743
|
+
this.logInfo('预加载完成', {
|
|
744
|
+
trigger: 'preload',
|
|
745
|
+
source: 'SQLite',
|
|
746
|
+
orderCount: this.store.list.length,
|
|
747
|
+
duration: "".concat(Date.now() - preloadStartedAt, "ms")
|
|
748
|
+
});
|
|
749
|
+
return _context4.abrupt("return");
|
|
750
|
+
case 22:
|
|
751
|
+
_context4.next = 24;
|
|
752
|
+
return this.loadOrdersByServer({
|
|
753
|
+
trigger: 'preload'
|
|
754
|
+
});
|
|
755
|
+
case 24:
|
|
710
756
|
orders = _context4.sent;
|
|
711
757
|
this.store.list = cloneDeep(orders);
|
|
712
758
|
this.syncOrdersMap();
|
|
713
|
-
_context4.next =
|
|
759
|
+
_context4.next = 29;
|
|
714
760
|
return this.emitOrdersChanged([], 'preload');
|
|
715
|
-
case
|
|
716
|
-
_context4.next =
|
|
761
|
+
case 29:
|
|
762
|
+
_context4.next = 31;
|
|
717
763
|
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
718
|
-
case
|
|
764
|
+
case 31:
|
|
765
|
+
this.logInfo('预加载完成', {
|
|
766
|
+
trigger: 'preload',
|
|
767
|
+
source: 'Server',
|
|
768
|
+
orderCount: this.store.list.length,
|
|
769
|
+
duration: "".concat(Date.now() - preloadStartedAt, "ms")
|
|
770
|
+
});
|
|
771
|
+
case 32:
|
|
719
772
|
case "end":
|
|
720
773
|
return _context4.stop();
|
|
721
774
|
}
|
|
722
|
-
}, _callee4, this);
|
|
775
|
+
}, _callee4, this, [[3, 9]]);
|
|
723
776
|
}));
|
|
724
777
|
function preload() {
|
|
725
778
|
return _preload.apply(this, arguments);
|
|
@@ -1052,18 +1105,32 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1052
1105
|
var _loadOrdersByServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
1053
1106
|
var _this5 = this,
|
|
1054
1107
|
_this$store;
|
|
1055
|
-
var
|
|
1108
|
+
var options,
|
|
1109
|
+
orderList,
|
|
1110
|
+
hasFetchedRemoteSnapshot,
|
|
1111
|
+
trigger,
|
|
1112
|
+
protectedOrdersBeforeRemoteFetch,
|
|
1113
|
+
data,
|
|
1114
|
+
_yield$this$replaceOr,
|
|
1115
|
+
mergedOrders,
|
|
1116
|
+
isRemoteSnapshotPersisted,
|
|
1117
|
+
memoryOrders,
|
|
1118
|
+
_args8 = arguments;
|
|
1056
1119
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
1057
1120
|
while (1) switch (_context8.prev = _context8.next) {
|
|
1058
1121
|
case 0:
|
|
1122
|
+
options = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {};
|
|
1059
1123
|
orderList = [];
|
|
1060
|
-
|
|
1124
|
+
hasFetchedRemoteSnapshot = false;
|
|
1125
|
+
trigger = options.trigger || 'unknown';
|
|
1126
|
+
_context8.next = 6;
|
|
1061
1127
|
return this.loadOrdersFromSQLite();
|
|
1062
|
-
case
|
|
1128
|
+
case 6:
|
|
1063
1129
|
protectedOrdersBeforeRemoteFetch = _context8.sent.filter(function (order) {
|
|
1064
1130
|
return _this5.shouldProtectLocalOrderFromRemoteSnapshot(order);
|
|
1065
1131
|
});
|
|
1066
1132
|
this.logInfo('loadOrdersByServer-开始', {
|
|
1133
|
+
trigger: trigger,
|
|
1067
1134
|
hasOrderDataSource: !!this.orderDataSource,
|
|
1068
1135
|
query: ((_this$store = this.store) === null || _this$store === void 0 ? void 0 : _this$store.createdAtQuery) || null,
|
|
1069
1136
|
protectedLocalOrderCount: protectedOrdersBeforeRemoteFetch.length,
|
|
@@ -1072,51 +1139,61 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1072
1139
|
}, 0)
|
|
1073
1140
|
});
|
|
1074
1141
|
if (!this.orderDataSource) {
|
|
1075
|
-
_context8.next =
|
|
1142
|
+
_context8.next = 23;
|
|
1076
1143
|
break;
|
|
1077
1144
|
}
|
|
1078
|
-
_context8.prev =
|
|
1079
|
-
_context8.next =
|
|
1145
|
+
_context8.prev = 9;
|
|
1146
|
+
_context8.next = 12;
|
|
1080
1147
|
return this.orderDataSource.run({
|
|
1081
1148
|
sse: {
|
|
1082
1149
|
query: this.store.createdAtQuery
|
|
1083
1150
|
}
|
|
1084
1151
|
});
|
|
1085
|
-
case
|
|
1152
|
+
case 12:
|
|
1086
1153
|
data = _context8.sent;
|
|
1087
1154
|
orderList = data || [];
|
|
1088
1155
|
this.logInfo('loadOrdersByServer-SSE拉取成功', {
|
|
1156
|
+
trigger: trigger,
|
|
1089
1157
|
count: orderList.length
|
|
1090
1158
|
});
|
|
1091
|
-
|
|
1159
|
+
hasFetchedRemoteSnapshot = true;
|
|
1092
1160
|
this.lastServerFullFetchAtMs = Date.now();
|
|
1093
|
-
_context8.next =
|
|
1161
|
+
_context8.next = 23;
|
|
1094
1162
|
break;
|
|
1095
|
-
case
|
|
1096
|
-
_context8.prev =
|
|
1097
|
-
_context8.t0 = _context8["catch"](
|
|
1163
|
+
case 19:
|
|
1164
|
+
_context8.prev = 19;
|
|
1165
|
+
_context8.t0 = _context8["catch"](9);
|
|
1098
1166
|
this.logInfo('loadOrdersByServer-SSE拉取失败,保持当前内存订单');
|
|
1099
1167
|
return _context8.abrupt("return", this.store.list);
|
|
1100
|
-
case
|
|
1101
|
-
|
|
1168
|
+
case 23:
|
|
1169
|
+
if (hasFetchedRemoteSnapshot) {
|
|
1170
|
+
this.clearOrderSnapshotMarker();
|
|
1171
|
+
}
|
|
1172
|
+
_context8.next = 26;
|
|
1102
1173
|
return this.replaceOrdersSnapshotInSQLite(orderList, 'loadOrdersByServer', protectedOrdersBeforeRemoteFetch);
|
|
1103
|
-
case
|
|
1104
|
-
|
|
1174
|
+
case 26:
|
|
1175
|
+
_yield$this$replaceOr = _context8.sent;
|
|
1176
|
+
mergedOrders = _yield$this$replaceOr.orders;
|
|
1177
|
+
isRemoteSnapshotPersisted = _yield$this$replaceOr.persisted;
|
|
1178
|
+
if (hasFetchedRemoteSnapshot && isRemoteSnapshotPersisted) {
|
|
1179
|
+
this.markOrderPulledAtNow();
|
|
1180
|
+
}
|
|
1105
1181
|
memoryOrders = this.normalizeOrdersForMemoryList(mergedOrders, 'loadOrdersByServer.memory');
|
|
1106
1182
|
this.logInfo('loadOrdersByServer-结束', {
|
|
1183
|
+
trigger: trigger,
|
|
1107
1184
|
count: memoryOrders.length,
|
|
1108
1185
|
persistedCount: mergedOrders.length,
|
|
1109
1186
|
sqliteOnlyDraftCount: mergedOrders.length - memoryOrders.length
|
|
1110
1187
|
});
|
|
1111
|
-
_context8.next =
|
|
1188
|
+
_context8.next = 34;
|
|
1112
1189
|
return this.core.effects.emit(OrderHooks.onOrdersLoaded, memoryOrders);
|
|
1113
|
-
case
|
|
1190
|
+
case 34:
|
|
1114
1191
|
return _context8.abrupt("return", memoryOrders);
|
|
1115
|
-
case
|
|
1192
|
+
case 35:
|
|
1116
1193
|
case "end":
|
|
1117
1194
|
return _context8.stop();
|
|
1118
1195
|
}
|
|
1119
|
-
}, _callee8, this, [[
|
|
1196
|
+
}, _callee8, this, [[9, 19]]);
|
|
1120
1197
|
}));
|
|
1121
1198
|
function loadOrdersByServer() {
|
|
1122
1199
|
return _loadOrdersByServer.apply(this, arguments);
|
|
@@ -1132,53 +1209,76 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1132
1209
|
key: "silentRefresh",
|
|
1133
1210
|
value: (function () {
|
|
1134
1211
|
var _silentRefresh = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
1135
|
-
var
|
|
1212
|
+
var options,
|
|
1213
|
+
startTime,
|
|
1214
|
+
trigger,
|
|
1215
|
+
elapsedSinceFullFetch,
|
|
1216
|
+
orders,
|
|
1217
|
+
errorMessage,
|
|
1218
|
+
_args9 = arguments;
|
|
1136
1219
|
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
1137
1220
|
while (1) switch (_context9.prev = _context9.next) {
|
|
1138
1221
|
case 0:
|
|
1222
|
+
options = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {};
|
|
1139
1223
|
startTime = Date.now();
|
|
1224
|
+
trigger = options.trigger || 'background';
|
|
1140
1225
|
elapsedSinceFullFetch = Date.now() - this.lastServerFullFetchAtMs;
|
|
1141
1226
|
if (!(this.lastServerFullFetchAtMs > 0 && elapsedSinceFullFetch < ORDER_SILENT_REFRESH_MIN_INTERVAL_MS)) {
|
|
1142
|
-
_context9.next =
|
|
1227
|
+
_context9.next = 7;
|
|
1143
1228
|
break;
|
|
1144
1229
|
}
|
|
1230
|
+
this.logInfo('silentRefresh 跳过全量 SSE', {
|
|
1231
|
+
trigger: trigger,
|
|
1232
|
+
reason: 'within_min_interval',
|
|
1233
|
+
minIntervalMs: ORDER_SILENT_REFRESH_MIN_INTERVAL_MS,
|
|
1234
|
+
elapsedSinceFullFetchMs: elapsedSinceFullFetch,
|
|
1235
|
+
orderCount: this.store.list.length
|
|
1236
|
+
});
|
|
1145
1237
|
return _context9.abrupt("return", this.store.list);
|
|
1146
|
-
case
|
|
1147
|
-
this.logInfo('silentRefresh 开始'
|
|
1148
|
-
|
|
1238
|
+
case 7:
|
|
1239
|
+
this.logInfo('silentRefresh 开始', {
|
|
1240
|
+
trigger: trigger,
|
|
1241
|
+
elapsedSinceFullFetchMs: elapsedSinceFullFetch,
|
|
1242
|
+
orderCount: this.store.list.length
|
|
1243
|
+
});
|
|
1244
|
+
_context9.prev = 8;
|
|
1149
1245
|
// 刷新前,需要更新当前营业日边界(store.createdAtQuery)
|
|
1150
1246
|
this.updateCreateStore();
|
|
1151
|
-
_context9.next =
|
|
1152
|
-
return this.loadOrdersByServer(
|
|
1153
|
-
|
|
1247
|
+
_context9.next = 12;
|
|
1248
|
+
return this.loadOrdersByServer({
|
|
1249
|
+
trigger: trigger
|
|
1250
|
+
});
|
|
1251
|
+
case 12:
|
|
1154
1252
|
orders = _context9.sent;
|
|
1155
1253
|
this.store.list = cloneDeep(orders);
|
|
1156
1254
|
this.syncOrdersMap();
|
|
1157
|
-
_context9.next =
|
|
1255
|
+
_context9.next = 17;
|
|
1158
1256
|
return this.emitOrdersChanged([], 'silentRefresh');
|
|
1159
|
-
case
|
|
1160
|
-
_context9.next =
|
|
1257
|
+
case 17:
|
|
1258
|
+
_context9.next = 19;
|
|
1161
1259
|
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
1162
|
-
case
|
|
1260
|
+
case 19:
|
|
1163
1261
|
this.logInfo('silentRefresh 完成', {
|
|
1262
|
+
trigger: trigger,
|
|
1164
1263
|
orderCount: orders.length,
|
|
1165
1264
|
duration: "".concat(Date.now() - startTime, "ms")
|
|
1166
1265
|
});
|
|
1167
1266
|
return _context9.abrupt("return", this.store.list);
|
|
1168
|
-
case
|
|
1169
|
-
_context9.prev =
|
|
1170
|
-
_context9.t0 = _context9["catch"](
|
|
1267
|
+
case 23:
|
|
1268
|
+
_context9.prev = 23;
|
|
1269
|
+
_context9.t0 = _context9["catch"](8);
|
|
1171
1270
|
errorMessage = _context9.t0 instanceof Error ? _context9.t0.message : String(_context9.t0);
|
|
1172
1271
|
this.logError('silentRefresh 失败', {
|
|
1272
|
+
trigger: trigger,
|
|
1173
1273
|
duration: "".concat(Date.now() - startTime, "ms"),
|
|
1174
1274
|
error: errorMessage
|
|
1175
1275
|
});
|
|
1176
1276
|
return _context9.abrupt("return", this.store.list);
|
|
1177
|
-
case
|
|
1277
|
+
case 28:
|
|
1178
1278
|
case "end":
|
|
1179
1279
|
return _context9.stop();
|
|
1180
1280
|
}
|
|
1181
|
-
}, _callee9, this, [[
|
|
1281
|
+
}, _callee9, this, [[8, 23]]);
|
|
1182
1282
|
}));
|
|
1183
1283
|
function silentRefresh() {
|
|
1184
1284
|
return _silentRefresh.apply(this, arguments);
|
|
@@ -3193,25 +3293,32 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3193
3293
|
}
|
|
3194
3294
|
|
|
3195
3295
|
/**
|
|
3196
|
-
*
|
|
3197
|
-
*
|
|
3198
|
-
* - 无法解析时退化为自然日窗口
|
|
3296
|
+
* 当前订单缓存可复用窗口。
|
|
3297
|
+
* start_time 模式使用精确的营业日起止时间;配置缺失或异常时退化为自然日。
|
|
3199
3298
|
*/
|
|
3200
3299
|
}, {
|
|
3201
|
-
key: "
|
|
3202
|
-
value: function
|
|
3203
|
-
var _this$store2;
|
|
3300
|
+
key: "getCurrentOrderCacheWindow",
|
|
3301
|
+
value: function getCurrentOrderCacheWindow() {
|
|
3204
3302
|
var now = dayjs();
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
var
|
|
3208
|
-
var
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3303
|
+
try {
|
|
3304
|
+
var _coreData$core;
|
|
3305
|
+
var appPlugin = this.core.getPlugin('app');
|
|
3306
|
+
var app = appPlugin === null || appPlugin === void 0 ? void 0 : appPlugin.getApp();
|
|
3307
|
+
var coreData = app === null || app === void 0 ? void 0 : app.data.store.getStore().getDataByModel('core');
|
|
3308
|
+
var boundary = coreData === null || coreData === void 0 || (_coreData$core = coreData.core) === null || _coreData$core === void 0 ? void 0 : _coreData$core.operating_day_boundary;
|
|
3309
|
+
if ((boundary === null || boundary === void 0 ? void 0 : boundary.type) === 'start_time') {
|
|
3310
|
+
var boundaryTime = String(boundary.time || '').trim();
|
|
3311
|
+
var todayBoundary = dayjs("".concat(now.format('YYYY-MM-DD'), " ").concat(boundaryTime));
|
|
3312
|
+
if (todayBoundary.isValid()) {
|
|
3313
|
+
var _startAt = now.isBefore(todayBoundary) ? todayBoundary.subtract(1, 'day') : todayBoundary;
|
|
3314
|
+
return {
|
|
3315
|
+
startAt: _startAt,
|
|
3316
|
+
endExclusiveAt: _startAt.add(1, 'day')
|
|
3317
|
+
};
|
|
3318
|
+
}
|
|
3214
3319
|
}
|
|
3320
|
+
} catch (_unused6) {
|
|
3321
|
+
// 读取营业日配置失败时按自然日兜底,不影响启动。
|
|
3215
3322
|
}
|
|
3216
3323
|
var startAt = now.startOf('day');
|
|
3217
3324
|
return {
|
|
@@ -3224,20 +3331,47 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3224
3331
|
value: function hasPulledOrdersToday() {
|
|
3225
3332
|
var lastFullFetchAt = this.getStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY);
|
|
3226
3333
|
if (!lastFullFetchAt) return false;
|
|
3334
|
+
var currentShopId = this.getCurrentShopId();
|
|
3335
|
+
var lastFullFetchShopId = this.getStorageItem(ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY);
|
|
3336
|
+
if (!currentShopId || !lastFullFetchShopId || currentShopId !== lastFullFetchShopId) {
|
|
3337
|
+
return false;
|
|
3338
|
+
}
|
|
3227
3339
|
var parsed = dayjs(lastFullFetchAt);
|
|
3228
3340
|
if (!parsed.isValid()) return false;
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
var _this$getCurrentPullW = this.getCurrentPullWindow(),
|
|
3233
|
-
startAt = _this$getCurrentPullW.startAt,
|
|
3234
|
-
endExclusiveAt = _this$getCurrentPullW.endExclusiveAt;
|
|
3341
|
+
var _this$getCurrentOrder = this.getCurrentOrderCacheWindow(),
|
|
3342
|
+
startAt = _this$getCurrentOrder.startAt,
|
|
3343
|
+
endExclusiveAt = _this$getCurrentOrder.endExclusiveAt;
|
|
3235
3344
|
return (parsed.isAfter(startAt) || parsed.isSame(startAt)) && parsed.isBefore(endExclusiveAt);
|
|
3236
3345
|
}
|
|
3237
3346
|
}, {
|
|
3238
3347
|
key: "markOrderPulledAtNow",
|
|
3239
3348
|
value: function markOrderPulledAtNow() {
|
|
3349
|
+
var currentShopId = this.getCurrentShopId();
|
|
3350
|
+
if (!currentShopId) return;
|
|
3240
3351
|
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, dayjs().format('YYYY-MM-DD HH:mm:ss'));
|
|
3352
|
+
this.setStorageItem(ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY, currentShopId);
|
|
3353
|
+
}
|
|
3354
|
+
}, {
|
|
3355
|
+
key: "clearOrderSnapshotMarker",
|
|
3356
|
+
value: function clearOrderSnapshotMarker() {
|
|
3357
|
+
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, '');
|
|
3358
|
+
this.setStorageItem(ORDER_LAST_FULL_FETCH_SHOP_ID_STORAGE_KEY, '');
|
|
3359
|
+
}
|
|
3360
|
+
}, {
|
|
3361
|
+
key: "getCurrentShopId",
|
|
3362
|
+
value: function getCurrentShopId() {
|
|
3363
|
+
try {
|
|
3364
|
+
var _coreData$core2;
|
|
3365
|
+
var appPlugin = this.core.getPlugin('app');
|
|
3366
|
+
var app = appPlugin === null || appPlugin === void 0 ? void 0 : appPlugin.getApp();
|
|
3367
|
+
if (!app) return null;
|
|
3368
|
+
var coreData = app.data.store.getStore().getDataByModel('core');
|
|
3369
|
+
var shopId = coreData === null || coreData === void 0 || (_coreData$core2 = coreData.core) === null || _coreData$core2 === void 0 ? void 0 : _coreData$core2.id;
|
|
3370
|
+
if (shopId === undefined || shopId === null || shopId === '') return null;
|
|
3371
|
+
return String(shopId);
|
|
3372
|
+
} catch (_unused7) {
|
|
3373
|
+
return null;
|
|
3374
|
+
}
|
|
3241
3375
|
}
|
|
3242
3376
|
}, {
|
|
3243
3377
|
key: "getStorageItem",
|
|
@@ -3248,7 +3382,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3248
3382
|
if (typeof globalThis !== 'undefined' && globalThis !== null && globalThis !== void 0 && globalThis.localStorage) {
|
|
3249
3383
|
return globalThis.localStorage.getItem(key);
|
|
3250
3384
|
}
|
|
3251
|
-
} catch (
|
|
3385
|
+
} catch (_unused8) {
|
|
3252
3386
|
// 忽略存储异常,避免影响主流程
|
|
3253
3387
|
}
|
|
3254
3388
|
return null;
|
|
@@ -3265,7 +3399,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3265
3399
|
if (typeof globalThis !== 'undefined' && globalThis !== null && globalThis !== void 0 && globalThis.localStorage) {
|
|
3266
3400
|
globalThis.localStorage.setItem(key, value);
|
|
3267
3401
|
}
|
|
3268
|
-
} catch (
|
|
3402
|
+
} catch (_unused9) {
|
|
3269
3403
|
// 忽略存储异常,避免影响主流程
|
|
3270
3404
|
}
|
|
3271
3405
|
}
|
|
@@ -3274,33 +3408,42 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3274
3408
|
value: function () {
|
|
3275
3409
|
var _loadOrdersFromSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {
|
|
3276
3410
|
var _this20 = this;
|
|
3277
|
-
var
|
|
3411
|
+
var options,
|
|
3412
|
+
orders,
|
|
3413
|
+
_args20 = arguments;
|
|
3278
3414
|
return _regeneratorRuntime().wrap(function _callee20$(_context20) {
|
|
3279
3415
|
while (1) switch (_context20.prev = _context20.next) {
|
|
3280
3416
|
case 0:
|
|
3417
|
+
options = _args20.length > 0 && _args20[0] !== undefined ? _args20[0] : {};
|
|
3281
3418
|
if (this.dbManager) {
|
|
3282
|
-
_context20.next =
|
|
3419
|
+
_context20.next = 3;
|
|
3283
3420
|
break;
|
|
3284
3421
|
}
|
|
3285
3422
|
return _context20.abrupt("return", []);
|
|
3286
|
-
case
|
|
3287
|
-
_context20.prev =
|
|
3288
|
-
_context20.next =
|
|
3423
|
+
case 3:
|
|
3424
|
+
_context20.prev = 3;
|
|
3425
|
+
_context20.next = 6;
|
|
3289
3426
|
return this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
3290
|
-
case
|
|
3427
|
+
case 6:
|
|
3291
3428
|
orders = _context20.sent;
|
|
3292
3429
|
return _context20.abrupt("return", (orders || []).map(function (order) {
|
|
3293
3430
|
return _this20.normalizeOrderCollectionsForIngress(order, 'loadOrdersFromSQLite');
|
|
3294
3431
|
}));
|
|
3295
|
-
case
|
|
3296
|
-
_context20.prev =
|
|
3297
|
-
_context20.t0 = _context20["catch"](
|
|
3432
|
+
case 10:
|
|
3433
|
+
_context20.prev = 10;
|
|
3434
|
+
_context20.t0 = _context20["catch"](3);
|
|
3435
|
+
if (!options.throwOnError) {
|
|
3436
|
+
_context20.next = 14;
|
|
3437
|
+
break;
|
|
3438
|
+
}
|
|
3439
|
+
throw _context20.t0;
|
|
3440
|
+
case 14:
|
|
3298
3441
|
return _context20.abrupt("return", []);
|
|
3299
|
-
case
|
|
3442
|
+
case 15:
|
|
3300
3443
|
case "end":
|
|
3301
3444
|
return _context20.stop();
|
|
3302
3445
|
}
|
|
3303
|
-
}, _callee20, this, [[
|
|
3446
|
+
}, _callee20, this, [[3, 10]]);
|
|
3304
3447
|
}));
|
|
3305
3448
|
function loadOrdersFromSQLite() {
|
|
3306
3449
|
return _loadOrdersFromSQLite.apply(this, arguments);
|
|
@@ -3740,7 +3883,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3740
3883
|
* 用于 SSE 全量拉取与营业日窗口裁剪。
|
|
3741
3884
|
*
|
|
3742
3885
|
* @example
|
|
3743
|
-
* await this.replaceOrdersSnapshotInSQLite(orderList)
|
|
3886
|
+
* const { orders, persisted } = await this.replaceOrdersSnapshotInSQLite(orderList, 'refresh')
|
|
3744
3887
|
*/
|
|
3745
3888
|
)
|
|
3746
3889
|
}, {
|
|
@@ -3751,6 +3894,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3751
3894
|
var protectedOrdersBeforeRemoteFetch,
|
|
3752
3895
|
remoteSnapshot,
|
|
3753
3896
|
mergedSnapshot,
|
|
3897
|
+
persisted,
|
|
3754
3898
|
_args27 = arguments;
|
|
3755
3899
|
return _regeneratorRuntime().wrap(function _callee27$(_context27) {
|
|
3756
3900
|
while (1) switch (_context27.prev = _context27.next) {
|
|
@@ -3760,9 +3904,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3760
3904
|
_context27.next = 3;
|
|
3761
3905
|
break;
|
|
3762
3906
|
}
|
|
3763
|
-
return _context27.abrupt("return",
|
|
3764
|
-
|
|
3765
|
-
|
|
3907
|
+
return _context27.abrupt("return", {
|
|
3908
|
+
orders: this.compactOrderListByIdentity(orderList.map(function (order) {
|
|
3909
|
+
return _this24.normalizeRemoteSyncedOrder(order);
|
|
3910
|
+
}), "".concat(source, ".snapshotNoDb")).list,
|
|
3911
|
+
persisted: false
|
|
3912
|
+
});
|
|
3766
3913
|
case 3:
|
|
3767
3914
|
remoteSnapshot = cloneDeep(orderList).map(function (order) {
|
|
3768
3915
|
return _this24.normalizeOrderCollectionsForIngress(order, "".concat(source, ".remoteIngress"));
|
|
@@ -3770,8 +3917,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3770
3917
|
mergedSnapshot = this.compactOrderListByIdentity(remoteSnapshot.map(function (order) {
|
|
3771
3918
|
return _this24.normalizeRemoteSyncedOrder(order);
|
|
3772
3919
|
}), "".concat(source, ".remoteSnapshot")).list;
|
|
3773
|
-
|
|
3774
|
-
_context27.
|
|
3920
|
+
persisted = false;
|
|
3921
|
+
_context27.prev = 6;
|
|
3922
|
+
_context27.next = 9;
|
|
3775
3923
|
return this.runInOrderSQLiteSaveQueue( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {
|
|
3776
3924
|
var existingOrders, protectedLocalOrders, _iterator33, _step33, rawCurrentOrder, currentOrder, protectedIndex, currentNeedsProtection, orderListSnapshot;
|
|
3777
3925
|
return _regeneratorRuntime().wrap(function _callee26$(_context26) {
|
|
@@ -3884,23 +4032,27 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3884
4032
|
}
|
|
3885
4033
|
}, _callee26, null, [[10, 25, 28, 31]]);
|
|
3886
4034
|
})));
|
|
3887
|
-
case
|
|
3888
|
-
|
|
4035
|
+
case 9:
|
|
4036
|
+
persisted = true;
|
|
4037
|
+
_context27.next = 15;
|
|
3889
4038
|
break;
|
|
3890
|
-
case
|
|
3891
|
-
_context27.prev =
|
|
3892
|
-
_context27.t0 = _context27["catch"](
|
|
4039
|
+
case 12:
|
|
4040
|
+
_context27.prev = 12;
|
|
4041
|
+
_context27.t0 = _context27["catch"](6);
|
|
3893
4042
|
this.logError('全量保存订单到 SQLite 失败', {
|
|
3894
4043
|
error: _context27.t0 instanceof Error ? _context27.t0.message : String(_context27.t0),
|
|
3895
4044
|
orderList: remoteSnapshot.length
|
|
3896
4045
|
});
|
|
3897
|
-
case
|
|
3898
|
-
return _context27.abrupt("return",
|
|
3899
|
-
|
|
4046
|
+
case 15:
|
|
4047
|
+
return _context27.abrupt("return", {
|
|
4048
|
+
orders: mergedSnapshot,
|
|
4049
|
+
persisted: persisted
|
|
4050
|
+
});
|
|
4051
|
+
case 16:
|
|
3900
4052
|
case "end":
|
|
3901
4053
|
return _context27.stop();
|
|
3902
4054
|
}
|
|
3903
|
-
}, _callee27, this, [[
|
|
4055
|
+
}, _callee27, this, [[6, 12]]);
|
|
3904
4056
|
}));
|
|
3905
4057
|
function replaceOrdersSnapshotInSQLite(_x20, _x21) {
|
|
3906
4058
|
return _replaceOrdersSnapshotInSQLite.apply(this, arguments);
|
|
@@ -3942,7 +4094,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3942
4094
|
}, _callee28);
|
|
3943
4095
|
})));
|
|
3944
4096
|
case 5:
|
|
3945
|
-
this.
|
|
4097
|
+
this.clearOrderSnapshotMarker();
|
|
3946
4098
|
this.emitOrdersChanged([], 'clear');
|
|
3947
4099
|
case 7:
|
|
3948
4100
|
case "end":
|
|
@@ -25,6 +25,7 @@ export declare class ProductsModule extends BaseModule implements Module {
|
|
|
25
25
|
private quotationBridgeLoadedKey?;
|
|
26
26
|
private quotationBridgeRefreshPromise?;
|
|
27
27
|
private quotationBridgeRefreshKey?;
|
|
28
|
+
private quotationBridgeUpdatedCallback?;
|
|
28
29
|
private quotationScheduleCache;
|
|
29
30
|
private quotationScheduleCacheSource;
|
|
30
31
|
private quotationScheduleCacheLoaded;
|
|
@@ -72,6 +73,7 @@ export declare class ProductsModule extends BaseModule implements Module {
|
|
|
72
73
|
scheduleModule?: any;
|
|
73
74
|
channel?: string;
|
|
74
75
|
customer_id?: number | string;
|
|
76
|
+
onQuotationUpdated?: () => void;
|
|
75
77
|
}): Promise<void>;
|
|
76
78
|
/**
|
|
77
79
|
* 刷新桥接器内的报价单列表。
|
|
@@ -181,7 +183,9 @@ export declare class ProductsModule extends BaseModule implements Module {
|
|
|
181
183
|
/**
|
|
182
184
|
* 通过 ProductDataSource SSE 加载完整商品列表
|
|
183
185
|
*/
|
|
184
|
-
loadProductsByServer(
|
|
186
|
+
loadProductsByServer(options?: {
|
|
187
|
+
trigger?: string;
|
|
188
|
+
}): Promise<any>;
|
|
185
189
|
/**
|
|
186
190
|
* 纯请求方法:通过 HTTP 接口获取商品列表(无副作用,不触发事件、不写 IndexDB)
|
|
187
191
|
* @param params 查询参数
|
|
@@ -331,7 +335,9 @@ export declare class ProductsModule extends BaseModule implements Module {
|
|
|
331
335
|
* 拿到完整数据后一次性替换 store,清除价格缓存,触发 onProductsSyncCompleted
|
|
332
336
|
* @returns 刷新后的商品列表
|
|
333
337
|
*/
|
|
334
|
-
silentRefresh(
|
|
338
|
+
silentRefresh(options?: {
|
|
339
|
+
trigger?: string;
|
|
340
|
+
}): Promise<ProductData[]>;
|
|
335
341
|
/**
|
|
336
342
|
* 销毁同步资源(取消 pubsub 订阅、清除定时器)
|
|
337
343
|
*/
|