@pisell/pisellos 2.3.49 → 2.3.50
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/modules/Discount/index.d.ts +1 -0
- package/dist/modules/Discount/index.js +40 -11
- package/dist/modules/Discount/types.d.ts +1 -0
- package/dist/modules/Holder/index.d.ts +48 -0
- package/dist/modules/Holder/index.js +640 -0
- package/dist/modules/Holder/types.d.ts +123 -0
- package/dist/modules/Holder/types.js +1 -0
- package/dist/modules/Holder/utils.d.ts +13 -0
- package/dist/modules/Holder/utils.js +34 -0
- package/dist/modules/OpenData/index.js +2 -2
- package/dist/modules/Order/index.d.ts +3 -1
- package/dist/modules/Order/index.js +54 -25
- package/dist/modules/Order/types.d.ts +9 -0
- package/dist/modules/Order/utils.d.ts +10 -0
- package/dist/modules/Order/utils.js +35 -3
- package/dist/modules/Payment/types.d.ts +0 -8
- package/dist/modules/Payment/walletpass.d.ts +1 -7
- package/dist/modules/Payment/walletpass.js +45 -155
- package/dist/modules/Product/types.d.ts +1 -0
- package/dist/modules/ProductList/index.js +33 -14
- package/dist/modules/Quotation/index.d.ts +1 -1
- package/dist/modules/Quotation/index.js +2 -2
- package/dist/modules/ResourcePlanner/index.d.ts +24 -0
- package/dist/modules/ResourcePlanner/index.js +181 -0
- package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
- package/dist/modules/ResourcePlanner/planner.js +1069 -0
- package/dist/modules/ResourcePlanner/types.d.ts +227 -0
- package/dist/modules/ResourcePlanner/types.js +1 -0
- package/dist/modules/Rules/index.js +47 -13
- package/dist/modules/SalesSummary/index.js +12 -13
- package/dist/modules/ScanOrderLogger/index.d.ts +2 -0
- package/dist/modules/ScanOrderLogger/index.js +15 -2
- package/dist/modules/ScanOrderLogger/providers/feishu.js +45 -27
- package/dist/modules/ScanOrderLogger/types.d.ts +1 -0
- package/dist/modules/Schedule/index.d.ts +3 -1
- package/dist/modules/Schedule/index.js +21 -16
- package/dist/modules/Summary/utils.js +38 -13
- package/dist/modules/index.d.ts +2 -0
- package/dist/modules/index.js +3 -1
- package/dist/plugins/window.d.ts +1 -0
- package/dist/server/index.d.ts +14 -0
- package/dist/server/index.js +907 -793
- package/dist/server/modules/index.d.ts +1 -1
- package/dist/server/modules/order/index.d.ts +0 -16
- package/dist/server/modules/order/index.js +776 -964
- package/dist/server/modules/order/types.d.ts +0 -14
- package/dist/server/modules/order/types.js +0 -6
- package/dist/solution/BaseSales/index.d.ts +8 -3
- package/dist/solution/BaseSales/index.js +64 -50
- package/dist/solution/BookingByStep/index.d.ts +17 -2
- package/dist/solution/BookingByStep/index.js +294 -215
- package/dist/solution/BookingByStep/types.d.ts +2 -1
- package/dist/solution/BookingByStep/types.js +3 -1
- package/dist/solution/BookingByStep/utils/capacity.js +17 -1
- package/dist/solution/BookingByStep/utils/timeslots.d.ts +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +19 -12
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +2 -2
- package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +10 -2
- package/dist/solution/ScanOrder/index.d.ts +26 -14
- package/dist/solution/ScanOrder/index.js +1142 -739
- package/dist/solution/ScanOrder/types.d.ts +21 -1
- package/dist/solution/ScanOrder/utils.d.ts +8 -0
- package/dist/solution/ScanOrder/utils.js +66 -25
- package/dist/solution/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +125 -87
- package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/dist/solution/UnifiedBookingSales/index.js +1891 -0
- package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/dist/solution/UnifiedBookingSales/types.js +11 -0
- package/dist/solution/VenueBooking/index.d.ts +39 -11
- package/dist/solution/VenueBooking/index.js +1167 -841
- package/dist/solution/VenueBooking/types.d.ts +3 -0
- package/dist/solution/VenueBooking/utils/resource.js +1 -0
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +4 -4
- package/dist/solution/VenueBooking/utils/slotMerge.js +10 -5
- package/dist/solution/index.d.ts +1 -0
- package/dist/solution/index.js +2 -1
- package/dist/types/index.d.ts +1 -0
- package/lib/model/strategy/adapter/promotion/index.js +51 -0
- package/lib/modules/Discount/index.d.ts +1 -0
- package/lib/modules/Discount/index.js +9 -0
- package/lib/modules/Discount/types.d.ts +1 -0
- package/lib/modules/Holder/index.d.ts +48 -0
- package/lib/modules/Holder/index.js +402 -0
- package/lib/modules/Holder/types.d.ts +123 -0
- package/lib/modules/Holder/types.js +17 -0
- package/lib/modules/Holder/utils.d.ts +13 -0
- package/lib/modules/Holder/utils.js +71 -0
- package/lib/modules/OpenData/index.js +1 -1
- package/lib/modules/Order/index.d.ts +3 -1
- package/lib/modules/Order/index.js +26 -10
- package/lib/modules/Order/types.d.ts +9 -0
- package/lib/modules/Order/utils.d.ts +10 -0
- package/lib/modules/Order/utils.js +36 -5
- package/lib/modules/Payment/types.d.ts +0 -8
- package/lib/modules/Payment/walletpass.d.ts +1 -7
- package/lib/modules/Payment/walletpass.js +9 -107
- package/lib/modules/Product/types.d.ts +1 -0
- package/lib/modules/ProductList/index.js +40 -31
- package/lib/modules/Quotation/index.d.ts +1 -1
- package/lib/modules/Quotation/index.js +2 -2
- package/lib/modules/ResourcePlanner/index.d.ts +24 -0
- package/lib/modules/ResourcePlanner/index.js +148 -0
- package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
- package/lib/modules/ResourcePlanner/planner.js +933 -0
- package/lib/modules/ResourcePlanner/types.d.ts +227 -0
- package/lib/modules/ResourcePlanner/types.js +17 -0
- package/lib/modules/Rules/index.js +33 -16
- package/lib/modules/SalesSummary/index.js +6 -7
- package/lib/modules/ScanOrderLogger/index.d.ts +2 -0
- package/lib/modules/ScanOrderLogger/index.js +13 -1
- package/lib/modules/ScanOrderLogger/providers/feishu.js +15 -6
- package/lib/modules/ScanOrderLogger/types.d.ts +1 -0
- package/lib/modules/Schedule/index.d.ts +3 -1
- package/lib/modules/Schedule/index.js +10 -8
- package/lib/modules/Summary/utils.js +21 -1
- package/lib/modules/index.d.ts +2 -0
- package/lib/modules/index.js +5 -1
- package/lib/plugins/window.d.ts +1 -0
- package/lib/server/index.d.ts +14 -0
- package/lib/server/index.js +72 -15
- package/lib/server/modules/index.d.ts +1 -1
- package/lib/server/modules/order/index.d.ts +0 -16
- package/lib/server/modules/order/index.js +4 -140
- package/lib/server/modules/order/types.d.ts +0 -14
- package/lib/server/modules/order/types.js +0 -1
- package/lib/solution/BaseSales/index.d.ts +8 -3
- package/lib/solution/BaseSales/index.js +24 -14
- package/lib/solution/BookingByStep/index.d.ts +17 -2
- package/lib/solution/BookingByStep/index.js +60 -18
- package/lib/solution/BookingByStep/types.d.ts +2 -1
- package/lib/solution/BookingByStep/types.js +5 -0
- package/lib/solution/BookingByStep/utils/capacity.js +20 -1
- package/lib/solution/BookingByStep/utils/timeslots.d.ts +3 -1
- package/lib/solution/BookingByStep/utils/timeslots.js +19 -11
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +10 -2
- package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +2 -2
- package/lib/solution/ScanOrder/index.d.ts +26 -14
- package/lib/solution/ScanOrder/index.js +449 -182
- package/lib/solution/ScanOrder/types.d.ts +21 -1
- package/lib/solution/ScanOrder/utils.d.ts +8 -0
- package/lib/solution/ScanOrder/utils.js +31 -0
- package/lib/solution/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +14 -0
- package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
- package/lib/solution/UnifiedBookingSales/index.js +1084 -0
- package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
- package/lib/solution/UnifiedBookingSales/types.js +33 -0
- package/lib/solution/VenueBooking/index.d.ts +39 -11
- package/lib/solution/VenueBooking/index.js +322 -110
- package/lib/solution/VenueBooking/types.d.ts +3 -0
- package/lib/solution/VenueBooking/utils/resource.js +1 -0
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +4 -4
- package/lib/solution/VenueBooking/utils/slotMerge.js +6 -4
- package/lib/solution/index.d.ts +1 -0
- package/lib/solution/index.js +3 -1
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -46,12 +46,6 @@ function matchesWalletAssetCode(asset, normalizedCode) {
|
|
|
46
46
|
(identifier) => String(identifier ?? "").trim() === normalizedCode
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
|
-
function normalizeWalletAssetCode(code) {
|
|
50
|
-
return String(code ?? "").trim().toUpperCase();
|
|
51
|
-
}
|
|
52
|
-
function getWalletAssetCodeKeys(asset) {
|
|
53
|
-
return [asset == null ? void 0 : asset.code, asset == null ? void 0 : asset.encoded].map(normalizeWalletAssetCode).filter(Boolean);
|
|
54
|
-
}
|
|
55
49
|
function isWalletAssetAvailable(asset) {
|
|
56
50
|
if (!asset)
|
|
57
51
|
return false;
|
|
@@ -113,23 +107,11 @@ var WalletPassPaymentImpl = class {
|
|
|
113
107
|
this.walletInitData = null;
|
|
114
108
|
this.walletAssetsState = createInitialWalletAssetsState();
|
|
115
109
|
this.walletAssetsRequestSequence = 0;
|
|
116
|
-
this.walletAssetsBehavior = {
|
|
117
|
-
autoSelectAfterSearch: true
|
|
118
|
-
};
|
|
119
|
-
this.pendingAutoSelectSearchCodes = /* @__PURE__ */ new Set();
|
|
120
110
|
this.walletAssetsCalculationContext = {
|
|
121
111
|
orderTotalAmount: 0,
|
|
122
112
|
products: []
|
|
123
113
|
};
|
|
124
114
|
}
|
|
125
|
-
configureWalletAssetsBehavior(options) {
|
|
126
|
-
if (options.autoSelectAfterSearch === void 0)
|
|
127
|
-
return;
|
|
128
|
-
this.walletAssetsBehavior.autoSelectAfterSearch = options.autoSelectAfterSearch;
|
|
129
|
-
if (!options.autoSelectAfterSearch) {
|
|
130
|
-
this.pendingAutoSelectSearchCodes.clear();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
115
|
/**
|
|
134
116
|
* 发送事件的辅助方法
|
|
135
117
|
* 支持使用WalletPassHooks或PaymentHooks
|
|
@@ -268,25 +250,6 @@ var WalletPassPaymentImpl = class {
|
|
|
268
250
|
refreshedAssets
|
|
269
251
|
);
|
|
270
252
|
}
|
|
271
|
-
isPendingAutoSelectAsset(asset) {
|
|
272
|
-
return getWalletAssetCodeKeys(asset).some(
|
|
273
|
-
(code) => this.pendingAutoSelectSearchCodes.has(code)
|
|
274
|
-
);
|
|
275
|
-
}
|
|
276
|
-
clearPendingAutoSelectForAsset(asset) {
|
|
277
|
-
getWalletAssetCodeKeys(asset).forEach((code) => {
|
|
278
|
-
this.pendingAutoSelectSearchCodes.delete(code);
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
queuePendingAutoSelectForAssets(assets) {
|
|
282
|
-
if (!this.walletAssetsBehavior.autoSelectAfterSearch)
|
|
283
|
-
return;
|
|
284
|
-
assets.forEach((asset) => {
|
|
285
|
-
getWalletAssetCodeKeys(asset).forEach((code) => {
|
|
286
|
-
this.pendingAutoSelectSearchCodes.add(code);
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
253
|
/**
|
|
291
254
|
* 生成钱包API默认参数
|
|
292
255
|
* 根据业务数据生成标准的钱包API参数,并存储在模块中
|
|
@@ -814,12 +777,7 @@ var WalletPassPaymentImpl = class {
|
|
|
814
777
|
);
|
|
815
778
|
const selectedIds = preserveSelection ? [...this.walletAssetsState.selectedIds] : [];
|
|
816
779
|
const selectionSources = preserveSelection ? { ...this.walletAssetsState.selectionSources } : {};
|
|
817
|
-
const scanSelectedAssets = preserveSelection ? this.walletAssetsState.selectedItems.filter((asset) => {
|
|
818
|
-
const assetId = getWalletAssetId(asset);
|
|
819
|
-
return assetId !== void 0 && assetId !== null && selectionSources[String(assetId)] === "scan";
|
|
820
|
-
}) : [];
|
|
821
780
|
if (!((_a = businessData.products) == null ? void 0 : _a.length)) {
|
|
822
|
-
this.queuePendingAutoSelectForAssets(scanSelectedAssets);
|
|
823
781
|
this.generateWalletParams(businessData);
|
|
824
782
|
const restoredSearchedAssets = this.searchResults.filter(isWalletPaymentAsset).map((item) => ({
|
|
825
783
|
...item,
|
|
@@ -924,43 +882,11 @@ var WalletPassPaymentImpl = class {
|
|
|
924
882
|
}));
|
|
925
883
|
const latestSelectedIds = preserveSelection ? authoritativeSelectedIds : [];
|
|
926
884
|
const latestSelectionSources = preserveSelection ? { ...this.walletAssetsState.selectionSources } : {};
|
|
927
|
-
|
|
928
|
-
(asset) => this.isPendingAutoSelectAsset(asset) && isWalletAssetAvailable(asset)
|
|
929
|
-
) : [];
|
|
930
|
-
const requestedKeySet = new Set(
|
|
931
|
-
latestSelectedIds.map((id) => String(id))
|
|
932
|
-
);
|
|
933
|
-
pendingAutoSelectAssets.forEach((asset) => {
|
|
934
|
-
const assetId = getWalletAssetId(asset);
|
|
935
|
-
if (assetId === void 0 || assetId === null)
|
|
936
|
-
return;
|
|
937
|
-
const assetKey = String(assetId);
|
|
938
|
-
if (!requestedKeySet.has(assetKey)) {
|
|
939
|
-
requestedKeySet.add(assetKey);
|
|
940
|
-
latestSelectedIds.push(assetId);
|
|
941
|
-
}
|
|
942
|
-
latestSelectionSources[assetKey] = "scan";
|
|
943
|
-
});
|
|
944
|
-
const nextState = this.recalculateWalletAssets(
|
|
885
|
+
return this.recalculateWalletAssets(
|
|
945
886
|
items,
|
|
946
887
|
latestSelectedIds,
|
|
947
888
|
latestSelectionSources
|
|
948
889
|
);
|
|
949
|
-
const selectedKeySet = new Set(
|
|
950
|
-
nextState.selectedIds.map((id) => String(id))
|
|
951
|
-
);
|
|
952
|
-
pendingAutoSelectAssets.forEach((asset) => {
|
|
953
|
-
const assetId = getWalletAssetId(asset);
|
|
954
|
-
if (assetId !== void 0 && assetId !== null && selectedKeySet.has(String(assetId))) {
|
|
955
|
-
this.clearPendingAutoSelectForAsset(asset);
|
|
956
|
-
}
|
|
957
|
-
});
|
|
958
|
-
const droppedScanSelectedAssets = scanSelectedAssets.filter((asset) => {
|
|
959
|
-
const assetId = getWalletAssetId(asset);
|
|
960
|
-
return assetId !== void 0 && assetId !== null && !selectedKeySet.has(String(assetId));
|
|
961
|
-
});
|
|
962
|
-
this.queuePendingAutoSelectForAssets(droppedScanSelectedAssets);
|
|
963
|
-
return nextState;
|
|
964
890
|
} catch (error) {
|
|
965
891
|
if (requestSequence !== this.walletAssetsRequestSequence) {
|
|
966
892
|
return this.getWalletAssetsState();
|
|
@@ -1000,9 +926,6 @@ var WalletPassPaymentImpl = class {
|
|
|
1000
926
|
return {
|
|
1001
927
|
state: this.getWalletAssetsState(),
|
|
1002
928
|
searchResults: [...this.searchResults],
|
|
1003
|
-
pendingAutoSelectSearchCodes: [
|
|
1004
|
-
...this.pendingAutoSelectSearchCodes
|
|
1005
|
-
],
|
|
1006
929
|
walletParams: this.walletParams ? { ...this.walletParams } : null,
|
|
1007
930
|
calculationContext: {
|
|
1008
931
|
orderTotalAmount: this.walletAssetsCalculationContext.orderTotalAmount,
|
|
@@ -1016,9 +939,6 @@ var WalletPassPaymentImpl = class {
|
|
|
1016
939
|
return this.getWalletAssetsState();
|
|
1017
940
|
this.walletAssetsRequestSequence += 1;
|
|
1018
941
|
this.searchResults = Array.isArray(snapshot.searchResults) ? [...snapshot.searchResults] : [];
|
|
1019
|
-
this.pendingAutoSelectSearchCodes = this.walletAssetsBehavior.autoSelectAfterSearch && Array.isArray(snapshot.pendingAutoSelectSearchCodes) ? new Set(
|
|
1020
|
-
snapshot.pendingAutoSelectSearchCodes.map(normalizeWalletAssetCode).filter(Boolean)
|
|
1021
|
-
) : /* @__PURE__ */ new Set();
|
|
1022
942
|
this.walletParams = snapshot.walletParams ? { ...snapshot.walletParams } : null;
|
|
1023
943
|
this.walletAssetsCalculationContext = {
|
|
1024
944
|
orderTotalAmount: Number(
|
|
@@ -1037,9 +957,6 @@ var WalletPassPaymentImpl = class {
|
|
|
1037
957
|
}
|
|
1038
958
|
selectWalletAsset(assetId, options) {
|
|
1039
959
|
const assetKey = String(assetId);
|
|
1040
|
-
const asset = this.walletAssetsState.items.find(
|
|
1041
|
-
(item) => getWalletAssetKey(item) === assetKey
|
|
1042
|
-
);
|
|
1043
960
|
const committedKeys = new Set(
|
|
1044
961
|
this.walletAssetsState.committedIds.map((id) => String(id))
|
|
1045
962
|
);
|
|
@@ -1051,23 +968,20 @@ var WalletPassPaymentImpl = class {
|
|
|
1051
968
|
const selectionSources = { ...this.walletAssetsState.selectionSources };
|
|
1052
969
|
delete selectionSources[assetKey];
|
|
1053
970
|
if (options.selected) {
|
|
971
|
+
const asset = this.walletAssetsState.items.find(
|
|
972
|
+
(item) => getWalletAssetKey(item) === assetKey
|
|
973
|
+
);
|
|
1054
974
|
if (!asset || !isWalletAssetAvailable(asset)) {
|
|
1055
975
|
return this.getWalletAssetsState();
|
|
1056
976
|
}
|
|
1057
977
|
selectedIds.push(assetId);
|
|
1058
978
|
selectionSources[assetKey] = options.source || "manual";
|
|
1059
|
-
} else if (asset) {
|
|
1060
|
-
this.clearPendingAutoSelectForAsset(asset);
|
|
1061
979
|
}
|
|
1062
|
-
|
|
980
|
+
return this.recalculateWalletAssets(
|
|
1063
981
|
this.walletAssetsState.items,
|
|
1064
982
|
selectedIds,
|
|
1065
983
|
selectionSources
|
|
1066
984
|
);
|
|
1067
|
-
if (options.selected && asset && nextState.selectedIds.some((id) => String(id) === assetKey)) {
|
|
1068
|
-
this.clearPendingAutoSelectForAsset(asset);
|
|
1069
|
-
}
|
|
1070
|
-
return nextState;
|
|
1071
985
|
}
|
|
1072
986
|
async scanWalletAssetAsync(code) {
|
|
1073
987
|
const normalizedCode = String(code || "").trim();
|
|
@@ -1110,34 +1024,24 @@ var WalletPassPaymentImpl = class {
|
|
|
1110
1024
|
};
|
|
1111
1025
|
}
|
|
1112
1026
|
const items = mergeWalletAssets(this.walletAssetsState.items, [asset]);
|
|
1113
|
-
|
|
1027
|
+
this.recalculateWalletAssets(
|
|
1114
1028
|
items,
|
|
1115
1029
|
this.walletAssetsState.selectedIds,
|
|
1116
1030
|
this.walletAssetsState.selectionSources
|
|
1117
1031
|
);
|
|
1118
1032
|
const assetId = getWalletAssetId(asset);
|
|
1119
|
-
const selected =
|
|
1033
|
+
const selected = assetId !== void 0 && isWalletAssetAvailable(asset) ? this.selectWalletAsset(assetId, {
|
|
1120
1034
|
selected: true,
|
|
1121
1035
|
source: "scan"
|
|
1122
|
-
}) :
|
|
1123
|
-
const isSelected = assetId !== void 0 && selected.selectedIds.some((id) => String(id) === String(assetId));
|
|
1124
|
-
if (isSelected) {
|
|
1125
|
-
this.clearPendingAutoSelectForAsset(asset);
|
|
1126
|
-
} else if (this.walletAssetsBehavior.autoSelectAfterSearch) {
|
|
1127
|
-
this.pendingAutoSelectSearchCodes.add(
|
|
1128
|
-
normalizeWalletAssetCode(normalizedCode)
|
|
1129
|
-
);
|
|
1130
|
-
this.queuePendingAutoSelectForAssets([asset]);
|
|
1131
|
-
}
|
|
1036
|
+
}) : this.getWalletAssetsState();
|
|
1132
1037
|
return {
|
|
1133
1038
|
type: result.type,
|
|
1134
1039
|
asset,
|
|
1135
|
-
selected:
|
|
1040
|
+
selected: assetId !== void 0 && selected.selectedIds.some((id) => String(id) === String(assetId)),
|
|
1136
1041
|
state: selected
|
|
1137
1042
|
};
|
|
1138
1043
|
}
|
|
1139
1044
|
clearWalletAssetSelection() {
|
|
1140
|
-
this.pendingAutoSelectSearchCodes.clear();
|
|
1141
1045
|
return this.recalculateWalletAssets(
|
|
1142
1046
|
this.walletAssetsState.items,
|
|
1143
1047
|
[],
|
|
@@ -1252,7 +1156,6 @@ var WalletPassPaymentImpl = class {
|
|
|
1252
1156
|
*/
|
|
1253
1157
|
clearSearchResults() {
|
|
1254
1158
|
this.searchResults = [];
|
|
1255
|
-
this.pendingAutoSelectSearchCodes.clear();
|
|
1256
1159
|
this.paymentModule.logInfo("[WalletPass] 搜索结果缓存已清除");
|
|
1257
1160
|
}
|
|
1258
1161
|
/**
|
|
@@ -1275,7 +1178,6 @@ var WalletPassPaymentImpl = class {
|
|
|
1275
1178
|
this.walletRecommendList = [];
|
|
1276
1179
|
this.userIdentificationCodes = [];
|
|
1277
1180
|
this.searchResults = [];
|
|
1278
|
-
this.pendingAutoSelectSearchCodes.clear();
|
|
1279
1181
|
this.walletParams = null;
|
|
1280
1182
|
this.walletInitData = null;
|
|
1281
1183
|
this.walletAssetsRequestSequence += 1;
|
|
@@ -106,39 +106,48 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
106
106
|
} catch (error) {
|
|
107
107
|
console.error(error);
|
|
108
108
|
}
|
|
109
|
+
const channelMap = {
|
|
110
|
+
online_store: "online-store",
|
|
111
|
+
scan_to_order: "online-store",
|
|
112
|
+
"scan-to-order": "online-store",
|
|
113
|
+
scan_to_order_2: "mobile_order",
|
|
114
|
+
scan_to_order_3: "scantoorder3"
|
|
115
|
+
};
|
|
116
|
+
const rawApplicationCode = (_b = this.otherParams) == null ? void 0 : _b.channel;
|
|
117
|
+
const mappedApplicationCode = typeof rawApplicationCode === "string" ? channelMap[rawApplicationCode] || rawApplicationCode : rawApplicationCode;
|
|
118
|
+
const queryPayload = {
|
|
119
|
+
open_quotation: 1,
|
|
120
|
+
open_bundle: 0,
|
|
121
|
+
exclude_extension_type: [
|
|
122
|
+
"product_party",
|
|
123
|
+
"product_event",
|
|
124
|
+
"product_series_event",
|
|
125
|
+
"product_package_ticket",
|
|
126
|
+
"ticket",
|
|
127
|
+
"event_item"
|
|
128
|
+
],
|
|
129
|
+
with: ["category", "collection", "resourceRelation"],
|
|
130
|
+
status,
|
|
131
|
+
num: 500,
|
|
132
|
+
skip: 1,
|
|
133
|
+
customer_id,
|
|
134
|
+
...Array.isArray(category_ids) && category_ids.length ? { category_ids } : {},
|
|
135
|
+
...Array.isArray(product_ids) && product_ids.length ? { ids: product_ids } : {},
|
|
136
|
+
...Array.isArray(collection) && collection.length ? { collection } : {},
|
|
137
|
+
front_end_cache_id: cacheId,
|
|
138
|
+
...Array.isArray(menu_list_ids) && menu_list_ids.length ? { menu_list_ids } : {},
|
|
139
|
+
with_count,
|
|
140
|
+
// client_schedule_ids: schedule_ids,
|
|
141
|
+
schedule_date,
|
|
142
|
+
application_code: mappedApplicationCode,
|
|
143
|
+
is_eject: 1,
|
|
144
|
+
with_schedule,
|
|
145
|
+
schedule_datetime,
|
|
146
|
+
extension_type
|
|
147
|
+
};
|
|
109
148
|
const productsData = await this.request.post(
|
|
110
149
|
`/product/query`,
|
|
111
|
-
|
|
112
|
-
open_quotation: 1,
|
|
113
|
-
open_bundle: 0,
|
|
114
|
-
exclude_extension_type: [
|
|
115
|
-
"product_party",
|
|
116
|
-
"product_event",
|
|
117
|
-
"product_series_event",
|
|
118
|
-
"product_package_ticket",
|
|
119
|
-
"ticket",
|
|
120
|
-
"event_item"
|
|
121
|
-
],
|
|
122
|
-
with: ["category", "collection", "resourceRelation"],
|
|
123
|
-
status,
|
|
124
|
-
num: 500,
|
|
125
|
-
skip: 1,
|
|
126
|
-
customer_id,
|
|
127
|
-
category_ids,
|
|
128
|
-
ids: product_ids,
|
|
129
|
-
collection,
|
|
130
|
-
front_end_cache_id: cacheId,
|
|
131
|
-
menu_list_ids,
|
|
132
|
-
with_count,
|
|
133
|
-
// client_schedule_ids: schedule_ids,
|
|
134
|
-
schedule_date,
|
|
135
|
-
application_code: (_b = this.otherParams) == null ? void 0 : _b.channel,
|
|
136
|
-
is_eject: 1,
|
|
137
|
-
with_schedule,
|
|
138
|
-
schedule_datetime,
|
|
139
|
-
extension_type,
|
|
140
|
-
strategy_context
|
|
141
|
-
},
|
|
150
|
+
queryPayload,
|
|
142
151
|
{ osServer: true, callback: options == null ? void 0 : options.callback, subscriberId: options == null ? void 0 : options.subscriberId, customToast: () => {
|
|
143
152
|
} }
|
|
144
153
|
);
|
|
@@ -21,7 +21,7 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
21
21
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
22
22
|
* Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
|
|
23
23
|
*
|
|
24
|
-
* Priority: iterates quotations already sorted by `sort`
|
|
24
|
+
* Priority: iterates quotations already sorted by `sort` descending (highest = highest priority).
|
|
25
25
|
* First matching quotation whose schedule covers `datetime` and whose product_data contains
|
|
26
26
|
* the requested productId wins.
|
|
27
27
|
*/
|
|
@@ -52,7 +52,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
52
52
|
{ useCache: false, osServer: true }
|
|
53
53
|
);
|
|
54
54
|
const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
|
|
55
|
-
list.sort((a, b) =>
|
|
55
|
+
list.sort((a, b) => b.sort - a.sort);
|
|
56
56
|
this.store.list = list;
|
|
57
57
|
}
|
|
58
58
|
getQuotationList() {
|
|
@@ -96,7 +96,7 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
96
96
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
97
97
|
* Returns the price as a string (e.g. "300.00"), or null if no quotation applies.
|
|
98
98
|
*
|
|
99
|
-
* Priority: iterates quotations already sorted by `sort`
|
|
99
|
+
* Priority: iterates quotations already sorted by `sort` descending (highest = highest priority).
|
|
100
100
|
* First matching quotation whose schedule covers `datetime` and whose product_data contains
|
|
101
101
|
* the requested productId wins.
|
|
102
102
|
*/
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseModule } from '../BaseModule';
|
|
2
|
+
import type { Module, ModuleOptions, PisellCore } from '../../types';
|
|
3
|
+
import type { ResourcePlannerAssignmentResult, ResourcePlannerAssignableSlotResult, ResourcePlannerContextInput, ResourcePlannerProjection, ResourcePlannerQuery, ResourcePlannerSelectionPatch, ResourcePlannerSnapshot, ResourcePlannerValidationResult } from './types';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './planner';
|
|
6
|
+
export declare enum ResourcePlannerHooks {
|
|
7
|
+
onContextChanged = "resourcePlanner:onContextChanged",
|
|
8
|
+
onSelectionChanged = "resourcePlanner:onSelectionChanged",
|
|
9
|
+
onProjectionChanged = "resourcePlanner:onProjectionChanged"
|
|
10
|
+
}
|
|
11
|
+
export declare class ResourcePlannerModule extends BaseModule implements Module {
|
|
12
|
+
protected defaultName: string;
|
|
13
|
+
protected defaultVersion: string;
|
|
14
|
+
private store;
|
|
15
|
+
initialize(core: PisellCore, options: ModuleOptions): Promise<void>;
|
|
16
|
+
setContext(input: ResourcePlannerContextInput): ResourcePlannerSnapshot;
|
|
17
|
+
mergeContext(input: ResourcePlannerContextInput): ResourcePlannerSnapshot;
|
|
18
|
+
setSelectionPatch(patch: ResourcePlannerSelectionPatch): ResourcePlannerSnapshot;
|
|
19
|
+
queryAvailability(query?: ResourcePlannerQuery): ResourcePlannerProjection;
|
|
20
|
+
autoAssign(query?: ResourcePlannerQuery): ResourcePlannerAssignmentResult;
|
|
21
|
+
resolveAssignableSlots(query?: ResourcePlannerQuery): ResourcePlannerAssignableSlotResult;
|
|
22
|
+
validateSelection(): ResourcePlannerValidationResult;
|
|
23
|
+
getSnapshot(): ResourcePlannerSnapshot;
|
|
24
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/modules/ResourcePlanner/index.ts
|
|
21
|
+
var ResourcePlanner_exports = {};
|
|
22
|
+
__export(ResourcePlanner_exports, {
|
|
23
|
+
ResourcePlannerHooks: () => ResourcePlannerHooks,
|
|
24
|
+
ResourcePlannerModule: () => ResourcePlannerModule
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(ResourcePlanner_exports);
|
|
27
|
+
var import_BaseModule = require("../BaseModule");
|
|
28
|
+
var import_planner = require("./planner");
|
|
29
|
+
__reExport(ResourcePlanner_exports, require("./types"), module.exports);
|
|
30
|
+
__reExport(ResourcePlanner_exports, require("./planner"), module.exports);
|
|
31
|
+
var ResourcePlannerHooks = /* @__PURE__ */ ((ResourcePlannerHooks2) => {
|
|
32
|
+
ResourcePlannerHooks2["onContextChanged"] = "resourcePlanner:onContextChanged";
|
|
33
|
+
ResourcePlannerHooks2["onSelectionChanged"] = "resourcePlanner:onSelectionChanged";
|
|
34
|
+
ResourcePlannerHooks2["onProjectionChanged"] = "resourcePlanner:onProjectionChanged";
|
|
35
|
+
return ResourcePlannerHooks2;
|
|
36
|
+
})(ResourcePlannerHooks || {});
|
|
37
|
+
var ResourcePlannerModule = class extends import_BaseModule.BaseModule {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments);
|
|
40
|
+
this.defaultName = "resourcePlanner";
|
|
41
|
+
this.defaultVersion = "1.0.0";
|
|
42
|
+
}
|
|
43
|
+
async initialize(core, options) {
|
|
44
|
+
this.core = core;
|
|
45
|
+
const initialState = options.initialState;
|
|
46
|
+
this.store = {
|
|
47
|
+
context: (0, import_planner.normalizePlannerContext)((initialState == null ? void 0 : initialState.context) || import_planner.DEFAULT_RESOURCE_PLANNER_CONTEXT),
|
|
48
|
+
selection: (initialState == null ? void 0 : initialState.selection) || { ...import_planner.DEFAULT_RESOURCE_PLANNER_SELECTION },
|
|
49
|
+
projection: (initialState == null ? void 0 : initialState.projection) || null,
|
|
50
|
+
version: (initialState == null ? void 0 : initialState.version) || 0
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
setContext(input) {
|
|
54
|
+
this.store.context = (0, import_planner.normalizePlannerContext)(input);
|
|
55
|
+
this.store.version += 1;
|
|
56
|
+
this.store.projection = null;
|
|
57
|
+
const snapshot = this.getSnapshot();
|
|
58
|
+
void this.core.effects.emit(`${this.name}:contextChanged`, snapshot);
|
|
59
|
+
return snapshot;
|
|
60
|
+
}
|
|
61
|
+
mergeContext(input) {
|
|
62
|
+
return this.setContext({
|
|
63
|
+
...this.store.context,
|
|
64
|
+
...input,
|
|
65
|
+
products: input.products || this.store.context.products,
|
|
66
|
+
resources: input.resources || this.store.context.resources,
|
|
67
|
+
externalEvents: input.externalEvents || this.store.context.externalEvents
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
setSelectionPatch(patch) {
|
|
71
|
+
const assignments = patch.assignments ? patch.replaceAssignments === false ? [...this.store.selection.assignments, ...patch.assignments] : patch.assignments : this.store.selection.assignments;
|
|
72
|
+
this.store.selection = {
|
|
73
|
+
...this.store.selection,
|
|
74
|
+
...patch,
|
|
75
|
+
productIds: patch.productIds || this.store.selection.productIds,
|
|
76
|
+
resourceIds: patch.resourceIds || this.store.selection.resourceIds,
|
|
77
|
+
assignments
|
|
78
|
+
};
|
|
79
|
+
this.store.version += 1;
|
|
80
|
+
const snapshot = this.getSnapshot();
|
|
81
|
+
void this.core.effects.emit(`${this.name}:selectionChanged`, snapshot);
|
|
82
|
+
return snapshot;
|
|
83
|
+
}
|
|
84
|
+
queryAvailability(query = {}) {
|
|
85
|
+
const mergedQuery = {
|
|
86
|
+
mode: this.store.selection.mode,
|
|
87
|
+
productIds: this.store.selection.productIds,
|
|
88
|
+
date: this.store.selection.date,
|
|
89
|
+
startTime: this.store.selection.startTime,
|
|
90
|
+
endTime: this.store.selection.endTime,
|
|
91
|
+
resourceIds: this.store.selection.resourceIds,
|
|
92
|
+
...query
|
|
93
|
+
};
|
|
94
|
+
const projection = (0, import_planner.queryPlannerAvailability)(this.store.context, mergedQuery);
|
|
95
|
+
this.store.projection = projection;
|
|
96
|
+
this.store.version += 1;
|
|
97
|
+
void this.core.effects.emit(`${this.name}:projectionChanged`, this.getSnapshot());
|
|
98
|
+
return projection;
|
|
99
|
+
}
|
|
100
|
+
autoAssign(query = {}) {
|
|
101
|
+
const result = (0, import_planner.autoAssignResources)(this.store.context, {
|
|
102
|
+
mode: this.store.selection.mode,
|
|
103
|
+
productIds: this.store.selection.productIds,
|
|
104
|
+
date: this.store.selection.date,
|
|
105
|
+
startTime: this.store.selection.startTime,
|
|
106
|
+
endTime: this.store.selection.endTime,
|
|
107
|
+
resourceIds: this.store.selection.resourceIds,
|
|
108
|
+
...query
|
|
109
|
+
});
|
|
110
|
+
const resourceIds = Array.from(new Map(
|
|
111
|
+
result.assignments.map((assignment) => [String(assignment.resourceId), assignment.resourceId])
|
|
112
|
+
).values());
|
|
113
|
+
this.setSelectionPatch({
|
|
114
|
+
assignments: result.assignments,
|
|
115
|
+
...resourceIds.length ? { resourceIds } : {}
|
|
116
|
+
});
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
resolveAssignableSlots(query = {}) {
|
|
120
|
+
return (0, import_planner.resolveAssignableSlots)(this.store.context, {
|
|
121
|
+
mode: this.store.selection.mode,
|
|
122
|
+
productIds: this.store.selection.productIds,
|
|
123
|
+
date: this.store.selection.date,
|
|
124
|
+
startTime: this.store.selection.startTime,
|
|
125
|
+
endTime: this.store.selection.endTime,
|
|
126
|
+
resourceIds: this.store.selection.resourceIds,
|
|
127
|
+
...query
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
validateSelection() {
|
|
131
|
+
return (0, import_planner.validateAssignments)(this.store.context, this.store.selection);
|
|
132
|
+
}
|
|
133
|
+
getSnapshot() {
|
|
134
|
+
return {
|
|
135
|
+
context: this.store.context,
|
|
136
|
+
selection: this.store.selection,
|
|
137
|
+
projection: this.store.projection,
|
|
138
|
+
version: this.store.version
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
143
|
+
0 && (module.exports = {
|
|
144
|
+
ResourcePlannerHooks,
|
|
145
|
+
ResourcePlannerModule,
|
|
146
|
+
...require("./types"),
|
|
147
|
+
...require("./planner")
|
|
148
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ResourcePlannerAssignmentResult, ResourcePlannerAssignableSlotResult, ResourcePlannerAvailabilityCell, ResourcePlannerContextInput, ResourcePlannerDemandInterval, ResourcePlannerProduct, ResourcePlannerProjection, ResourcePlannerQuery, ResourcePlannerResource, ResourcePlannerSelection, ResourcePlannerValidationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_RESOURCE_PLANNER_CONTEXT: Required<ResourcePlannerContextInput>;
|
|
3
|
+
export declare const DEFAULT_RESOURCE_PLANNER_SELECTION: ResourcePlannerSelection;
|
|
4
|
+
export declare function normalizePlannerContext(input?: ResourcePlannerContextInput): Required<ResourcePlannerContextInput>;
|
|
5
|
+
export declare function buildDemandIntervals(products: ResourcePlannerProduct[], query: ResourcePlannerQuery, context?: Required<ResourcePlannerContextInput>): ResourcePlannerDemandInterval[];
|
|
6
|
+
export declare function evaluateResourceForInterval(params: {
|
|
7
|
+
resource: ResourcePlannerResource;
|
|
8
|
+
interval: ResourcePlannerDemandInterval;
|
|
9
|
+
context: Required<ResourcePlannerContextInput>;
|
|
10
|
+
}): ResourcePlannerAvailabilityCell;
|
|
11
|
+
export declare function queryPlannerAvailability(contextInput: ResourcePlannerContextInput, query?: ResourcePlannerQuery): ResourcePlannerProjection;
|
|
12
|
+
export declare function resolveAssignableSlots(contextInput: ResourcePlannerContextInput, query?: ResourcePlannerQuery): ResourcePlannerAssignableSlotResult;
|
|
13
|
+
export declare function autoAssignResources(contextInput: ResourcePlannerContextInput, query?: ResourcePlannerQuery): ResourcePlannerAssignmentResult;
|
|
14
|
+
export declare function validateAssignments(contextInput: ResourcePlannerContextInput, selection: ResourcePlannerSelection): ResourcePlannerValidationResult;
|