@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,44 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.
|
|
4
|
-
|
|
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);
|
|
18
|
+
|
|
19
|
+
// src/solution/Checkout/utils/index.ts
|
|
20
|
+
var utils_exports = {};
|
|
21
|
+
__export(utils_exports, {
|
|
22
|
+
calculateTotalAmount: () => calculateTotalAmount,
|
|
23
|
+
createCheckoutError: () => createCheckoutError,
|
|
24
|
+
debounce: () => debounce,
|
|
25
|
+
deepClone: () => deepClone,
|
|
26
|
+
extractAmountFromCartSummary: () => extractAmountFromCartSummary,
|
|
27
|
+
formatAmount: () => formatAmount,
|
|
28
|
+
formatDateTime: () => formatDateTime,
|
|
29
|
+
generateLocalOrderId: () => generateLocalOrderId,
|
|
30
|
+
generateOrderId: () => generateOrderId,
|
|
31
|
+
getErrorMessage: () => getErrorMessage,
|
|
32
|
+
isCashPayment: () => isCashPayment,
|
|
33
|
+
isEmpty: () => isEmpty,
|
|
34
|
+
isProduction: () => isProduction,
|
|
35
|
+
isValidPaymentMethodCode: () => isValidPaymentMethodCode,
|
|
36
|
+
isVirtualOrderId: () => isVirtualOrderId,
|
|
37
|
+
logger: () => logger,
|
|
38
|
+
retry: () => retry,
|
|
39
|
+
safeJsonParse: () => safeJsonParse,
|
|
40
|
+
shouldSyncOrderForPayment: () => shouldSyncOrderForPayment,
|
|
41
|
+
throttle: () => throttle,
|
|
42
|
+
validateAmount: () => validateAmount,
|
|
43
|
+
validateCheckoutData: () => validateCheckoutData,
|
|
44
|
+
validateLocalOrderData: () => validateLocalOrderData
|
|
5
45
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
exports.debounce = debounce;
|
|
9
|
-
exports.deepClone = deepClone;
|
|
10
|
-
exports.extractAmountFromCartSummary = extractAmountFromCartSummary;
|
|
11
|
-
exports.formatAmount = formatAmount;
|
|
12
|
-
exports.formatDateTime = formatDateTime;
|
|
13
|
-
exports.generateLocalOrderId = generateLocalOrderId;
|
|
14
|
-
exports.generateOrderId = generateOrderId;
|
|
15
|
-
exports.getErrorMessage = getErrorMessage;
|
|
16
|
-
exports.isCashPayment = isCashPayment;
|
|
17
|
-
exports.isEmpty = isEmpty;
|
|
18
|
-
exports.isProduction = isProduction;
|
|
19
|
-
exports.isValidPaymentMethodCode = isValidPaymentMethodCode;
|
|
20
|
-
exports.isVirtualOrderId = isVirtualOrderId;
|
|
21
|
-
exports.logger = void 0;
|
|
22
|
-
exports.retry = retry;
|
|
23
|
-
exports.safeJsonParse = safeJsonParse;
|
|
24
|
-
exports.shouldSyncOrderForPayment = shouldSyncOrderForPayment;
|
|
25
|
-
exports.throttle = throttle;
|
|
26
|
-
exports.validateAmount = validateAmount;
|
|
27
|
-
exports.validateCheckoutData = validateCheckoutData;
|
|
28
|
-
exports.validateLocalOrderData = validateLocalOrderData;
|
|
29
|
-
var _types = require("../../../modules/Payment/types");
|
|
30
|
-
/**
|
|
31
|
-
* 验证结账数据
|
|
32
|
-
*/
|
|
46
|
+
module.exports = __toCommonJS(utils_exports);
|
|
47
|
+
var import_types = require("../../../modules/Payment/types");
|
|
33
48
|
function validateCheckoutData(params) {
|
|
34
49
|
const errors = [];
|
|
35
|
-
|
|
36
|
-
// 验证购物车商品
|
|
37
50
|
if (!params.cartItems || params.cartItems.length === 0) {
|
|
38
|
-
errors.push(
|
|
51
|
+
errors.push("购物车不能为空");
|
|
39
52
|
}
|
|
40
|
-
|
|
41
|
-
// 验证购物车商品数据完整性
|
|
42
53
|
if (params.cartItems) {
|
|
43
54
|
params.cartItems.forEach((item, index) => {
|
|
44
55
|
if (!item.id) {
|
|
@@ -52,25 +63,14 @@ function validateCheckoutData(params) {
|
|
|
52
63
|
}
|
|
53
64
|
});
|
|
54
65
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// if (params.orderType && !['virtual', 'appointment_booking'].includes(params.orderType)) {
|
|
58
|
-
// errors.push('订单类型无效,必须是 virtual 或 appointment_booking');
|
|
59
|
-
// }
|
|
60
|
-
|
|
61
|
-
// 验证平台类型
|
|
62
|
-
if (params.platform && !['pc', 'h5'].includes(params.platform)) {
|
|
63
|
-
errors.push('平台类型无效,必须是 pc 或 h5');
|
|
66
|
+
if (params.platform && !["pc", "h5"].includes(params.platform)) {
|
|
67
|
+
errors.push("平台类型无效,必须是 pc 或 h5");
|
|
64
68
|
}
|
|
65
69
|
return {
|
|
66
70
|
valid: errors.length === 0,
|
|
67
71
|
errors
|
|
68
72
|
};
|
|
69
73
|
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* 创建结账错误对象
|
|
73
|
-
*/
|
|
74
74
|
function createCheckoutError(type, message, details) {
|
|
75
75
|
return {
|
|
76
76
|
type,
|
|
@@ -79,44 +79,24 @@ function createCheckoutError(type, message, details) {
|
|
|
79
79
|
timestamp: Date.now()
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* 格式化金额
|
|
85
|
-
*/
|
|
86
82
|
function formatAmount(amount) {
|
|
87
|
-
const numAmount = typeof amount ===
|
|
88
|
-
if (isNaN(numAmount))
|
|
83
|
+
const numAmount = typeof amount === "string" ? parseFloat(amount) : amount;
|
|
84
|
+
if (isNaN(numAmount))
|
|
85
|
+
return "0.00";
|
|
89
86
|
return numAmount.toFixed(2);
|
|
90
87
|
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* 验证金额
|
|
94
|
-
*/
|
|
95
88
|
function validateAmount(amount) {
|
|
96
|
-
const numAmount = typeof amount ===
|
|
89
|
+
const numAmount = typeof amount === "string" ? parseFloat(amount) : amount;
|
|
97
90
|
return !isNaN(numAmount) && numAmount >= 0;
|
|
98
91
|
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* 生成唯一订单ID
|
|
102
|
-
*/
|
|
103
|
-
function generateOrderId(prefix = 'order') {
|
|
92
|
+
function generateOrderId(prefix = "order") {
|
|
104
93
|
const timestamp = Date.now();
|
|
105
|
-
const random = Math.floor(Math.random() *
|
|
94
|
+
const random = Math.floor(Math.random() * 1e4).toString().padStart(4, "0");
|
|
106
95
|
return `${prefix}_${timestamp}_${random}`;
|
|
107
96
|
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* 检查是否为有效的支付方式代码
|
|
111
|
-
*/
|
|
112
97
|
function isValidPaymentMethodCode(code) {
|
|
113
|
-
|
|
114
|
-
return typeof code === 'string' && code.length > 0 && /^[a-zA-Z0-9_-]+$/.test(code);
|
|
98
|
+
return typeof code === "string" && code.length > 0 && /^[a-zA-Z0-9_-]+$/.test(code);
|
|
115
99
|
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* 安全地解析JSON
|
|
119
|
-
*/
|
|
120
100
|
function safeJsonParse(jsonString, defaultValue) {
|
|
121
101
|
try {
|
|
122
102
|
return JSON.parse(jsonString);
|
|
@@ -124,21 +104,17 @@ function safeJsonParse(jsonString, defaultValue) {
|
|
|
124
104
|
return defaultValue;
|
|
125
105
|
}
|
|
126
106
|
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* 深度克隆对象
|
|
130
|
-
*/
|
|
131
107
|
function deepClone(obj) {
|
|
132
|
-
if (obj === null || typeof obj !==
|
|
108
|
+
if (obj === null || typeof obj !== "object") {
|
|
133
109
|
return obj;
|
|
134
110
|
}
|
|
135
111
|
if (obj instanceof Date) {
|
|
136
112
|
return new Date(obj.getTime());
|
|
137
113
|
}
|
|
138
114
|
if (obj instanceof Array) {
|
|
139
|
-
return obj.map(item => deepClone(item));
|
|
115
|
+
return obj.map((item) => deepClone(item));
|
|
140
116
|
}
|
|
141
|
-
if (typeof obj ===
|
|
117
|
+
if (typeof obj === "object") {
|
|
142
118
|
const clonedObj = {};
|
|
143
119
|
for (const key in obj) {
|
|
144
120
|
if (obj.hasOwnProperty(key)) {
|
|
@@ -149,10 +125,6 @@ function deepClone(obj) {
|
|
|
149
125
|
}
|
|
150
126
|
return obj;
|
|
151
127
|
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* 防抖函数
|
|
155
|
-
*/
|
|
156
128
|
function debounce(func, wait) {
|
|
157
129
|
let timeout = null;
|
|
158
130
|
return (...args) => {
|
|
@@ -164,10 +136,6 @@ function debounce(func, wait) {
|
|
|
164
136
|
}, wait);
|
|
165
137
|
};
|
|
166
138
|
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* 节流函数
|
|
170
|
-
*/
|
|
171
139
|
function throttle(func, wait) {
|
|
172
140
|
let lastTime = 0;
|
|
173
141
|
return (...args) => {
|
|
@@ -178,11 +146,7 @@ function throttle(func, wait) {
|
|
|
178
146
|
}
|
|
179
147
|
};
|
|
180
148
|
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* 重试函数
|
|
184
|
-
*/
|
|
185
|
-
async function retry(fn, maxAttempts = 3, delay = 1000) {
|
|
149
|
+
async function retry(fn, maxAttempts = 3, delay = 1e3) {
|
|
186
150
|
let lastError;
|
|
187
151
|
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
188
152
|
try {
|
|
@@ -192,52 +156,39 @@ async function retry(fn, maxAttempts = 3, delay = 1000) {
|
|
|
192
156
|
if (attempt === maxAttempts) {
|
|
193
157
|
throw lastError;
|
|
194
158
|
}
|
|
195
|
-
|
|
196
|
-
// 等待指定时间后重试
|
|
197
|
-
await new Promise(resolve => setTimeout(resolve, delay * attempt));
|
|
159
|
+
await new Promise((resolve) => setTimeout(resolve, delay * attempt));
|
|
198
160
|
}
|
|
199
161
|
}
|
|
200
162
|
throw lastError;
|
|
201
163
|
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* 检查对象是否为空
|
|
205
|
-
*/
|
|
206
164
|
function isEmpty(obj) {
|
|
207
|
-
if (obj == null)
|
|
208
|
-
|
|
209
|
-
if (
|
|
165
|
+
if (obj == null)
|
|
166
|
+
return true;
|
|
167
|
+
if (Array.isArray(obj) || typeof obj === "string")
|
|
168
|
+
return obj.length === 0;
|
|
169
|
+
if (typeof obj === "object")
|
|
170
|
+
return Object.keys(obj).length === 0;
|
|
210
171
|
return false;
|
|
211
172
|
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* 获取错误消息
|
|
215
|
-
*/
|
|
216
173
|
function getErrorMessage(error) {
|
|
217
174
|
if (error instanceof Error) {
|
|
218
175
|
return error.message;
|
|
219
176
|
}
|
|
220
|
-
if (typeof error ===
|
|
177
|
+
if (typeof error === "string") {
|
|
221
178
|
return error;
|
|
222
179
|
}
|
|
223
|
-
if (error && typeof error ===
|
|
180
|
+
if (error && typeof error === "object" && "message" in error) {
|
|
224
181
|
return String(error.message);
|
|
225
182
|
}
|
|
226
|
-
return
|
|
183
|
+
return "未知错误";
|
|
227
184
|
}
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* 检查是否为生产环境
|
|
231
|
-
*/
|
|
232
185
|
function isProduction() {
|
|
233
|
-
return process.env.NODE_ENV ===
|
|
186
|
+
return process.env.NODE_ENV === "production";
|
|
234
187
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const logger = exports.logger = {
|
|
240
|
-
info: (message, ...args) => {},
|
|
188
|
+
var logger = {
|
|
189
|
+
info: (message, ...args) => {
|
|
190
|
+
console.log(`[Checkout] ${message}`, ...args);
|
|
191
|
+
},
|
|
241
192
|
warn: (message, ...args) => {
|
|
242
193
|
console.warn(`[Checkout] ${message}`, ...args);
|
|
243
194
|
},
|
|
@@ -245,30 +196,23 @@ const logger = exports.logger = {
|
|
|
245
196
|
console.error(`[Checkout] ${message}`, ...args);
|
|
246
197
|
},
|
|
247
198
|
debug: (message, ...args) => {
|
|
248
|
-
if (!isProduction()) {
|
|
199
|
+
if (!isProduction()) {
|
|
200
|
+
console.debug(`[Checkout] ${message}`, ...args);
|
|
201
|
+
}
|
|
249
202
|
}
|
|
250
203
|
};
|
|
251
|
-
|
|
252
|
-
// ========== 从 CheckoutImpl 类中移出的纯静态方法 ==========
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* 验证本地订单数据
|
|
256
|
-
*/
|
|
257
204
|
function validateLocalOrderData(orderData) {
|
|
205
|
+
var _a;
|
|
258
206
|
const errors = [];
|
|
259
|
-
|
|
260
|
-
// 验证基本字段
|
|
261
207
|
if (!orderData.type) {
|
|
262
|
-
errors.push(
|
|
208
|
+
errors.push("订单类型不能为空");
|
|
263
209
|
}
|
|
264
210
|
if (!orderData.platform) {
|
|
265
|
-
errors.push(
|
|
211
|
+
errors.push("平台信息不能为空");
|
|
266
212
|
}
|
|
267
|
-
if ((!orderData.bookings || orderData.bookings.length === 0) && !orderData
|
|
268
|
-
errors.push(
|
|
213
|
+
if ((!orderData.bookings || orderData.bookings.length === 0) && !((_a = orderData == null ? void 0 : orderData.relation_products) == null ? void 0 : _a.length)) {
|
|
214
|
+
errors.push("预订信息不能为空");
|
|
269
215
|
}
|
|
270
|
-
|
|
271
|
-
// 验证预订信息
|
|
272
216
|
if (orderData.bookings) {
|
|
273
217
|
orderData.bookings.forEach((booking, index) => {
|
|
274
218
|
if (!booking.product || !booking.product.product_id) {
|
|
@@ -287,147 +231,131 @@ function validateLocalOrderData(orderData) {
|
|
|
287
231
|
errors
|
|
288
232
|
};
|
|
289
233
|
}
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* 生成本地订单ID
|
|
293
|
-
*/
|
|
294
234
|
function generateLocalOrderId() {
|
|
295
235
|
const timestamp = Date.now();
|
|
296
|
-
const random = Math.floor(Math.random() *
|
|
236
|
+
const random = Math.floor(Math.random() * 1e4).toString().padStart(4, "0");
|
|
297
237
|
return `local_order_${timestamp}_${random}`;
|
|
298
238
|
}
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* 格式化日期时间为 YYYY-MM-DD hh:mm:ss 格式
|
|
302
|
-
*
|
|
303
|
-
* @param date 要格式化的日期对象
|
|
304
|
-
* @returns 格式化后的日期时间字符串
|
|
305
|
-
*/
|
|
306
239
|
function formatDateTime(date) {
|
|
307
240
|
const year = date.getFullYear();
|
|
308
|
-
const month = String(date.getMonth() + 1).padStart(2,
|
|
309
|
-
const day = String(date.getDate()).padStart(2,
|
|
310
|
-
const hours = String(date.getHours()).padStart(2,
|
|
311
|
-
const minutes = String(date.getMinutes()).padStart(2,
|
|
312
|
-
const seconds = String(date.getSeconds()).padStart(2,
|
|
241
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
242
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
243
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
244
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
245
|
+
const seconds = String(date.getSeconds()).padStart(2, "0");
|
|
313
246
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
314
247
|
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* 从购物车小计数据中提取金额信息
|
|
318
|
-
*/
|
|
319
248
|
function extractAmountFromCartSummary(cartSummary) {
|
|
320
249
|
const result = {
|
|
321
|
-
totalAmount:
|
|
322
|
-
subTotal:
|
|
323
|
-
taxAmount:
|
|
324
|
-
discountAmount:
|
|
325
|
-
shopDiscountAmount:
|
|
326
|
-
roundingAmount:
|
|
250
|
+
totalAmount: "0.00",
|
|
251
|
+
subTotal: "0.00",
|
|
252
|
+
taxAmount: "0.00",
|
|
253
|
+
discountAmount: "0.00",
|
|
254
|
+
shopDiscountAmount: "0.00",
|
|
255
|
+
roundingAmount: "0.00"
|
|
327
256
|
};
|
|
328
|
-
cartSummary.forEach(item => {
|
|
257
|
+
cartSummary.forEach((item) => {
|
|
329
258
|
const value = Number(item.value).toFixed(2);
|
|
330
259
|
switch (item.key) {
|
|
331
|
-
case
|
|
260
|
+
case "expect_amount":
|
|
332
261
|
result.totalAmount = value;
|
|
333
262
|
break;
|
|
334
|
-
case
|
|
263
|
+
case "sub_total":
|
|
335
264
|
result.subTotal = value;
|
|
336
265
|
break;
|
|
337
|
-
case
|
|
266
|
+
case "tax":
|
|
338
267
|
result.taxAmount = value;
|
|
339
268
|
if (item.tax) {
|
|
340
269
|
result.taxDetails = item.tax;
|
|
341
270
|
}
|
|
342
271
|
break;
|
|
343
|
-
case
|
|
272
|
+
case "discount":
|
|
344
273
|
result.discountAmount = value;
|
|
345
274
|
break;
|
|
346
|
-
case
|
|
275
|
+
case "shop_discount":
|
|
347
276
|
result.shopDiscountAmount = value;
|
|
348
277
|
break;
|
|
349
|
-
case
|
|
278
|
+
case "custom_roundingAmount":
|
|
350
279
|
result.roundingAmount = value;
|
|
351
280
|
break;
|
|
352
281
|
default:
|
|
353
|
-
|
|
354
|
-
if (item.key.includes('deposit')) {
|
|
282
|
+
if (item.key.includes("deposit")) {
|
|
355
283
|
result.depositAmount = value;
|
|
356
284
|
}
|
|
357
285
|
break;
|
|
358
286
|
}
|
|
359
287
|
});
|
|
288
|
+
console.log("[Checkout] 从购物车小计提取金额信息:", {
|
|
289
|
+
totalAmount: result.totalAmount,
|
|
290
|
+
subTotal: result.subTotal,
|
|
291
|
+
taxAmount: result.taxAmount,
|
|
292
|
+
discountAmount: result.discountAmount,
|
|
293
|
+
shopDiscountAmount: result.shopDiscountAmount,
|
|
294
|
+
roundingAmount: result.roundingAmount
|
|
295
|
+
});
|
|
360
296
|
return result;
|
|
361
297
|
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* 计算购物车总金额
|
|
365
|
-
*/
|
|
366
298
|
function calculateTotalAmount(cartItems) {
|
|
367
299
|
const total = cartItems.reduce((sum, item) => {
|
|
368
|
-
const price = parseFloat(String(item.price) ||
|
|
300
|
+
const price = parseFloat(String(item.price) || "0");
|
|
369
301
|
const quantity = item.quantity || 1;
|
|
370
302
|
return sum + price * quantity;
|
|
371
303
|
}, 0);
|
|
372
304
|
return total.toFixed(2);
|
|
373
305
|
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* 判断订单ID是否为本地生成的虚拟ID
|
|
377
|
-
*
|
|
378
|
-
* @param orderId 订单ID
|
|
379
|
-
* @returns true 表示是虚拟ID,false 表示是真实的后端ID
|
|
380
|
-
*/
|
|
381
306
|
function isVirtualOrderId(orderId) {
|
|
382
|
-
return orderId.startsWith(
|
|
307
|
+
return orderId.startsWith("local_order_");
|
|
383
308
|
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* 判断支付方式是否需要同步订单到后端
|
|
387
|
-
*
|
|
388
|
-
* 现金支付(CASHMANUAL)和自定义支付不需要同步,其他支付方式需要同步
|
|
389
|
-
*
|
|
390
|
-
* @param paymentCode 支付方式代码
|
|
391
|
-
* @param paymentType 支付方式类型
|
|
392
|
-
* @returns 是否需要同步订单
|
|
393
|
-
*/
|
|
394
309
|
function shouldSyncOrderForPayment(paymentCode, paymentType) {
|
|
395
|
-
const codeUpper = paymentCode
|
|
396
|
-
const typeUpper = paymentType
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
310
|
+
const codeUpper = (paymentCode == null ? void 0 : paymentCode.toUpperCase()) || "";
|
|
311
|
+
const typeUpper = (paymentType == null ? void 0 : paymentType.toUpperCase()) || "";
|
|
312
|
+
const cashIdentifiers = ["CASHMANUAL", "CASH", "MANUAL"];
|
|
313
|
+
if (cashIdentifiers.some(
|
|
314
|
+
(id) => codeUpper.includes(id) || typeUpper.includes(id)
|
|
315
|
+
)) {
|
|
401
316
|
return false;
|
|
402
317
|
}
|
|
403
|
-
|
|
404
|
-
// 标准现金支付代码检查
|
|
405
|
-
if (paymentCode === _types.PaymentMethodType.Cash || paymentType === _types.PaymentMethodType.Cash) {
|
|
318
|
+
if (paymentCode === import_types.PaymentMethodType.Cash || paymentType === import_types.PaymentMethodType.Cash) {
|
|
406
319
|
return false;
|
|
407
320
|
}
|
|
408
|
-
|
|
409
|
-
// 自定义支付不需要同步
|
|
410
|
-
if (codeUpper.includes('CUSTOM') || typeUpper.includes('CUSTOM')) {
|
|
321
|
+
if (codeUpper.includes("CUSTOM") || typeUpper.includes("CUSTOM")) {
|
|
411
322
|
return false;
|
|
412
323
|
}
|
|
413
|
-
|
|
414
|
-
// 其他支付方式都需要同步
|
|
415
324
|
return true;
|
|
416
325
|
}
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* 判断是否为现金支付
|
|
420
|
-
*
|
|
421
|
-
* @param paymentCode 支付方式代码
|
|
422
|
-
* @param paymentType 支付方式类型
|
|
423
|
-
* @returns 是否为现金支付
|
|
424
|
-
*/
|
|
425
326
|
function isCashPayment(paymentItem) {
|
|
426
|
-
|
|
427
|
-
const
|
|
428
|
-
const
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
327
|
+
var _a, _b, _c;
|
|
328
|
+
const codeUpper = ((_a = paymentItem.code) == null ? void 0 : _a.toUpperCase()) || "";
|
|
329
|
+
const typeUpper = ((_b = paymentItem.type) == null ? void 0 : _b.toUpperCase()) || "";
|
|
330
|
+
const isNameCash = (_c = paymentItem.name) == null ? void 0 : _c.toLowerCase().includes("cash");
|
|
331
|
+
const cashIdentifiers = ["CASH", "CASHMANUAL", "MANUAL"];
|
|
332
|
+
return cashIdentifiers.some(
|
|
333
|
+
(identifier) => codeUpper.includes(identifier) || typeUpper.includes(identifier)
|
|
334
|
+
) || isNameCash;
|
|
335
|
+
}
|
|
336
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
337
|
+
0 && (module.exports = {
|
|
338
|
+
calculateTotalAmount,
|
|
339
|
+
createCheckoutError,
|
|
340
|
+
debounce,
|
|
341
|
+
deepClone,
|
|
342
|
+
extractAmountFromCartSummary,
|
|
343
|
+
formatAmount,
|
|
344
|
+
formatDateTime,
|
|
345
|
+
generateLocalOrderId,
|
|
346
|
+
generateOrderId,
|
|
347
|
+
getErrorMessage,
|
|
348
|
+
isCashPayment,
|
|
349
|
+
isEmpty,
|
|
350
|
+
isProduction,
|
|
351
|
+
isValidPaymentMethodCode,
|
|
352
|
+
isVirtualOrderId,
|
|
353
|
+
logger,
|
|
354
|
+
retry,
|
|
355
|
+
safeJsonParse,
|
|
356
|
+
shouldSyncOrderForPayment,
|
|
357
|
+
throttle,
|
|
358
|
+
validateAmount,
|
|
359
|
+
validateCheckoutData,
|
|
360
|
+
validateLocalOrderData
|
|
361
|
+
});
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// // 只是一个示例工程
|
|
2
|
-
|
|
3
|
-
// import { Module, PisellCore, ModuleOptions } from '../types';
|
|
4
|
-
// import { CartModuleAPI } from '../modules/cart';
|
|
5
|
-
// import { StockModuleAPI } from '../modules/stock';
|
|
6
|
-
// import { CheckoutModuleAPI } from '../modules/checkout';
|
|
7
|
-
|
|
8
|
-
// class OrderSolution implements Module {
|
|
9
|
-
// name = 'orderSolution';
|
|
10
|
-
// version = '1.0.0';
|
|
11
|
-
|
|
12
|
-
// private core!: PisellCore;
|
|
13
|
-
// private cart!: CartModuleAPI;
|
|
14
|
-
// private stock!: StockModuleAPI;
|
|
15
|
-
// private checkout!: CheckoutModuleAPI;
|
|
16
|
-
|
|
17
|
-
// public exports = {
|
|
18
|
-
// submitOrder: this.submitOrder.bind(this),
|
|
19
|
-
// };
|
|
20
|
-
|
|
21
|
-
// async initialize(core: PisellCore): Promise<void> {
|
|
22
|
-
// this.core = core;
|
|
23
|
-
|
|
24
|
-
// // 获取依赖的模块 API
|
|
25
|
-
// this.cart = core.getModuleExports<CartModuleAPI>('cart');
|
|
26
|
-
// this.stock = core.getModuleExports<StockModuleAPI>('stock');
|
|
27
|
-
// this.checkout = core.getModuleExports<CheckoutModuleAPI>('checkout');
|
|
28
|
-
|
|
29
|
-
// console.log('[OrderSolution] 初始化完成');
|
|
30
|
-
// }
|
|
31
|
-
|
|
32
|
-
// async destroy(): Promise<void> {
|
|
33
|
-
// console.log('[OrderSolution] 已销毁');
|
|
34
|
-
// }
|
|
35
|
-
|
|
36
|
-
// /**
|
|
37
|
-
// * 下单流程(商品 → 库存校验 → 结算 → 提交)
|
|
38
|
-
// */
|
|
39
|
-
// async submitOrder(): Promise<void> {
|
|
40
|
-
// const cartItems = await this.cart.getItems();
|
|
41
|
-
|
|
42
|
-
// const stockResult = await this.stock.checkAvailability(cartItems);
|
|
43
|
-
// if (!stockResult.ok) {
|
|
44
|
-
// throw new Error('部分商品库存不足');
|
|
45
|
-
// }
|
|
46
|
-
|
|
47
|
-
// const summary = await this.checkout.calculate(cartItems);
|
|
48
|
-
|
|
49
|
-
// await this.checkout.submit(summary);
|
|
50
|
-
// console.log('[OrderSolution] 下单完成');
|
|
51
|
-
// }
|
|
52
|
-
// }
|
|
53
|
-
|
|
54
|
-
// export default new OrderSolution();
|
|
55
|
-
"use strict";
|