@pisell/pisellos 0.0.569 → 0.10.2
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.js +10 -6
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
- package/dist/model/strategy/adapter/walletPass/example.js +26 -3
- package/dist/model/strategy/adapter/walletPass/index.js +5 -5
- package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
- package/dist/model/strategy/strategy-example.js +19 -5
- package/dist/modules/BaseModule.d.ts +1 -1
- package/dist/modules/BaseModule.js +8 -10
- package/dist/modules/Cart/index.js +3 -0
- package/dist/modules/Cart/utils/cartProduct.js +1 -0
- package/dist/modules/Cart/utils/cartResource.js +0 -2
- package/dist/modules/Cart/utils/changePrice.js +9 -16
- package/dist/modules/Date/index.js +5 -1
- package/dist/modules/Discount/index.d.ts +0 -1
- package/dist/modules/Discount/index.js +7 -22
- package/dist/modules/Discount/types.d.ts +0 -1
- package/dist/modules/OpenData/index.js +2 -0
- package/dist/modules/Order/index.js +70 -40
- package/dist/modules/Payment/index.js +162 -97
- package/dist/modules/Payment/types.d.ts +4 -8
- package/dist/modules/Payment/walletpass.d.ts +0 -2
- package/dist/modules/Payment/walletpass.js +5 -4
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +3 -12
- package/dist/modules/ProductList/types.d.ts +0 -1
- package/dist/modules/Rules/index.js +126 -427
- package/dist/modules/SalesSummary/utils.js +1 -2
- package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
- package/dist/modules/Schedule/index.js +1 -0
- package/dist/modules/Schedule/utils.js +1 -0
- package/dist/modules/Step/index.js +1 -0
- package/dist/modules/Summary/utils.js +22 -43
- package/dist/plugins/request.js +4 -1
- package/dist/plugins/window.js +6 -2
- package/dist/server/index.js +129 -97
- package/dist/server/modules/menu/index.js +41 -32
- package/dist/server/modules/order/index.js +4 -2
- package/dist/server/modules/products/index.js +42 -24
- package/dist/server/modules/quotation/index.js +38 -29
- package/dist/server/modules/resource/index.js +4 -3
- package/dist/server/modules/schedule/index.js +35 -27
- package/dist/server/utils/product.js +1 -0
- package/dist/solution/BaseSales/index.js +41 -38
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +60 -11
- package/dist/solution/BookingByStep/utils/capacity.js +11 -1
- package/dist/solution/BookingByStep/utils/resources.js +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +2 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
- package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
- package/dist/solution/BuyTickets/index.js +12 -9
- package/dist/solution/Checkout/index.js +252 -177
- package/dist/solution/Checkout/utils/index.js +16 -4
- package/dist/solution/RegisterAndLogin/index.js +76 -30
- package/dist/solution/ScanOrder/index.js +60 -50
- package/dist/solution/ShopDiscount/index.js +14 -15
- package/dist/solution/ShopDiscount/types.d.ts +4 -5
- package/dist/solution/ShopDiscount/utils.d.ts +0 -9
- package/dist/solution/ShopDiscount/utils.js +0 -9
- package/dist/solution/VenueBooking/index.d.ts +3 -31
- package/dist/solution/VenueBooking/index.js +496 -651
- package/dist/solution/VenueBooking/types.d.ts +1 -3
- package/dist/solution/VenueBooking/types.js +0 -1
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/task.js +18 -15
- package/dist/utils/watch.js +1 -0
- package/lib/apis/picoding.js +0 -2
- package/lib/core/index.js +132 -130
- package/lib/effects/index.js +57 -46
- package/lib/index.d.ts +0 -1
- package/lib/index.js +50 -92
- package/lib/model/index.js +21 -14
- package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
- package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
- package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
- package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
- package/lib/model/strategy/adapter/index.js +64 -100
- package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
- package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
- package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
- package/lib/model/strategy/adapter/itemRule/index.js +57 -83
- package/lib/model/strategy/adapter/itemRule/type.js +36 -97
- package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
- package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
- package/lib/model/strategy/adapter/promotion/examples.js +159 -139
- package/lib/model/strategy/adapter/promotion/index.js +49 -1
- package/lib/model/strategy/adapter/promotion/type.js +35 -199
- package/lib/model/strategy/adapter/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
- package/lib/model/strategy/adapter/walletPass/example.js +190 -217
- package/lib/model/strategy/adapter/walletPass/index.js +51 -75
- package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
- package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/lib/model/strategy/adapter/walletPass/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
- package/lib/model/strategy/engine.js +168 -270
- package/lib/model/strategy/index.js +34 -49
- package/lib/model/strategy/strategy-example.js +239 -243
- package/lib/model/strategy/type.js +40 -100
- package/lib/modules/Account/index.js +53 -39
- package/lib/modules/Account/types.js +33 -20
- package/lib/modules/AccountList/index.js +154 -116
- package/lib/modules/AccountList/types.js +31 -30
- package/lib/modules/AccountList/utils.js +30 -18
- package/lib/modules/BaseModule.d.ts +1 -1
- package/lib/modules/BaseModule.js +46 -25
- package/lib/modules/BookingContext/index.js +136 -158
- package/lib/modules/BookingContext/types.js +32 -46
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
- package/lib/modules/BookingContext/utils/flexible.js +55 -38
- package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
- package/lib/modules/BookingContext/utils/index.js +41 -124
- package/lib/modules/BookingContext/utils/noResource.js +70 -58
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
- package/lib/modules/BookingContext/utils/productExtend.js +155 -202
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
- package/lib/modules/BookingContext/utils/resources.js +167 -209
- package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
- package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
- package/lib/modules/Cart/index.js +124 -170
- package/lib/modules/Cart/types.js +51 -46
- package/lib/modules/Cart/utils/cartAccount.js +39 -40
- package/lib/modules/Cart/utils/cartDate.js +61 -56
- package/lib/modules/Cart/utils/cartDiscount.js +33 -28
- package/lib/modules/Cart/utils/cartNote.js +32 -27
- package/lib/modules/Cart/utils/cartProduct.js +251 -321
- package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
- package/lib/modules/Cart/utils/cartResource.js +78 -72
- package/lib/modules/Cart/utils/changePrice.js +50 -28
- package/lib/modules/Cart/utils/index.js +48 -106
- package/lib/modules/Customer/constants.js +34 -13
- package/lib/modules/Customer/index.js +169 -232
- package/lib/modules/Customer/types.js +35 -38
- package/lib/modules/Date/index.js +115 -116
- package/lib/modules/Date/types.js +28 -16
- package/lib/modules/Date/utils.js +123 -174
- package/lib/modules/Discount/index.d.ts +0 -1
- package/lib/modules/Discount/index.js +128 -130
- package/lib/modules/Discount/types.d.ts +0 -1
- package/lib/modules/Discount/types.js +31 -9
- package/lib/modules/Guests/index.js +56 -30
- package/lib/modules/Guests/types.js +33 -23
- package/lib/modules/Holder/index.js +189 -209
- package/lib/modules/Holder/types.js +16 -4
- package/lib/modules/Holder/utils.js +49 -20
- package/lib/modules/OpenData/index.js +76 -69
- package/lib/modules/OpenData/types.js +16 -4
- package/lib/modules/OpenData/utils.js +78 -44
- package/lib/modules/Order/index.js +1909 -1572
- package/lib/modules/Order/types.js +35 -78
- package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
- package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
- package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
- package/lib/modules/Order/utils.js +634 -799
- package/lib/modules/Payment/cash.js +33 -20
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
- package/lib/modules/Payment/eftpos.js +30 -16
- package/lib/modules/Payment/index.js +378 -518
- package/lib/modules/Payment/mx51.js +0 -1
- package/lib/modules/Payment/types.d.ts +4 -8
- package/lib/modules/Payment/types.js +107 -216
- package/lib/modules/Payment/utils.js +48 -51
- package/lib/modules/Payment/walletpass.d.ts +0 -2
- package/lib/modules/Payment/walletpass.js +211 -226
- package/lib/modules/Product/index.js +46 -51
- package/lib/modules/Product/types.js +16 -4
- package/lib/modules/Product/utils.js +33 -32
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +117 -117
- package/lib/modules/ProductList/types.d.ts +0 -1
- package/lib/modules/ProductList/types.js +31 -9
- package/lib/modules/Quotation/index.js +100 -66
- package/lib/modules/Quotation/types.js +16 -4
- package/lib/modules/Resource/index.js +59 -27
- package/lib/modules/Resource/types.js +32 -22
- package/lib/modules/Resource/utils.js +38 -30
- package/lib/modules/ResourcePlanner/index.js +61 -60
- package/lib/modules/ResourcePlanner/planner.js +384 -346
- package/lib/modules/ResourcePlanner/types.js +16 -4
- package/lib/modules/Rules/index.js +903 -1475
- package/lib/modules/Rules/types.js +40 -17
- package/lib/modules/SalesSummary/index.js +90 -85
- package/lib/modules/SalesSummary/types.js +16 -4
- package/lib/modules/SalesSummary/utils.js +427 -351
- package/lib/modules/ScanOrderLogger/index.js +79 -59
- package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
- package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
- package/lib/modules/ScanOrderLogger/types.js +16 -4
- package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
- package/lib/modules/Schedule/index.js +114 -100
- package/lib/modules/Schedule/type.js +16 -4
- package/lib/modules/Schedule/types.js +16 -4
- package/lib/modules/Schedule/utils.js +291 -433
- package/lib/modules/Step/index.js +52 -40
- package/lib/modules/Step/tyeps.js +16 -4
- package/lib/modules/Summary/index.js +71 -66
- package/lib/modules/Summary/types.js +16 -4
- package/lib/modules/Summary/utils.js +418 -791
- package/lib/modules/SurchargeList/index.js +60 -46
- package/lib/modules/SurchargeList/types.js +16 -4
- package/lib/modules/index.js +63 -245
- package/lib/plugins/app.js +16 -4
- package/lib/plugins/index.js +25 -36
- package/lib/plugins/request.js +126 -137
- package/lib/plugins/shopStore.js +16 -4
- package/lib/plugins/user.js +16 -4
- package/lib/plugins/window.js +179 -171
- package/lib/server/index.js +2337 -2675
- package/lib/server/modules/floor-plan/index.js +123 -102
- package/lib/server/modules/floor-plan/types.js +30 -15
- package/lib/server/modules/index.js +68 -106
- package/lib/server/modules/menu/index.js +122 -146
- package/lib/server/modules/menu/types.js +31 -18
- package/lib/server/modules/order/index.js +642 -567
- package/lib/server/modules/order/types.js +32 -117
- package/lib/server/modules/order/utils/filterBookings.js +194 -219
- package/lib/server/modules/order/utils/filterOrders.js +92 -118
- package/lib/server/modules/payment/index.js +83 -59
- package/lib/server/modules/payment/types.js +16 -4
- package/lib/server/modules/products/index.js +459 -575
- package/lib/server/modules/products/types.js +34 -44
- package/lib/server/modules/quotation/index.js +172 -137
- package/lib/server/modules/quotation/types.js +31 -21
- package/lib/server/modules/resource/index.js +184 -213
- package/lib/server/modules/resource/types.js +33 -42
- package/lib/server/modules/schedule/index.js +123 -135
- package/lib/server/modules/schedule/types.js +21 -14
- package/lib/server/modules/schedule/utils.js +163 -334
- package/lib/server/types.js +16 -4
- package/lib/server/utils/index.js +23 -25
- package/lib/server/utils/product.js +139 -196
- package/lib/server/utils/schedule.js +41 -34
- package/lib/server/utils/small-ticket.js +456 -478
- package/lib/server/utils/time.js +49 -40
- package/lib/solution/BaseSales/index.js +1016 -850
- package/lib/solution/BaseSales/types.js +37 -41
- package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
- package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
- package/lib/solution/BaseSales/utils.js +140 -155
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1340 -1530
- package/lib/solution/BookingByStep/types.js +99 -40
- package/lib/solution/BookingByStep/utils/capacity.js +160 -192
- package/lib/solution/BookingByStep/utils/products.js +52 -42
- package/lib/solution/BookingByStep/utils/resources.js +330 -527
- package/lib/solution/BookingByStep/utils/stock.js +44 -65
- package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +459 -543
- package/lib/solution/BookingTicket/types.js +77 -99
- package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
- package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
- package/lib/solution/BookingTicket/utils/cartView.js +94 -110
- package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
- package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
- package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
- package/lib/solution/BuyTickets/index.js +70 -67
- package/lib/solution/BuyTickets/types.js +38 -22
- package/lib/solution/Checkout/index.js +1158 -1451
- package/lib/solution/Checkout/types.js +61 -91
- package/lib/solution/Checkout/utils/index.js +156 -228
- package/lib/solution/PlaceOrder/index.js +0 -55
- package/lib/solution/RegisterAndLogin/config.js +460 -493
- package/lib/solution/RegisterAndLogin/index.js +630 -633
- package/lib/solution/RegisterAndLogin/types.js +76 -189
- package/lib/solution/RegisterAndLogin/utils.js +125 -183
- package/lib/solution/Sales/index.js +320 -317
- package/lib/solution/Sales/types.js +33 -27
- package/lib/solution/ScanOrder/index.js +862 -831
- package/lib/solution/ScanOrder/types.js +34 -33
- package/lib/solution/ScanOrder/utils.js +371 -406
- package/lib/solution/ShopDiscount/index.js +233 -235
- package/lib/solution/ShopDiscount/types.d.ts +4 -5
- package/lib/solution/ShopDiscount/types.js +37 -15
- package/lib/solution/ShopDiscount/utils.d.ts +0 -9
- package/lib/solution/ShopDiscount/utils.js +172 -309
- package/lib/solution/UnifiedBookingSales/index.js +405 -379
- package/lib/solution/UnifiedBookingSales/types.js +31 -12
- package/lib/solution/VenueBooking/index.d.ts +3 -31
- package/lib/solution/VenueBooking/index.js +916 -967
- package/lib/solution/VenueBooking/types.d.ts +1 -3
- package/lib/solution/VenueBooking/types.js +39 -20
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
- package/lib/solution/VenueBooking/utils/resource.js +54 -31
- package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
- package/lib/solution/VenueBooking/utils.js +67 -130
- package/lib/solution/index.js +41 -124
- package/lib/store/createStore.js +29 -32
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +16 -4
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +47 -81
- package/package.json +2 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
|
@@ -1,98 +1,84 @@
|
|
|
1
|
-
|
|
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/solution/BookingTicket/utils/scan/scanCache.ts
|
|
20
|
+
var scanCache_exports = {};
|
|
21
|
+
__export(scanCache_exports, {
|
|
22
|
+
default: () => scanCache_default
|
|
5
23
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
* 简单的数据压缩函数
|
|
9
|
-
* @param data 要压缩的数据
|
|
10
|
-
* @returns 压缩后的字符串
|
|
11
|
-
*/
|
|
12
|
-
const compressData = data => {
|
|
24
|
+
module.exports = __toCommonJS(scanCache_exports);
|
|
25
|
+
var compressData = (data) => {
|
|
13
26
|
try {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return 'undefined';
|
|
27
|
+
if (data === void 0) {
|
|
28
|
+
return "undefined";
|
|
17
29
|
}
|
|
18
30
|
return JSON.stringify(data);
|
|
19
31
|
} catch (error) {
|
|
20
|
-
console.warn(
|
|
32
|
+
console.warn("数据压缩失败:", error);
|
|
21
33
|
return JSON.stringify(data);
|
|
22
34
|
}
|
|
23
35
|
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* 数据解压缩函数
|
|
27
|
-
* @param compressedData 压缩后的数据
|
|
28
|
-
* @returns 解压缩后的数据
|
|
29
|
-
*/
|
|
30
|
-
const decompressData = compressedData => {
|
|
36
|
+
var decompressData = (compressedData) => {
|
|
31
37
|
try {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return undefined;
|
|
38
|
+
if (compressedData === "undefined") {
|
|
39
|
+
return void 0;
|
|
35
40
|
}
|
|
36
41
|
return JSON.parse(compressedData);
|
|
37
42
|
} catch (error) {
|
|
38
|
-
console.warn(
|
|
43
|
+
console.warn("数据解压缩失败:", error);
|
|
39
44
|
return null;
|
|
40
45
|
}
|
|
41
46
|
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* 双向链表节点
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* LRU缓存类,用于缓存接口数据
|
|
49
|
-
* 限制最多存储100条数据,超过时移除最久未使用的数据
|
|
50
|
-
* 支持数据压缩以减小缓存压力
|
|
51
|
-
* 尾部优先策略:新节点插入尾部,最近使用的节点移动到尾部,删除头部节点
|
|
52
|
-
*/
|
|
53
|
-
class LRUCache {
|
|
54
|
-
head = null; // 最久未使用的节点
|
|
55
|
-
tail = null; // 最近使用的节点
|
|
56
|
-
keyMap = new Map(); // key到节点的映射(只存储引用)
|
|
57
|
-
maxSize;
|
|
47
|
+
var LRUCache = class {
|
|
58
48
|
constructor(maxSize = 100) {
|
|
49
|
+
this.head = null;
|
|
50
|
+
// 最久未使用的节点
|
|
51
|
+
this.tail = null;
|
|
52
|
+
// 最近使用的节点
|
|
53
|
+
this.keyMap = /* @__PURE__ */ new Map();
|
|
59
54
|
this.maxSize = maxSize;
|
|
60
55
|
}
|
|
61
|
-
|
|
62
56
|
/**
|
|
63
57
|
* 将节点移动到链表尾部(最近使用)
|
|
64
58
|
* @param node 要移动的节点
|
|
65
59
|
*/
|
|
66
60
|
moveToTail(node) {
|
|
67
|
-
if (this.tail === node)
|
|
68
|
-
|
|
69
|
-
// 从当前位置移除
|
|
61
|
+
if (this.tail === node)
|
|
62
|
+
return;
|
|
70
63
|
if (node.prev) {
|
|
71
64
|
node.prev.next = node.next;
|
|
72
65
|
}
|
|
73
66
|
if (node.next) {
|
|
74
67
|
node.next.prev = node.prev;
|
|
75
68
|
}
|
|
76
|
-
|
|
77
|
-
// 如果是头部,更新头部
|
|
78
69
|
if (this.head === node) {
|
|
79
70
|
this.head = node.next;
|
|
80
71
|
}
|
|
81
|
-
|
|
82
|
-
// 移动到尾部
|
|
83
72
|
if (this.tail) {
|
|
84
73
|
this.tail.next = node;
|
|
85
74
|
}
|
|
86
75
|
node.prev = this.tail;
|
|
87
76
|
node.next = null;
|
|
88
77
|
this.tail = node;
|
|
89
|
-
|
|
90
|
-
// 如果链表为空,设置头部
|
|
91
78
|
if (!this.head) {
|
|
92
79
|
this.head = node;
|
|
93
80
|
}
|
|
94
81
|
}
|
|
95
|
-
|
|
96
82
|
/**
|
|
97
83
|
* 添加新节点到链表尾部
|
|
98
84
|
* @param key 缓存键
|
|
@@ -100,7 +86,6 @@ class LRUCache {
|
|
|
100
86
|
* @param timestamp 时间戳
|
|
101
87
|
*/
|
|
102
88
|
addToTail(key, compressedData, timestamp) {
|
|
103
|
-
// 先保存当前的tail引用
|
|
104
89
|
const oldTail = this.tail;
|
|
105
90
|
const node = {
|
|
106
91
|
key,
|
|
@@ -110,23 +95,16 @@ class LRUCache {
|
|
|
110
95
|
// 使用保存的引用,避免循环引用
|
|
111
96
|
next: null
|
|
112
97
|
};
|
|
113
|
-
|
|
114
|
-
// 存储节点引用
|
|
115
98
|
this.keyMap.set(key, node);
|
|
116
|
-
|
|
117
|
-
// 更新链表关系
|
|
118
99
|
if (oldTail) {
|
|
119
100
|
oldTail.next = node;
|
|
120
101
|
}
|
|
121
102
|
this.tail = node;
|
|
122
|
-
|
|
123
|
-
// 如果是第一个节点,设置head
|
|
124
103
|
if (!this.head) {
|
|
125
104
|
this.head = node;
|
|
126
105
|
}
|
|
127
106
|
return node;
|
|
128
107
|
}
|
|
129
|
-
|
|
130
108
|
/**
|
|
131
109
|
* 从链表中移除节点
|
|
132
110
|
* @param node 要移除的节点
|
|
@@ -144,11 +122,8 @@ class LRUCache {
|
|
|
144
122
|
if (this.tail === node) {
|
|
145
123
|
this.tail = node.prev;
|
|
146
124
|
}
|
|
147
|
-
|
|
148
|
-
// 从Map中移除引用
|
|
149
125
|
this.keyMap.delete(node.key);
|
|
150
126
|
}
|
|
151
|
-
|
|
152
127
|
/**
|
|
153
128
|
* 移除最久未使用的节点(链表头部)
|
|
154
129
|
*/
|
|
@@ -157,35 +132,26 @@ class LRUCache {
|
|
|
157
132
|
this.removeNode(this.head);
|
|
158
133
|
}
|
|
159
134
|
}
|
|
160
|
-
|
|
161
135
|
/**
|
|
162
136
|
* 设置缓存
|
|
163
137
|
* @param key 缓存键
|
|
164
138
|
* @param data 缓存数据
|
|
165
139
|
*/
|
|
166
140
|
set(key, data) {
|
|
167
|
-
// 压缩数据
|
|
168
141
|
const compressedData = compressData(data);
|
|
169
142
|
const timestamp = Date.now();
|
|
170
|
-
|
|
171
|
-
// 检查是否已存在该key
|
|
172
143
|
const existingNode = this.keyMap.get(key);
|
|
173
144
|
if (existingNode) {
|
|
174
|
-
// 如果已存在,更新数据并移动到链表尾部
|
|
175
145
|
existingNode.compressedData = compressedData;
|
|
176
146
|
existingNode.timestamp = timestamp;
|
|
177
147
|
this.moveToTail(existingNode);
|
|
178
148
|
} else {
|
|
179
|
-
// 如果是新数据且缓存已满,移除最久未使用的数据(头部)
|
|
180
149
|
if (this.keyMap.size >= this.maxSize) {
|
|
181
150
|
this.removeOldest();
|
|
182
151
|
}
|
|
183
|
-
|
|
184
|
-
// 添加新数据到尾部
|
|
185
152
|
this.addToTail(key, compressedData, timestamp);
|
|
186
153
|
}
|
|
187
154
|
}
|
|
188
|
-
|
|
189
155
|
/**
|
|
190
156
|
* 获取缓存
|
|
191
157
|
* @param key 缓存键
|
|
@@ -194,22 +160,18 @@ class LRUCache {
|
|
|
194
160
|
get(key) {
|
|
195
161
|
const node = this.keyMap.get(key);
|
|
196
162
|
if (node) {
|
|
197
|
-
// 解压缩数据
|
|
198
163
|
const decompressedData = decompressData(node.compressedData);
|
|
199
164
|
if (decompressedData !== null) {
|
|
200
|
-
// 更新访问时间戳并移动到链表尾部
|
|
201
165
|
node.timestamp = Date.now();
|
|
202
166
|
this.moveToTail(node);
|
|
203
167
|
return decompressedData;
|
|
204
168
|
} else {
|
|
205
|
-
// 如果解压缩失败,删除该缓存项
|
|
206
169
|
this.removeNode(node);
|
|
207
|
-
return
|
|
170
|
+
return void 0;
|
|
208
171
|
}
|
|
209
172
|
}
|
|
210
|
-
return
|
|
173
|
+
return void 0;
|
|
211
174
|
}
|
|
212
|
-
|
|
213
175
|
/**
|
|
214
176
|
* 检查是否存在缓存
|
|
215
177
|
* @param key 缓存键
|
|
@@ -218,12 +180,10 @@ class LRUCache {
|
|
|
218
180
|
has(key) {
|
|
219
181
|
return this.keyMap.has(key);
|
|
220
182
|
}
|
|
221
|
-
|
|
222
183
|
/**
|
|
223
184
|
* 清除所有缓存
|
|
224
185
|
*/
|
|
225
186
|
clear() {
|
|
226
|
-
// 清除所有节点的引用关系,帮助垃圾回收
|
|
227
187
|
let current = this.head;
|
|
228
188
|
while (current) {
|
|
229
189
|
const next = current.next;
|
|
@@ -231,13 +191,10 @@ class LRUCache {
|
|
|
231
191
|
current.next = null;
|
|
232
192
|
current = next;
|
|
233
193
|
}
|
|
234
|
-
|
|
235
|
-
// 清除Map和头尾指针
|
|
236
194
|
this.keyMap.clear();
|
|
237
195
|
this.head = null;
|
|
238
196
|
this.tail = null;
|
|
239
197
|
}
|
|
240
|
-
|
|
241
198
|
/**
|
|
242
199
|
* 获取缓存大小
|
|
243
200
|
* @returns 当前缓存数量
|
|
@@ -245,7 +202,6 @@ class LRUCache {
|
|
|
245
202
|
size() {
|
|
246
203
|
return this.keyMap.size;
|
|
247
204
|
}
|
|
248
|
-
|
|
249
205
|
/**
|
|
250
206
|
* 获取缓存统计信息
|
|
251
207
|
* @returns 缓存统计信息
|
|
@@ -257,7 +213,6 @@ class LRUCache {
|
|
|
257
213
|
usage: Math.round(this.keyMap.size / this.maxSize * 100)
|
|
258
214
|
};
|
|
259
215
|
}
|
|
260
|
-
|
|
261
216
|
/**
|
|
262
217
|
* 删除指定的缓存项
|
|
263
218
|
* @param key 要删除的缓存键
|
|
@@ -271,8 +226,6 @@ class LRUCache {
|
|
|
271
226
|
}
|
|
272
227
|
return false;
|
|
273
228
|
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const scanCache = new LRUCache();
|
|
278
|
-
var _default = exports.default = scanCache;
|
|
229
|
+
};
|
|
230
|
+
var scanCache = new LRUCache();
|
|
231
|
+
var scanCache_default = scanCache;
|
|
@@ -1,39 +1,50 @@
|
|
|
1
|
-
|
|
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/solution/BookingTicket/utils/scan/scanProductValues.ts
|
|
20
|
+
var scanProductValues_exports = {};
|
|
21
|
+
__export(scanProductValues_exports, {
|
|
22
|
+
countScanVariantMatches: () => countScanVariantMatches,
|
|
23
|
+
genScanProductValues: () => genScanProductValues,
|
|
24
|
+
isScanProductBundle: () => isScanProductBundle,
|
|
25
|
+
isScanProductOption: () => isScanProductOption
|
|
5
26
|
});
|
|
6
|
-
exports
|
|
7
|
-
exports.genScanProductValues = genScanProductValues;
|
|
8
|
-
exports.isScanProductBundle = isScanProductBundle;
|
|
9
|
-
exports.isScanProductOption = isScanProductOption;
|
|
10
|
-
/**
|
|
11
|
-
* 扫码商品条码预选规格纯函数(对齐 ticketBooking addServiceVariant/utils)。
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/** 套餐商品 */
|
|
27
|
+
module.exports = __toCommonJS(scanProductValues_exports);
|
|
15
28
|
function isScanProductBundle(item) {
|
|
16
|
-
return (item
|
|
29
|
+
return ((item == null ? void 0 : item.bundle_group_count) || 0) > 0;
|
|
17
30
|
}
|
|
18
|
-
|
|
19
|
-
/** 单规格 / 选项组商品 */
|
|
20
31
|
function isScanProductOption(item) {
|
|
21
|
-
|
|
32
|
+
var _a;
|
|
33
|
+
return ((item == null ? void 0 : item.option_group_count) || 0) > 0 || (((_a = item == null ? void 0 : item.option_group) == null ? void 0 : _a.length) || 0) > 0;
|
|
22
34
|
}
|
|
23
35
|
function formatVariantGroupTitle(title, variantGroup = []) {
|
|
24
36
|
try {
|
|
25
|
-
return variantGroup.map(group => {
|
|
26
|
-
const value = title
|
|
27
|
-
return value ? `${group
|
|
28
|
-
}).filter(Boolean).join(
|
|
37
|
+
return variantGroup.map((group) => {
|
|
38
|
+
const value = title == null ? void 0 : title[group == null ? void 0 : group.position_id];
|
|
39
|
+
return value ? `${(group == null ? void 0 : group.name) || "-"}: ${value}` : "";
|
|
40
|
+
}).filter(Boolean).join(", ");
|
|
29
41
|
} catch {
|
|
30
|
-
return
|
|
42
|
+
return "";
|
|
31
43
|
}
|
|
32
44
|
}
|
|
33
45
|
function formatDataKey(data) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
};
|
|
46
|
+
var _a, _b, _c, _d;
|
|
47
|
+
const next = { ...data };
|
|
37
48
|
let key = `${next.product_id}`;
|
|
38
49
|
let rowKey = key;
|
|
39
50
|
if (next.product_variant_id) {
|
|
@@ -41,19 +52,19 @@ function formatDataKey(data) {
|
|
|
41
52
|
key += str;
|
|
42
53
|
rowKey += str;
|
|
43
54
|
}
|
|
44
|
-
if (next
|
|
55
|
+
if ((_a = next == null ? void 0 : next.option) == null ? void 0 : _a.length) {
|
|
45
56
|
for (const item of next.option) {
|
|
46
57
|
const str = `_${item.option_group_id}_${item.product_option_item_id}`;
|
|
47
58
|
key += str;
|
|
48
59
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
|
-
if (next
|
|
62
|
+
if ((_b = next == null ? void 0 : next.bundle) == null ? void 0 : _b.length) {
|
|
52
63
|
for (const item of next.bundle) {
|
|
53
64
|
let str = `_${item.group_id}_${item.bundle_product_id}`;
|
|
54
65
|
key += str;
|
|
55
66
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
56
|
-
if (item
|
|
67
|
+
if (item == null ? void 0 : item.option) {
|
|
57
68
|
for (const opt of item.option) {
|
|
58
69
|
const optStr = `_${opt.option_group_id}_${opt.product_option_item_id}`;
|
|
59
70
|
key += optStr;
|
|
@@ -62,13 +73,13 @@ function formatDataKey(data) {
|
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
}
|
|
65
|
-
if (next
|
|
66
|
-
const str = `_${next.session
|
|
76
|
+
if (next == null ? void 0 : next.session) {
|
|
77
|
+
const str = `_${(_c = next.session) == null ? void 0 : _c.key}`;
|
|
67
78
|
key += str;
|
|
68
79
|
rowKey += str;
|
|
69
80
|
}
|
|
70
|
-
if (next
|
|
71
|
-
const str = `_${next.schedule
|
|
81
|
+
if (next == null ? void 0 : next.schedule) {
|
|
82
|
+
const str = `_${(_d = next.schedule) == null ? void 0 : _d.key}`;
|
|
72
83
|
key += str;
|
|
73
84
|
rowKey += str;
|
|
74
85
|
}
|
|
@@ -76,40 +87,41 @@ function formatDataKey(data) {
|
|
|
76
87
|
next.rowKey = rowKey;
|
|
77
88
|
return next;
|
|
78
89
|
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* 根据条码匹配 variant,生成 cartDetailValue(对齐 ticketBooking `genValues`)。
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```ts
|
|
85
|
-
* const values = genScanProductValues(catalogItem, '6901234567890');
|
|
86
|
-
* const itemWithSelection = { ...catalogItem, cartDetailValue: values };
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
90
|
function genScanProductValues(item, code) {
|
|
91
|
+
var _a, _b;
|
|
90
92
|
const params = {
|
|
91
93
|
bundle: [],
|
|
92
94
|
option: [],
|
|
93
95
|
product_id: item.id,
|
|
94
96
|
product_variant_id: 0,
|
|
95
97
|
quantity: 1,
|
|
96
|
-
rowKey:
|
|
98
|
+
rowKey: "",
|
|
97
99
|
session: null
|
|
98
100
|
};
|
|
99
|
-
if (item
|
|
100
|
-
const variantItem = (item.variant || []).find(
|
|
101
|
+
if (((_a = item == null ? void 0 : item.variant_group) == null ? void 0 : _a.length) || ((_b = item == null ? void 0 : item.option_group) == null ? void 0 : _b.length)) {
|
|
102
|
+
const variantItem = (item.variant || []).find(
|
|
103
|
+
(v) => (v == null ? void 0 : v.code) === code || (v == null ? void 0 : v.barcode) === code
|
|
104
|
+
);
|
|
101
105
|
if (variantItem) {
|
|
102
|
-
params.price = Number(variantItem
|
|
106
|
+
params.price = Number((variantItem == null ? void 0 : variantItem.price) || 0);
|
|
103
107
|
params.product_variant_id = variantItem.id;
|
|
104
|
-
params.product_option_string = formatVariantGroupTitle(
|
|
108
|
+
params.product_option_string = formatVariantGroupTitle(
|
|
109
|
+
variantItem == null ? void 0 : variantItem.title,
|
|
110
|
+
(item == null ? void 0 : item.variant_group) || []
|
|
111
|
+
);
|
|
105
112
|
}
|
|
106
113
|
}
|
|
107
114
|
return formatDataKey(params);
|
|
108
115
|
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* 统计条码命中的 variant 数量(多命中时需弹窗选择)。
|
|
112
|
-
*/
|
|
113
116
|
function countScanVariantMatches(item, code) {
|
|
114
|
-
return (item
|
|
115
|
-
|
|
117
|
+
return ((item == null ? void 0 : item.variant) || []).filter(
|
|
118
|
+
(v) => (v == null ? void 0 : v.code) === code || (v == null ? void 0 : v.barcode) === code
|
|
119
|
+
).length;
|
|
120
|
+
}
|
|
121
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
122
|
+
0 && (module.exports = {
|
|
123
|
+
countScanVariantMatches,
|
|
124
|
+
genScanProductValues,
|
|
125
|
+
isScanProductBundle,
|
|
126
|
+
isScanProductOption
|
|
127
|
+
});
|
|
@@ -1,57 +1,60 @@
|
|
|
1
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
28
|
|
|
3
|
-
|
|
4
|
-
|
|
29
|
+
// src/solution/BookingTicket/utils/sessionCatalogStale.ts
|
|
30
|
+
var sessionCatalogStale_exports = {};
|
|
31
|
+
__export(sessionCatalogStale_exports, {
|
|
32
|
+
buildSessionCatalogStaleInfo: () => buildSessionCatalogStaleInfo,
|
|
33
|
+
isSessionCatalogDateStale: () => isSessionCatalogDateStale
|
|
5
34
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
const SESSION_EXTENSION_TYPES = ['session_product', 'session_ticket'];
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* 是否为 session 商品。
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* getIsSessionProduct({ extension_type: 'session_ticket' }); // true
|
|
17
|
-
*/
|
|
35
|
+
module.exports = __toCommonJS(sessionCatalogStale_exports);
|
|
36
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
37
|
+
var SESSION_EXTENSION_TYPES = ["session_product", "session_ticket"];
|
|
18
38
|
function getIsSessionProduct(product) {
|
|
19
|
-
return SESSION_EXTENSION_TYPES.includes(product
|
|
39
|
+
return SESSION_EXTENSION_TYPES.includes(product == null ? void 0 : product.extension_type);
|
|
20
40
|
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* 从 session 快照解析日历日 YYYY-MM-DD。
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* resolveSessionCalendarDay({ start_at: '2026-06-05 10:00:00' }); // '2026-06-05'
|
|
27
|
-
*/
|
|
28
41
|
function resolveSessionCalendarDay(session) {
|
|
29
|
-
if (!session)
|
|
42
|
+
if (!session)
|
|
43
|
+
return null;
|
|
30
44
|
const raw = session.start_at ?? session.end_at;
|
|
31
|
-
if (!raw)
|
|
32
|
-
|
|
33
|
-
|
|
45
|
+
if (!raw)
|
|
46
|
+
return null;
|
|
47
|
+
const parsed = (0, import_dayjs.default)(raw);
|
|
48
|
+
return parsed.isValid() ? parsed.format("YYYY-MM-DD") : null;
|
|
34
49
|
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 将 booking / TimeBar 日期规范为 YYYY-MM-DD。
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* formatScheduleCalendarDay('2026-06-05 19:01:18'); // '2026-06-05'
|
|
41
|
-
*/
|
|
42
50
|
function formatScheduleCalendarDay(date) {
|
|
43
|
-
if (date == null || date ===
|
|
44
|
-
|
|
45
|
-
|
|
51
|
+
if (date == null || date === "")
|
|
52
|
+
return null;
|
|
53
|
+
const parsed = (0, import_dayjs.default)(date);
|
|
54
|
+
return parsed.isValid() ? parsed.format("YYYY-MM-DD") : null;
|
|
46
55
|
}
|
|
47
|
-
/**
|
|
48
|
-
* 判断 session 商品 catalog 中的 session 日历日是否与当前 TimeBar / bookingDate 不一致。
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* isSessionCatalogDateStale(product, '2026-06-05 19:01:18');
|
|
52
|
-
* // session 为 2026-06-04 → true;一致或无 session 快照 → false
|
|
53
|
-
*/
|
|
54
56
|
function isSessionCatalogDateStale(product, bookingDate) {
|
|
57
|
+
var _a;
|
|
55
58
|
if (!getIsSessionProduct(product)) {
|
|
56
59
|
return false;
|
|
57
60
|
}
|
|
@@ -59,25 +62,24 @@ function isSessionCatalogDateStale(product, bookingDate) {
|
|
|
59
62
|
if (!timeBarDay) {
|
|
60
63
|
return false;
|
|
61
64
|
}
|
|
62
|
-
const sessionDay = resolveSessionCalendarDay(product.cartDetailValue
|
|
65
|
+
const sessionDay = resolveSessionCalendarDay((_a = product.cartDetailValue) == null ? void 0 : _a.session);
|
|
63
66
|
if (!sessionDay) {
|
|
64
67
|
return false;
|
|
65
68
|
}
|
|
66
69
|
return sessionDay !== timeBarDay;
|
|
67
70
|
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* 组装 session catalog 日期不一致时的日志 metadata。
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* buildSessionCatalogStaleInfo(product, '2026-06-05 19:01:18');
|
|
74
|
-
*/
|
|
75
71
|
function buildSessionCatalogStaleInfo(product, bookingDate) {
|
|
72
|
+
var _a;
|
|
76
73
|
return {
|
|
77
|
-
productId: product
|
|
78
|
-
productTitle: product
|
|
79
|
-
sessionDay: resolveSessionCalendarDay(product.cartDetailValue
|
|
74
|
+
productId: (product == null ? void 0 : product.id) ?? null,
|
|
75
|
+
productTitle: (product == null ? void 0 : product.title) ?? (product == null ? void 0 : product.name) ?? null,
|
|
76
|
+
sessionDay: resolveSessionCalendarDay((_a = product.cartDetailValue) == null ? void 0 : _a.session),
|
|
80
77
|
timeBarDay: formatScheduleCalendarDay(bookingDate),
|
|
81
78
|
bookingDate
|
|
82
79
|
};
|
|
83
|
-
}
|
|
80
|
+
}
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
buildSessionCatalogStaleInfo,
|
|
84
|
+
isSessionCatalogDateStale
|
|
85
|
+
});
|