@pisell/pisellos 2.2.243 → 2.2.244
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/model/strategy/adapter/promotion/evaluator.js +2 -3
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/utils.js +4 -7
- package/dist/modules/Cart/utils/cartProduct.js +3 -24
- package/dist/modules/Cart/utils/changePrice.js +11 -11
- package/dist/modules/Customer/index.d.ts +0 -20
- package/dist/modules/Customer/index.js +83 -172
- package/dist/modules/Customer/types.d.ts +0 -2
- package/dist/modules/Discount/index.js +3 -4
- package/dist/modules/Discount/types.d.ts +0 -1
- package/dist/modules/OpenData/index.d.ts +0 -8
- package/dist/modules/OpenData/index.js +17 -37
- package/dist/modules/Order/index.d.ts +18 -268
- package/dist/modules/Order/index.js +757 -3306
- package/dist/modules/Order/types.d.ts +31 -279
- package/dist/modules/Order/types.js +0 -38
- package/dist/modules/Order/utils.d.ts +5 -147
- package/dist/modules/Order/utils.js +103 -746
- package/dist/modules/Payment/index.d.ts +13 -10
- package/dist/modules/Payment/index.js +837 -467
- package/dist/modules/Payment/types.d.ts +0 -2
- package/dist/modules/Payment/utils.js +1 -2
- package/dist/modules/Payment/walletpass.js +7 -14
- package/dist/modules/ProductList/index.d.ts +12 -16
- package/dist/modules/ProductList/index.js +59 -133
- package/dist/modules/ProductList/types.d.ts +0 -14
- package/dist/modules/Quotation/index.d.ts +1 -0
- package/dist/modules/Quotation/index.js +22 -25
- package/dist/modules/Rules/index.d.ts +0 -4
- package/dist/modules/Rules/index.js +69 -93
- package/dist/modules/Rules/types.d.ts +0 -1
- package/dist/modules/SalesSummary/index.d.ts +25 -8
- package/dist/modules/SalesSummary/index.js +35 -86
- package/dist/modules/SalesSummary/types.d.ts +1 -4
- package/dist/modules/SalesSummary/utils.d.ts +25 -2
- package/dist/modules/SalesSummary/utils.js +162 -794
- package/dist/modules/Schedule/index.d.ts +0 -7
- package/dist/modules/Schedule/index.js +2 -24
- package/dist/modules/Summary/index.js +3 -4
- package/dist/modules/index.d.ts +0 -2
- package/dist/modules/index.js +1 -3
- package/dist/plugins/request.d.ts +0 -1
- package/dist/server/index.d.ts +1 -204
- package/dist/server/index.js +928 -3658
- package/dist/server/modules/index.d.ts +0 -2
- package/dist/server/modules/index.js +0 -2
- package/dist/server/modules/order/index.d.ts +4 -120
- package/dist/server/modules/order/index.js +483 -1779
- package/dist/server/modules/order/types.d.ts +3 -32
- package/dist/server/modules/order/types.js +0 -8
- package/dist/server/modules/order/utils/filterBookings.js +3 -26
- package/dist/server/modules/order/utils/filterOrders.js +8 -23
- package/dist/server/modules/products/index.d.ts +7 -34
- package/dist/server/modules/products/index.js +317 -631
- package/dist/server/modules/resource/index.d.ts +0 -2
- package/dist/server/modules/resource/index.js +3 -29
- package/dist/server/modules/schedule/index.d.ts +4 -4
- package/dist/server/modules/schedule/index.js +88 -111
- package/dist/solution/BaseSales/index.d.ts +9 -131
- package/dist/solution/BaseSales/index.js +447 -1944
- package/dist/solution/BaseSales/types.d.ts +6 -76
- package/dist/solution/BaseSales/types.js +4 -5
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +0 -1
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +24 -105
- package/dist/solution/BaseSales/utils.d.ts +1 -1
- package/dist/solution/BaseSales/utils.js +21 -62
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +10 -270
- package/dist/solution/BookingTicket/index.js +237 -1772
- package/dist/solution/BookingTicket/types.d.ts +1 -118
- package/dist/solution/BookingTicket/types.js +2 -41
- package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +0 -40
- package/dist/solution/BookingTicket/utils/bookingStatus.js +0 -70
- package/dist/solution/BookingTicket/utils/cartView.d.ts +1 -9
- package/dist/solution/BookingTicket/utils/cartView.js +7 -94
- package/dist/solution/BookingTicket/utils/scan/index.d.ts +0 -5
- package/dist/solution/BookingTicket/utils/scan/index.js +8 -20
- package/dist/solution/Checkout/appointmentDemo.json +1 -0
- package/dist/solution/Checkout/index.d.ts +0 -1
- package/dist/solution/Checkout/index.js +9 -10
- package/dist/solution/RegisterAndLogin/config.js +10 -2
- package/dist/solution/ScanOrder/index.d.ts +3 -9
- package/dist/solution/ScanOrder/index.js +134 -241
- package/dist/solution/ScanOrder/types.d.ts +5 -9
- package/dist/solution/ScanOrder/types.js +3 -2
- package/dist/solution/ScanOrder/utils.d.ts +1 -1
- package/dist/solution/ScanOrder/utils.js +22 -84
- package/dist/solution/VenueBooking/index.d.ts +2 -5
- package/dist/solution/VenueBooking/index.js +59 -110
- package/dist/solution/VenueBooking/sales-section-4-annotated.json +2 -0
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/dist/types/index.d.ts +0 -10
- package/lib/model/strategy/adapter/promotion/evaluator.js +1 -2
- package/lib/model/strategy/adapter/promotion/index.js +0 -49
- package/lib/model/strategy/adapter/walletPass/utils.js +2 -3
- package/lib/modules/Cart/utils/cartProduct.js +3 -20
- package/lib/modules/Cart/utils/changePrice.js +20 -12
- package/lib/modules/Customer/index.d.ts +0 -20
- package/lib/modules/Customer/index.js +11 -64
- package/lib/modules/Customer/types.d.ts +0 -2
- package/lib/modules/Discount/index.js +1 -5
- package/lib/modules/Discount/types.d.ts +0 -1
- package/lib/modules/OpenData/index.d.ts +0 -8
- package/lib/modules/OpenData/index.js +5 -19
- package/lib/modules/Order/index.d.ts +18 -268
- package/lib/modules/Order/index.js +344 -2149
- package/lib/modules/Order/types.d.ts +31 -279
- package/lib/modules/Order/types.js +0 -1
- package/lib/modules/Order/utils.d.ts +5 -147
- package/lib/modules/Order/utils.js +46 -614
- package/lib/modules/Payment/index.d.ts +13 -10
- package/lib/modules/Payment/index.js +150 -18
- package/lib/modules/Payment/types.d.ts +0 -2
- package/lib/modules/Payment/utils.js +1 -2
- package/lib/modules/Payment/walletpass.js +3 -7
- package/lib/modules/ProductList/index.d.ts +12 -16
- package/lib/modules/ProductList/index.js +4 -41
- package/lib/modules/ProductList/types.d.ts +0 -14
- package/lib/modules/Quotation/index.d.ts +1 -0
- package/lib/modules/Quotation/index.js +16 -19
- package/lib/modules/Rules/index.d.ts +0 -4
- package/lib/modules/Rules/index.js +120 -136
- package/lib/modules/Rules/types.d.ts +0 -1
- package/lib/modules/SalesSummary/index.d.ts +25 -8
- package/lib/modules/SalesSummary/index.js +4 -30
- package/lib/modules/SalesSummary/types.d.ts +1 -4
- package/lib/modules/SalesSummary/utils.d.ts +25 -2
- package/lib/modules/SalesSummary/utils.js +91 -645
- package/lib/modules/Schedule/index.d.ts +0 -7
- package/lib/modules/Schedule/index.js +1 -17
- package/lib/modules/Summary/index.js +4 -5
- package/lib/modules/index.d.ts +0 -2
- package/lib/modules/index.js +1 -5
- package/lib/plugins/request.d.ts +0 -1
- package/lib/server/index.d.ts +1 -204
- package/lib/server/index.js +57 -1888
- package/lib/server/modules/index.d.ts +0 -2
- package/lib/server/modules/index.js +0 -3
- package/lib/server/modules/order/index.d.ts +4 -120
- package/lib/server/modules/order/index.js +142 -919
- package/lib/server/modules/order/types.d.ts +3 -32
- package/lib/server/modules/order/utils/filterBookings.js +5 -24
- package/lib/server/modules/order/utils/filterOrders.js +6 -15
- package/lib/server/modules/products/index.d.ts +7 -34
- package/lib/server/modules/products/index.js +54 -189
- package/lib/server/modules/resource/index.d.ts +0 -2
- package/lib/server/modules/resource/index.js +3 -27
- package/lib/server/modules/schedule/index.d.ts +4 -4
- package/lib/server/modules/schedule/index.js +40 -47
- package/lib/solution/BaseSales/index.d.ts +9 -131
- package/lib/solution/BaseSales/index.js +63 -1106
- package/lib/solution/BaseSales/types.d.ts +6 -76
- package/lib/solution/BaseSales/types.js +1 -3
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +0 -1
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +18 -106
- package/lib/solution/BaseSales/utils.d.ts +1 -1
- package/lib/solution/BaseSales/utils.js +10 -54
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +10 -270
- package/lib/solution/BookingTicket/index.js +29 -922
- package/lib/solution/BookingTicket/types.d.ts +1 -118
- package/lib/solution/BookingTicket/types.js +0 -11
- package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +0 -40
- package/lib/solution/BookingTicket/utils/bookingStatus.js +2 -44
- package/lib/solution/BookingTicket/utils/cartView.d.ts +1 -9
- package/lib/solution/BookingTicket/utils/cartView.js +6 -61
- package/lib/solution/BookingTicket/utils/scan/index.d.ts +0 -5
- package/lib/solution/BookingTicket/utils/scan/index.js +3 -17
- package/lib/solution/Checkout/appointmentDemo.json +1 -0
- package/lib/solution/Checkout/index.d.ts +0 -1
- package/lib/solution/Checkout/index.js +2 -1
- package/lib/solution/RegisterAndLogin/config.js +10 -2
- package/lib/solution/ScanOrder/index.d.ts +3 -9
- package/lib/solution/ScanOrder/index.js +70 -153
- package/lib/solution/ScanOrder/types.d.ts +5 -9
- package/lib/solution/ScanOrder/utils.d.ts +1 -1
- package/lib/solution/ScanOrder/utils.js +17 -83
- package/lib/solution/VenueBooking/index.d.ts +2 -5
- package/lib/solution/VenueBooking/index.js +17 -54
- package/lib/solution/VenueBooking/sales-section-4-annotated.json +2 -0
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/lib/types/index.d.ts +0 -10
- package/package.json +1 -1
- package/dist/modules/BookingContext/index.d.ts +0 -48
- package/dist/modules/BookingContext/index.js +0 -566
- package/dist/modules/BookingContext/types.d.ts +0 -102
- package/dist/modules/BookingContext/types.js +0 -51
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -284
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -145
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -76
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -218
- package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/dist/modules/BookingContext/utils/flexible.js +0 -56
- package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
- package/dist/modules/BookingContext/utils/index.d.ts +0 -11
- package/dist/modules/BookingContext/utils/index.js +0 -11
- package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/dist/modules/BookingContext/utils/noResource.js +0 -77
- package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +0 -1
- package/dist/modules/BookingContext/utils/orderLineDisplay.js +0 -36
- package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/dist/modules/BookingContext/utils/productExtend.js +0 -339
- package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
- package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
- package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
- package/dist/modules/BookingContext/utils/resources.js +0 -486
- package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
- package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
- package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/dist/modules/Order/utils/manualProductDiscount.js +0 -210
- package/dist/modules/SurchargeList/index.d.ts +0 -16
- package/dist/modules/SurchargeList/index.js +0 -162
- package/dist/modules/SurchargeList/types.d.ts +0 -11
- package/dist/modules/SurchargeList/types.js +0 -1
- package/dist/server/modules/payment/index.d.ts +0 -28
- package/dist/server/modules/payment/index.js +0 -305
- package/dist/server/modules/payment/types.d.ts +0 -9
- package/dist/server/modules/payment/types.js +0 -1
- package/dist/server/test.json +0 -713
- package/dist/server/utils/small-ticket.d.ts +0 -71
- package/dist/server/utils/small-ticket.js +0 -830
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +0 -287
- package/dist/solution/BaseSales/utils/cartPromotion.js +0 -1438
- package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -117
- package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
- package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +0 -35
- package/dist/solution/BookingTicket/utils/addTimeAvailability.js +0 -95
- package/dist/solution/BookingTicket/utils/exampleData.d.ts +0 -123
- package/dist/solution/BookingTicket/utils/exampleData.js +0 -183
- package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +0 -185
- package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +0 -438
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -36
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +0 -399
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +0 -32
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +0 -56
- package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +0 -21
- package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +0 -150
- package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +0 -23
- package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +0 -78
- package/lib/modules/BookingContext/index.d.ts +0 -48
- package/lib/modules/BookingContext/index.js +0 -368
- package/lib/modules/BookingContext/types.d.ts +0 -102
- package/lib/modules/BookingContext/types.js +0 -34
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -276
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -151
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -76
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -201
- package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/lib/modules/BookingContext/utils/flexible.js +0 -80
- package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
- package/lib/modules/BookingContext/utils/index.d.ts +0 -11
- package/lib/modules/BookingContext/utils/index.js +0 -43
- package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/lib/modules/BookingContext/utils/noResource.js +0 -90
- package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +0 -1
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +0 -56
- package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/lib/modules/BookingContext/utils/productExtend.js +0 -283
- package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
- package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
- package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
- package/lib/modules/BookingContext/utils/resources.js +0 -377
- package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
- package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
- package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/lib/modules/Order/utils/manualProductDiscount.js +0 -206
- package/lib/modules/SurchargeList/index.d.ts +0 -16
- package/lib/modules/SurchargeList/index.js +0 -89
- package/lib/modules/SurchargeList/types.d.ts +0 -11
- package/lib/modules/SurchargeList/types.js +0 -17
- package/lib/server/modules/payment/index.d.ts +0 -28
- package/lib/server/modules/payment/index.js +0 -192
- package/lib/server/modules/payment/types.d.ts +0 -9
- package/lib/server/modules/payment/types.js +0 -17
- package/lib/server/test.json +0 -713
- package/lib/server/utils/small-ticket.d.ts +0 -71
- package/lib/server/utils/small-ticket.js +0 -781
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +0 -287
- package/lib/solution/BaseSales/utils/cartPromotion.js +0 -992
- package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -117
- package/lib/solution/BookingTicket/utils/addProductDecision.js +0 -318
- package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +0 -35
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +0 -125
- package/lib/solution/BookingTicket/utils/exampleData.d.ts +0 -123
- package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +0 -185
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +0 -254
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -36
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +0 -168
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +0 -32
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +0 -51
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +0 -21
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +0 -127
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +0 -23
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +0 -85
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
var data = [{
|
|
2
|
-
"id": 58299,
|
|
3
|
-
"title": "玄-加时商品-与数量无关-不指定商品",
|
|
4
|
-
"price": 1,
|
|
5
|
-
"minMinutes": 30,
|
|
6
|
-
"maxMinutes": 30,
|
|
7
|
-
"unitMinutes": 30,
|
|
8
|
-
"unlimited": false,
|
|
9
|
-
"_originalProduct": {
|
|
10
|
-
"id": 58299,
|
|
11
|
-
"extension_id": 384,
|
|
12
|
-
"extension_type": "product_add_time",
|
|
13
|
-
"shop_id": 9,
|
|
14
|
-
"title": "玄-加时商品-与数量无关-不指定商品",
|
|
15
|
-
"slug": "玄-加时商品-与数量无关-指定商品",
|
|
16
|
-
"status": "published",
|
|
17
|
-
"stock_quantity": -119,
|
|
18
|
-
"sales_quantity": 113,
|
|
19
|
-
"sum_stock": -119,
|
|
20
|
-
"price": "1.00",
|
|
21
|
-
"original_price": "4.00",
|
|
22
|
-
"cost_price": "0.00",
|
|
23
|
-
"cover": "",
|
|
24
|
-
"channel_application": ["online-store", "pos", "bbc-module:mebook"],
|
|
25
|
-
"is_track": 0,
|
|
26
|
-
"over_sold": 0,
|
|
27
|
-
"is_gst": 1,
|
|
28
|
-
"code": "",
|
|
29
|
-
"barcode": "",
|
|
30
|
-
"is_delivery": 0,
|
|
31
|
-
"weight_unit": "KILOGRAMS",
|
|
32
|
-
"weight_value": "0.00",
|
|
33
|
-
"type": "physical",
|
|
34
|
-
"unit": "",
|
|
35
|
-
"sort": 9999999,
|
|
36
|
-
"subtitle": "",
|
|
37
|
-
"minimum_markup_price": "0.00",
|
|
38
|
-
"is_bundle": 0,
|
|
39
|
-
"description": "",
|
|
40
|
-
"open_sold_weight": 0,
|
|
41
|
-
"unit_value": 0,
|
|
42
|
-
"is_variant": 0,
|
|
43
|
-
"variant_count": 0,
|
|
44
|
-
"add_time": {
|
|
45
|
-
"unit_duration": 30,
|
|
46
|
-
"min_add_time": 30,
|
|
47
|
-
"max_add_time": 30,
|
|
48
|
-
"calculate_type": "not_related_to_quantity",
|
|
49
|
-
"relation_product": {
|
|
50
|
-
"type": "product_all",
|
|
51
|
-
"products": []
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
"shelf_product_datas": [],
|
|
55
|
-
"step_value": 1,
|
|
56
|
-
"min_num_unit": 1,
|
|
57
|
-
"is_charge_tax": 1,
|
|
58
|
-
"base_price": "1.00",
|
|
59
|
-
"variant": []
|
|
60
|
-
}
|
|
61
|
-
}, {
|
|
62
|
-
"id": 58279,
|
|
63
|
-
"title": "加时商品2",
|
|
64
|
-
"price": 10,
|
|
65
|
-
"minMinutes": 30,
|
|
66
|
-
"maxMinutes": 120,
|
|
67
|
-
"unitMinutes": 10,
|
|
68
|
-
"unlimited": false,
|
|
69
|
-
"_originalProduct": {
|
|
70
|
-
"id": 58279,
|
|
71
|
-
"extension_id": 384,
|
|
72
|
-
"extension_type": "product_add_time",
|
|
73
|
-
"shop_id": 9,
|
|
74
|
-
"title": "加时商品2",
|
|
75
|
-
"slug": "加时商品2",
|
|
76
|
-
"status": "published",
|
|
77
|
-
"stock_quantity": -275,
|
|
78
|
-
"sales_quantity": 261,
|
|
79
|
-
"sum_stock": -275,
|
|
80
|
-
"price": "10.00",
|
|
81
|
-
"original_price": "10.00",
|
|
82
|
-
"cost_price": "0.00",
|
|
83
|
-
"cover": "",
|
|
84
|
-
"channel_application": ["online-store", "pos", "bbc-module:mebook"],
|
|
85
|
-
"is_track": 0,
|
|
86
|
-
"over_sold": 0,
|
|
87
|
-
"is_gst": 1,
|
|
88
|
-
"code": "",
|
|
89
|
-
"barcode": "",
|
|
90
|
-
"is_delivery": 0,
|
|
91
|
-
"weight_unit": "KILOGRAMS",
|
|
92
|
-
"weight_value": "0.00",
|
|
93
|
-
"type": "physical",
|
|
94
|
-
"unit": "",
|
|
95
|
-
"sort": 9999999,
|
|
96
|
-
"subtitle": "",
|
|
97
|
-
"minimum_markup_price": "0.00",
|
|
98
|
-
"is_bundle": 0,
|
|
99
|
-
"description": "",
|
|
100
|
-
"open_sold_weight": 0,
|
|
101
|
-
"unit_value": 0,
|
|
102
|
-
"is_variant": 0,
|
|
103
|
-
"variant_count": 0,
|
|
104
|
-
"add_time": {
|
|
105
|
-
"additional_time_options": "explicit_durations",
|
|
106
|
-
"unit_duration": 10,
|
|
107
|
-
"min_add_time": 30,
|
|
108
|
-
"max_add_time": 120,
|
|
109
|
-
"calculate_type": "not_related_to_quantity",
|
|
110
|
-
"relation_product": {
|
|
111
|
-
"type": "product_all",
|
|
112
|
-
"products": []
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
"shelf_product_datas": [],
|
|
116
|
-
"step_value": 1,
|
|
117
|
-
"min_num_unit": 1,
|
|
118
|
-
"is_charge_tax": 1,
|
|
119
|
-
"base_price": "10.00",
|
|
120
|
-
"variant": []
|
|
121
|
-
}
|
|
122
|
-
}, {
|
|
123
|
-
"id": 58277,
|
|
124
|
-
"title": "测试加时商品",
|
|
125
|
-
"price": 2,
|
|
126
|
-
"minMinutes": 30,
|
|
127
|
-
"maxMinutes": 780,
|
|
128
|
-
"unitMinutes": 30,
|
|
129
|
-
"unlimited": true,
|
|
130
|
-
"_originalProduct": {
|
|
131
|
-
"id": 58277,
|
|
132
|
-
"extension_id": 384,
|
|
133
|
-
"extension_type": "product_add_time",
|
|
134
|
-
"shop_id": 9,
|
|
135
|
-
"title": "测试加时商品",
|
|
136
|
-
"slug": "测试加时商品",
|
|
137
|
-
"status": "published",
|
|
138
|
-
"stock_quantity": -7,
|
|
139
|
-
"sales_quantity": 8,
|
|
140
|
-
"sum_stock": -7,
|
|
141
|
-
"price": "2.00",
|
|
142
|
-
"original_price": "0.00",
|
|
143
|
-
"cost_price": "0.00",
|
|
144
|
-
"cover": "",
|
|
145
|
-
"channel_application": ["online-store", "pos", "bbc-module:mebook"],
|
|
146
|
-
"is_track": 0,
|
|
147
|
-
"over_sold": 0,
|
|
148
|
-
"is_gst": 1,
|
|
149
|
-
"code": "",
|
|
150
|
-
"barcode": "",
|
|
151
|
-
"is_delivery": 0,
|
|
152
|
-
"weight_unit": "KILOGRAMS",
|
|
153
|
-
"weight_value": "0.00",
|
|
154
|
-
"type": "physical",
|
|
155
|
-
"unit": "",
|
|
156
|
-
"sort": 9999999,
|
|
157
|
-
"subtitle": "",
|
|
158
|
-
"minimum_markup_price": "0.00",
|
|
159
|
-
"is_bundle": 0,
|
|
160
|
-
"description": "",
|
|
161
|
-
"open_sold_weight": 0,
|
|
162
|
-
"unit_value": 0,
|
|
163
|
-
"is_variant": 0,
|
|
164
|
-
"variant_count": 0,
|
|
165
|
-
"add_time": {
|
|
166
|
-
"additional_time_options": "unlimited",
|
|
167
|
-
"unit_duration": 30,
|
|
168
|
-
"min_add_time": 30,
|
|
169
|
-
"max_add_time": 780,
|
|
170
|
-
"calculate_type": "select_quantity",
|
|
171
|
-
"relation_product": {
|
|
172
|
-
"type": "product_all",
|
|
173
|
-
"products": []
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
"shelf_product_datas": [],
|
|
177
|
-
"step_value": 1,
|
|
178
|
-
"min_num_unit": 1,
|
|
179
|
-
"is_charge_tax": 1,
|
|
180
|
-
"base_price": "2.00",
|
|
181
|
-
"variant": []
|
|
182
|
-
}
|
|
183
|
-
}];
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 计算指定加时时长下的最优购买方案。
|
|
3
|
-
*
|
|
4
|
-
* 输入的商品结构来自旧版 booking addTimeModal 的加时商品配置映射:
|
|
5
|
-
* - `minMinutes`:该商品第一次可选择的最小时长。
|
|
6
|
-
* - `maxMinutes`:单次购买该商品可覆盖的最大时长。
|
|
7
|
-
* - `unitMinutes`:超过最小时长后,每次递增的时长切片。
|
|
8
|
-
* - `price`:每个 `unitMinutes` 切片的价格。
|
|
9
|
-
* - `unlimited`:固定价格商品,可覆盖任意目标时长。
|
|
10
|
-
*
|
|
11
|
-
* 算法流程:
|
|
12
|
-
*
|
|
13
|
-
* ```
|
|
14
|
-
* products
|
|
15
|
-
* |
|
|
16
|
-
* v
|
|
17
|
-
* 将每个普通商品展开成有限候选档位
|
|
18
|
-
* 商品 A: min=30, max=60, unit=10, price=10
|
|
19
|
-
* => 30m/$30, 40m/$40, 50m/$50, 60m/$60
|
|
20
|
-
* |
|
|
21
|
-
* v
|
|
22
|
-
* 单独加入 unlimited 候选
|
|
23
|
-
* unlimited 商品 => targetMinutes / 固定商品价格
|
|
24
|
-
* |
|
|
25
|
-
* v
|
|
26
|
-
* 按 covered minutes 做动态规划
|
|
27
|
-
* dp[minutes] = 正好覆盖 `minutes` 时的最低价候选组合
|
|
28
|
-
* |
|
|
29
|
-
* v
|
|
30
|
-
* 从所有 dp[minutes >= targetMinutes] 中挑选最优方案
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* 候选档位生成刻意对齐旧版 addTimeModal:
|
|
34
|
-
* `totalPrice = minutes / unitMinutes * price`.
|
|
35
|
-
* 例如 `minMinutes=30`、`unitMinutes=10`、`price=10` 时:
|
|
36
|
-
* - 30 分钟 => 30 / 10 * 10 = 30
|
|
37
|
-
* - 60 分钟 => 60 / 10 * 10 = 60
|
|
38
|
-
*
|
|
39
|
-
* 目标时长不要求精确命中某个档位,只需要覆盖即可。例如目标是 51 分钟时,
|
|
40
|
-
* 60 分钟档位可以作为候选。动态规划也允许跨商品组合,例如商品 A 的 30m
|
|
41
|
-
* 加上商品 B 的 30m。最终方案按以下优先级比较:
|
|
42
|
-
* 1. 总价更低;
|
|
43
|
-
* 2. 超出时长更少,即 `coveredMinutes - targetMinutes` 更小;
|
|
44
|
-
* 3. 结果行数更少,让购买方案尽量简单。
|
|
45
|
-
*
|
|
46
|
-
* 典型匹配示例:
|
|
47
|
-
*
|
|
48
|
-
* 示例 1:精确命中,直接选择更便宜的商品。
|
|
49
|
-
* ```
|
|
50
|
-
* target = 30
|
|
51
|
-
* 商品 A: min=30, max=30, unit=30, price=10 => 30m/$10
|
|
52
|
-
* 商品 B: min=30, max=30, unit=30, price=8 => 30m/$8
|
|
53
|
-
* 结果:选择商品 B,coveredMinutes=30,totalPrice=8
|
|
54
|
-
* ```
|
|
55
|
-
*
|
|
56
|
-
* 示例 2:目标时长落在两个档位之间,向上选择可覆盖的档位。
|
|
57
|
-
* ```
|
|
58
|
-
* target = 51
|
|
59
|
-
* 商品 A: min=30, max=120, unit=10, price=10
|
|
60
|
-
* 候选:30m/$30, 40m/$40, 50m/$50, 60m/$60 ...
|
|
61
|
-
* 结果:50m 不足以覆盖 51m,因此选择 60m/$60
|
|
62
|
-
* ```
|
|
63
|
-
*
|
|
64
|
-
* 示例 3:不同商品都能覆盖同一目标时长,比较最终价格。
|
|
65
|
-
* ```
|
|
66
|
-
* target = 51
|
|
67
|
-
* 商品 A: min=30, max=120, unit=10, price=10 => 60m/$60
|
|
68
|
-
* 商品 B: min=30, max=120, unit=30, price=25 => 60m/$50
|
|
69
|
-
* 结果:两个方案都覆盖 60m,但商品 B 更便宜,所以选择商品 B
|
|
70
|
-
* ```
|
|
71
|
-
*
|
|
72
|
-
* 示例 4:允许跨商品组合,组合价更低时会选择组合。
|
|
73
|
-
* ```
|
|
74
|
-
* target = 90
|
|
75
|
-
* 商品 A: min=30, max=30, unit=30, price=5 => 30m/$5
|
|
76
|
-
* 商品 B: min=60, max=60, unit=60, price=8 => 60m/$8
|
|
77
|
-
* 商品 C: min=90, max=90, unit=90, price=20 => 90m/$20
|
|
78
|
-
* 结果:商品 A + 商品 B = 90m/$13,比商品 C 更便宜
|
|
79
|
-
* ```
|
|
80
|
-
*
|
|
81
|
-
* 示例 5:允许重复购买同一个候选档位。
|
|
82
|
-
* ```
|
|
83
|
-
* target = 90
|
|
84
|
-
* 商品 A: min=30, max=30, unit=30, price=5 => 30m/$5
|
|
85
|
-
* 结果:购买 3 份商品 A,coveredMinutes=90,totalPrice=15,
|
|
86
|
-
* lines 中会合并为一行:product_add_schedule_time=30,num=3
|
|
87
|
-
* ```
|
|
88
|
-
*
|
|
89
|
-
* 示例 6:unlimited 可以覆盖任意目标时长,并参与价格比较。
|
|
90
|
-
* ```
|
|
91
|
-
* target = 180
|
|
92
|
-
* 商品 A: min=30, max=120, unit=30, price=10
|
|
93
|
-
* 商品 B: unlimited=true, price=35
|
|
94
|
-
* 普通商品可以组合成 180m,例如 120m + 60m,总价 $60
|
|
95
|
-
* unlimited 商品固定 $35
|
|
96
|
-
* 结果:选择 unlimited 商品,coveredMinutes=180,totalPrice=35
|
|
97
|
-
* ```
|
|
98
|
-
*
|
|
99
|
-
* 示例 7:unlimited 不一定优先,普通商品更便宜时选择普通商品。
|
|
100
|
-
* ```
|
|
101
|
-
* target = 60
|
|
102
|
-
* 商品 A: min=30, max=60, unit=30, price=10 => 60m/$20
|
|
103
|
-
* 商品 B: unlimited=true, price=50
|
|
104
|
-
* 结果:选择商品 A 的 60m 档位
|
|
105
|
-
* ```
|
|
106
|
-
*
|
|
107
|
-
* 示例 8:价格相同,优先选择超出时长更少的方案。
|
|
108
|
-
* ```
|
|
109
|
-
* target = 51
|
|
110
|
-
* 商品 A: 60m/$20
|
|
111
|
-
* 商品 B: 90m/$20
|
|
112
|
-
* 结果:选择 60m,因为 overage=9,小于 90m 的 overage=39
|
|
113
|
-
* ```
|
|
114
|
-
*
|
|
115
|
-
* 示例 9:价格和覆盖时长都相同,优先选择结果行数更少的方案。
|
|
116
|
-
* ```
|
|
117
|
-
* target = 60
|
|
118
|
-
* 商品 A: 60m/$20
|
|
119
|
-
* 商品 B: 30m/$10
|
|
120
|
-
* 商品 C: 30m/$10
|
|
121
|
-
* 结果:商品 A 单行方案和 B+C 两行方案价格、时长相同,选择商品 A
|
|
122
|
-
* ```
|
|
123
|
-
*
|
|
124
|
-
* 示例 10:没有任何有效商品时返回 `NO_PRODUCTS`。
|
|
125
|
-
* ```
|
|
126
|
-
* target = 30
|
|
127
|
-
* products = []
|
|
128
|
-
* 结果:available=false,unavailableReason='NO_PRODUCTS'
|
|
129
|
-
* ```
|
|
130
|
-
*
|
|
131
|
-
* 示例 11:有商品但没有可用候选时返回 `NO_COVERAGE`。
|
|
132
|
-
* ```
|
|
133
|
-
* target = 30
|
|
134
|
-
* 商品 A: price=0,或 minMinutes 缺失/无效
|
|
135
|
-
* 结果:available=false,unavailableReason='NO_COVERAGE'
|
|
136
|
-
* ```
|
|
137
|
-
*
|
|
138
|
-
* 示例 12:目标时长小于等于 0 时无需购买。
|
|
139
|
-
* ```
|
|
140
|
-
* target = 0
|
|
141
|
-
* 结果:available=true,coveredMinutes=0,totalPrice=0,lines=[]
|
|
142
|
-
* ```
|
|
143
|
-
*
|
|
144
|
-
* 搜索边界:
|
|
145
|
-
* 有限档位只需要搜索到 `targetMinutes + maxFiniteCandidateMinutes`。
|
|
146
|
-
* 这里的 `maxFiniteCandidateMinutes` 是所有普通候选档位里的最大时长。
|
|
147
|
-
* 例如目标是 51 分钟,最大普通档位是 120 分钟,则只搜索到 171 分钟。
|
|
148
|
-
* 如果某个组合覆盖了 180 分钟,那么移除其中任意一个普通档位后,剩余时长
|
|
149
|
-
* 仍然有机会覆盖 51 分钟,而且价格一定不会更高,所以 180 分钟这个组合不
|
|
150
|
-
* 可能是最优解。
|
|
151
|
-
*/
|
|
152
|
-
export interface AddTimeProduct {
|
|
153
|
-
id: string | number;
|
|
154
|
-
title?: string;
|
|
155
|
-
price: number;
|
|
156
|
-
minMinutes?: number;
|
|
157
|
-
maxMinutes?: number;
|
|
158
|
-
unitMinutes?: number;
|
|
159
|
-
unlimited?: boolean;
|
|
160
|
-
_originalProduct?: unknown;
|
|
161
|
-
}
|
|
162
|
-
export interface AddTimePlanLine {
|
|
163
|
-
product_id: string | number;
|
|
164
|
-
product_title?: string;
|
|
165
|
-
product_add_schedule_time: number;
|
|
166
|
-
num: number;
|
|
167
|
-
price: number;
|
|
168
|
-
_originalProduct?: unknown;
|
|
169
|
-
}
|
|
170
|
-
export interface AddTimePlan {
|
|
171
|
-
available: boolean;
|
|
172
|
-
unavailableReason?: 'NO_PRODUCTS' | 'NO_COVERAGE';
|
|
173
|
-
targetMinutes: number;
|
|
174
|
-
coveredMinutes: number;
|
|
175
|
-
totalPrice: number;
|
|
176
|
-
lines: AddTimePlanLine[];
|
|
177
|
-
}
|
|
178
|
-
interface AddTimeCandidate extends AddTimePlanLine {
|
|
179
|
-
totalPrice: number;
|
|
180
|
-
unlimited?: boolean;
|
|
181
|
-
}
|
|
182
|
-
export declare const ADD_TIME_UNIT_MINUTES: readonly [10, 15, 20, 30, 45, 60];
|
|
183
|
-
export declare function buildAddTimeCandidates(products: AddTimeProduct[]): AddTimeCandidate[];
|
|
184
|
-
export declare function resolveBestAddTimePlan(products: AddTimeProduct[], targetMinutes: number): AddTimePlan;
|
|
185
|
-
export {};
|