@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
package/dist/core/index.js
CHANGED
|
@@ -45,6 +45,7 @@ var PisellOSCore = /*#__PURE__*/function () {
|
|
|
45
45
|
this.serverOptions = options.server;
|
|
46
46
|
}
|
|
47
47
|
this.initialize(options);
|
|
48
|
+
console.log('constructor1234');
|
|
48
49
|
}
|
|
49
50
|
_createClass(PisellOSCore, [{
|
|
50
51
|
key: "initialize",
|
|
@@ -106,20 +107,21 @@ var PisellOSCore = /*#__PURE__*/function () {
|
|
|
106
107
|
_context.next = 16;
|
|
107
108
|
return this.server.initialize(this.serverOptions.modules, this.serverOptions.autoInitData !== false, options);
|
|
108
109
|
case 16:
|
|
110
|
+
console.log('[PisellOS] ✅ Server 初始化完成,所有数据已预加载');
|
|
109
111
|
this.log('[PisellOS] Server 初始化完成');
|
|
110
|
-
_context.next =
|
|
112
|
+
_context.next = 25;
|
|
111
113
|
break;
|
|
112
|
-
case
|
|
113
|
-
_context.prev =
|
|
114
|
+
case 20:
|
|
115
|
+
_context.prev = 20;
|
|
114
116
|
_context.t0 = _context["catch"](6);
|
|
115
117
|
console.error('[PisellOS] ❌ Server 初始化失败:', _context.t0);
|
|
116
118
|
this.log("Server \u521D\u59CB\u5316\u5931\u8D25: ".concat(_context.t0), 'error');
|
|
117
119
|
throw _context.t0;
|
|
118
|
-
case
|
|
120
|
+
case 25:
|
|
119
121
|
case "end":
|
|
120
122
|
return _context.stop();
|
|
121
123
|
}
|
|
122
|
-
}, _callee, this, [[6,
|
|
124
|
+
}, _callee, this, [[6, 20]]);
|
|
123
125
|
}));
|
|
124
126
|
function initializeServer(_x) {
|
|
125
127
|
return _initializeServer.apply(this, arguments);
|
|
@@ -137,10 +139,11 @@ var PisellOSCore = /*#__PURE__*/function () {
|
|
|
137
139
|
var prefix = '[PisellOS]';
|
|
138
140
|
switch (level) {
|
|
139
141
|
case 'info':
|
|
142
|
+
console.log("".concat(prefix, " ").concat(message));
|
|
140
143
|
break;
|
|
141
144
|
case 'warn':
|
|
142
145
|
// 使用 console.log 避免显示堆栈跟踪,提升性能
|
|
143
|
-
|
|
146
|
+
console.log("%c".concat(prefix, "%c ").concat(message), 'color: #f59e0b; font-weight: bold;', 'color: #f59e0b;');
|
|
144
147
|
break;
|
|
145
148
|
case 'error':
|
|
146
149
|
console.error("".concat(prefix, " ").concat(message));
|
|
@@ -247,6 +250,7 @@ var PisellOSCore = /*#__PURE__*/function () {
|
|
|
247
250
|
}
|
|
248
251
|
// 预先给模块初始化值系统
|
|
249
252
|
var _createStore = createStore((options === null || options === void 0 ? void 0 : options.initialState) || {}, module.name, function (path, value) {
|
|
253
|
+
console.log('core 检测到模块值更新', module.name, path, value);
|
|
250
254
|
_this3.effects.emit("".concat(module.name, ":changed"), {
|
|
251
255
|
path: path,
|
|
252
256
|
value: value
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,5 @@ export * from './plugins';
|
|
|
8
8
|
export * from './solution';
|
|
9
9
|
export * from './model';
|
|
10
10
|
export { PisellOSCore } from './core';
|
|
11
|
-
export { DataVariantEvaluator } from './model/strategy/adapter/dataVariant/evaluator';
|
|
12
11
|
import PisellOSCore from './core';
|
|
13
12
|
export default PisellOSCore;
|
package/dist/index.js
CHANGED
|
@@ -13,9 +13,6 @@ export * from "./model";
|
|
|
13
13
|
// 导出核心实现
|
|
14
14
|
export { PisellOSCore } from "./core";
|
|
15
15
|
|
|
16
|
-
// 策略评估器(宿主注入 smart pricing / promotion 等场景使用)
|
|
17
|
-
export { DataVariantEvaluator } from "./model/strategy/adapter/dataVariant/evaluator";
|
|
18
|
-
|
|
19
16
|
// 导出框架主类
|
|
20
17
|
import PisellOSCore from "./core";
|
|
21
18
|
export default PisellOSCore;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// 导出评估器
|
|
2
|
+
export { PromotionEvaluator } from "./evaluator";
|
|
3
|
+
|
|
4
|
+
// 导出适配器
|
|
5
|
+
export { PromotionAdapter } from "./adapter";
|
|
6
|
+
export { default } from "./adapter";
|
|
7
|
+
|
|
8
|
+
// 导出策略配置示例常量
|
|
9
|
+
export { X_ITEMS_FOR_Y_PRICE_STRATEGY, BUY_X_GET_Y_FREE_STRATEGY } from "./examples";
|
|
@@ -11,7 +11,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
11
11
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
12
12
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
13
|
import { StrategyEngine } from "../../index";
|
|
14
|
-
import { processVouchers as _processVouchers, recalculateVouchers as _recalculateVouchers, getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice
|
|
14
|
+
import { processVouchers as _processVouchers, recalculateVouchers as _recalculateVouchers, getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice } from "./utils";
|
|
15
15
|
import { locales } from "./locales";
|
|
16
16
|
import Decimal from 'decimal.js';
|
|
17
17
|
var defaultStrategyMetadataCustom = {
|
|
@@ -257,6 +257,7 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
|
|
|
257
257
|
var rawText = this.getText(reasonCode);
|
|
258
258
|
// 金额类型字段:从 otherParams.getData 取货币符号;非金额或取不到则留空
|
|
259
259
|
var currency = failedField && AMOUNT_FIELDS.has(failedField) ? ((_this$otherParams = this.otherParams) === null || _this$otherParams === void 0 || (_this$otherParams$get = (_this$otherParams2 = _this$otherParams).getData) === null || _this$otherParams$get === void 0 ? void 0 : _this$otherParams$get.call(_this$otherParams2, 'shop_symbol')) || '' : '';
|
|
260
|
+
console.log(currency, 'currency12345');
|
|
260
261
|
var reason = thresholdValue !== undefined ? formatReason(rawText, thresholdValue, currency) : rawText;
|
|
261
262
|
results.push({
|
|
262
263
|
voucher: voucher,
|
|
@@ -505,6 +506,7 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
|
|
|
505
506
|
}, {
|
|
506
507
|
key: "calculateApplicableProducts",
|
|
507
508
|
value: function calculateApplicableProducts(products, applicableProductIds, deductTaxAndFee) {
|
|
509
|
+
console.log(products, 'products1234');
|
|
508
510
|
var total = 0;
|
|
509
511
|
var count = 0;
|
|
510
512
|
|
|
@@ -521,8 +523,8 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
|
|
|
521
523
|
// 检查主商品是否适用
|
|
522
524
|
var isMainProductApplicable = applicableProductIds === null || applicableProductIds.includes(product.product_id);
|
|
523
525
|
if (isMainProductApplicable) {
|
|
524
|
-
//
|
|
525
|
-
total += getMainProductPrice(product, deductTaxAndFee) * productQuantity
|
|
526
|
+
// 计算主商品价格(包含加减价子商品)
|
|
527
|
+
total += getMainProductPrice(product, deductTaxAndFee) * productQuantity;
|
|
526
528
|
count += productQuantity;
|
|
527
529
|
}
|
|
528
530
|
|
|
@@ -534,9 +536,9 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
|
|
|
534
536
|
// 检查子商品是否适用
|
|
535
537
|
var isBundleItemApplicable = applicableProductIds === null || applicableProductIds.includes(bundleItem.bundle_product_id);
|
|
536
538
|
if (isBundleItemApplicable) {
|
|
537
|
-
// 计算原价子商品价格
|
|
539
|
+
// 计算原价子商品价格
|
|
538
540
|
var bundleItemQuantity = bundleItem.num * productQuantity;
|
|
539
|
-
total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee)
|
|
541
|
+
total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee);
|
|
540
542
|
count += bundleItemQuantity;
|
|
541
543
|
}
|
|
542
544
|
}
|
|
@@ -164,6 +164,8 @@ var strategyConfigs = [
|
|
|
164
164
|
// ============================================
|
|
165
165
|
|
|
166
166
|
function runExample() {
|
|
167
|
+
console.log('========== WalletPass 评估器示例 ==========\n');
|
|
168
|
+
|
|
167
169
|
// 创建评估器实例
|
|
168
170
|
var evaluator = new WalletPassEvaluator();
|
|
169
171
|
|
|
@@ -176,17 +178,38 @@ function runExample() {
|
|
|
176
178
|
});
|
|
177
179
|
|
|
178
180
|
// 输出结果
|
|
179
|
-
|
|
181
|
+
console.log('订单信息:');
|
|
182
|
+
console.log("- \u603B\u91D1\u989D: ".concat(180, " \u5143"));
|
|
183
|
+
console.log("- \u5546\u54C1: ".concat(products.map(function (p) {
|
|
184
|
+
return "".concat(p.name, "(").concat(p.quantity, "\u4EF6)");
|
|
185
|
+
}).join(', '), "\n"));
|
|
186
|
+
console.log('评估结果:\n');
|
|
180
187
|
results.forEach(function (result, index) {
|
|
181
|
-
|
|
188
|
+
console.log("Voucher ".concat(index + 1, ": ").concat(result.voucher.id));
|
|
189
|
+
console.log(" \u9762\u989D: ".concat(result.voucher.amount, " \u5143"));
|
|
190
|
+
console.log(" \u53EF\u7528: ".concat(result.isApplicable ? '✅ 是' : '❌ 否'));
|
|
191
|
+
if (result.isApplicable) {
|
|
192
|
+
console.log(" \u6700\u5927\u62B5\u6263: ".concat(result.maxDeduction, " \u5143"));
|
|
193
|
+
console.log(" \u6BCF\u5355\u53EF\u7528: ".concat(result.canUseCount, " \u5F20"));
|
|
194
|
+
console.log(" \u62B5\u6263\u7A0E\u8D39: ".concat(result.deductTaxAndFee ? '是' : '否'));
|
|
195
|
+
console.log(" \u9002\u7528\u5546\u54C1: ".concat(result.applicableProductIds.join(', ')));
|
|
196
|
+
} else {
|
|
197
|
+
console.log(" \u539F\u56E0: ".concat(result.reason));
|
|
198
|
+
console.log(" \u539F\u56E0\u7801: ".concat(result.reasonCode));
|
|
199
|
+
}
|
|
200
|
+
console.log('');
|
|
182
201
|
});
|
|
183
202
|
|
|
184
203
|
// 筛选可用的 vouchers
|
|
185
204
|
var availableVouchers = results.filter(function (r) {
|
|
186
205
|
return r.isApplicable;
|
|
187
206
|
});
|
|
207
|
+
console.log("\n\u5171 ".concat(availableVouchers.length, " \u5F20\u53EF\u7528"));
|
|
188
208
|
if (availableVouchers.length > 0) {
|
|
189
|
-
|
|
209
|
+
console.log('可用 voucher ID:');
|
|
210
|
+
availableVouchers.forEach(function (v) {
|
|
211
|
+
console.log(" - ".concat(v.voucher.id, ": \u6700\u591A\u62B5\u6263 ").concat(v.maxDeduction, " \u5143"));
|
|
212
|
+
});
|
|
190
213
|
}
|
|
191
214
|
}
|
|
192
215
|
|
|
@@ -5,7 +5,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
|
|
|
5
5
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
7
7
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
|
-
import { getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice
|
|
8
|
+
import { getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice } from "./utils";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Wallet Pass 适配器
|
|
@@ -149,8 +149,8 @@ var WalletPassAdapter = /*#__PURE__*/function () {
|
|
|
149
149
|
// 检查主商品是否适用
|
|
150
150
|
var isMainProductApplicable = applicableProductIds === null || applicableProductIds.includes(product.product_id);
|
|
151
151
|
if (isMainProductApplicable) {
|
|
152
|
-
//
|
|
153
|
-
total += getMainProductPrice(product, deductTaxAndFee) * productQuantity
|
|
152
|
+
// 计算主商品价格(包含加减价子商品)
|
|
153
|
+
total += getMainProductPrice(product, deductTaxAndFee) * productQuantity;
|
|
154
154
|
count += productQuantity;
|
|
155
155
|
}
|
|
156
156
|
|
|
@@ -162,9 +162,9 @@ var WalletPassAdapter = /*#__PURE__*/function () {
|
|
|
162
162
|
// 检查子商品是否适用
|
|
163
163
|
var isBundleItemApplicable = applicableProductIds === null || applicableProductIds.includes(bundleItem.bundle_product_id);
|
|
164
164
|
if (isBundleItemApplicable) {
|
|
165
|
-
// 计算原价子商品价格
|
|
165
|
+
// 计算原价子商品价格
|
|
166
166
|
var bundleItemQuantity = bundleItem.num * productQuantity;
|
|
167
|
-
total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee)
|
|
167
|
+
total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee);
|
|
168
168
|
count += bundleItemQuantity;
|
|
169
169
|
}
|
|
170
170
|
}
|
|
@@ -82,8 +82,6 @@ export interface Product {
|
|
|
82
82
|
surcharge_rounding_remainder?: number;
|
|
83
83
|
tax_fee_rounding_remainder?: number;
|
|
84
84
|
main_product_selling_price: number;
|
|
85
|
-
/** 商品折扣差额 */
|
|
86
|
-
product_discount_difference?: number;
|
|
87
85
|
};
|
|
88
86
|
is_price_include_tax: 0 | 1;
|
|
89
87
|
product_bundle: {
|
|
@@ -101,7 +99,6 @@ export interface Product {
|
|
|
101
99
|
surcharge_fee: number;
|
|
102
100
|
surcharge_rounding_remainder?: number;
|
|
103
101
|
tax_fee_rounding_remainder?: number;
|
|
104
|
-
product_discount_difference?: number;
|
|
105
102
|
};
|
|
106
103
|
}[];
|
|
107
104
|
}
|
|
@@ -29,19 +29,6 @@ export declare function recalculateVouchers(allVouchers: any[], selectedVouchers
|
|
|
29
29
|
allWithUpdatedStatus: any[];
|
|
30
30
|
selectedWithDetails: any[];
|
|
31
31
|
};
|
|
32
|
-
/**
|
|
33
|
-
* 获取税费和附加费的舍入余数
|
|
34
|
-
* @param product 商品
|
|
35
|
-
* @param isDeductTaxAndFee 是否抵扣税费与附加费
|
|
36
|
-
* @returns 舍入余数(税费 + 附加费的舍入余数)
|
|
37
|
-
*/
|
|
38
|
-
export declare const getTaxAndFeeRoundingRemainder: (product: Product, isDeductTaxAndFee: boolean) => number;
|
|
39
|
-
/**
|
|
40
|
-
* 获取主商品的商品差额
|
|
41
|
-
* @param product 商品
|
|
42
|
-
* @returns 商品差额(与数量无关,计算总价时需要减去)
|
|
43
|
-
*/
|
|
44
|
-
export declare const getProductDiscountDifference: (product: Product) => number;
|
|
45
32
|
/**
|
|
46
33
|
* 获取主商品价格(单价,不含舍入余数)
|
|
47
34
|
* @param product 商品
|
|
@@ -49,19 +36,6 @@ export declare const getProductDiscountDifference: (product: Product) => number;
|
|
|
49
36
|
* @returns 商品单价
|
|
50
37
|
*/
|
|
51
38
|
export declare const getMainProductPrice: (product: Product, isDeductTaxAndFee: boolean) => number;
|
|
52
|
-
/**
|
|
53
|
-
* 获取套餐子商品税费和附加费的舍入余数
|
|
54
|
-
* @param bundleItem 套餐子商品
|
|
55
|
-
* @param isDeductTaxAndFee 是否抵扣税费与附加费
|
|
56
|
-
* @returns 舍入余数(税费 + 附加费的舍入余数)
|
|
57
|
-
*/
|
|
58
|
-
export declare const getBundleItemTaxAndFeeRoundingRemainder: (bundleItem: any, isDeductTaxAndFee: boolean) => number;
|
|
59
|
-
/**
|
|
60
|
-
* 获取套餐子商品的商品差额
|
|
61
|
-
* @param bundleItem 套餐子商品
|
|
62
|
-
* @returns 商品差额(与数量无关,计算总价时需要减去)
|
|
63
|
-
*/
|
|
64
|
-
export declare const getBundleItemDiscountDifference: (bundleItem: any) => number;
|
|
65
39
|
/**
|
|
66
40
|
* 获取套餐子商品价格(不含舍入余数)
|
|
67
41
|
* @param bundleItem 套餐子商品
|
|
@@ -72,6 +72,7 @@ function applyMaxPassUsageIncrements(usageMap, walletPassProductId, maxPassesPer
|
|
|
72
72
|
// 辅助函数:根据 deductTaxAndFee 配置获取推荐使用金额
|
|
73
73
|
var getRecommendedAmount = function getRecommendedAmount(voucher) {
|
|
74
74
|
var _config$deductTaxAndF;
|
|
75
|
+
console.log('voucher312', voucher);
|
|
75
76
|
var config = voucher.config,
|
|
76
77
|
recommended_usage_amount = voucher.recommended_usage_amount,
|
|
77
78
|
recommended_pure_product_usage_amount = voucher.recommended_pure_product_usage_amount;
|
|
@@ -165,6 +166,8 @@ var getApplicableProducts = function getApplicableProducts(voucher, productsData
|
|
|
165
166
|
* @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status
|
|
166
167
|
*/
|
|
167
168
|
export function processVouchers(applicableVouchers, orderTotalAmount, products) {
|
|
169
|
+
console.log(products, 'products123');
|
|
170
|
+
|
|
168
171
|
// 拆分商品数据,同时维护含税和不含税两个金额池
|
|
169
172
|
// remainingAmountWithTax: 含税费的剩余可抵扣金额
|
|
170
173
|
// remainingAmountPure: 纯商品金额(不含税费)的剩余可抵扣金额
|
|
@@ -939,40 +942,6 @@ export function recalculateVouchers(allVouchers, selectedVouchers, orderTotalAmo
|
|
|
939
942
|
};
|
|
940
943
|
}
|
|
941
944
|
|
|
942
|
-
/**
|
|
943
|
-
* 获取税费和附加费的舍入余数
|
|
944
|
-
* @param product 商品
|
|
945
|
-
* @param isDeductTaxAndFee 是否抵扣税费与附加费
|
|
946
|
-
* @returns 舍入余数(税费 + 附加费的舍入余数)
|
|
947
|
-
*/
|
|
948
|
-
export var getTaxAndFeeRoundingRemainder = function getTaxAndFeeRoundingRemainder(product, isDeductTaxAndFee) {
|
|
949
|
-
var _product$metadata2;
|
|
950
|
-
if (!isDeductTaxAndFee) {
|
|
951
|
-
return 0;
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
// 税费舍入余数(如果价格包含税则为0)
|
|
955
|
-
var taxFeeRoundingRemainder = new Decimal(0);
|
|
956
|
-
if (product.is_price_include_tax !== 1) {
|
|
957
|
-
var _product$metadata;
|
|
958
|
-
taxFeeRoundingRemainder = new Decimal((product === null || product === void 0 || (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.tax_fee_rounding_remainder) || 0);
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
// 附加费舍入余数
|
|
962
|
-
var surchargeFeeRoundingRemainder = new Decimal((product === null || product === void 0 || (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.surcharge_rounding_remainder) || 0);
|
|
963
|
-
return taxFeeRoundingRemainder.add(surchargeFeeRoundingRemainder).toNumber();
|
|
964
|
-
};
|
|
965
|
-
|
|
966
|
-
/**
|
|
967
|
-
* 获取主商品的商品差额
|
|
968
|
-
* @param product 商品
|
|
969
|
-
* @returns 商品差额(与数量无关,计算总价时需要减去)
|
|
970
|
-
*/
|
|
971
|
-
export var getProductDiscountDifference = function getProductDiscountDifference(product) {
|
|
972
|
-
var _product$metadata3;
|
|
973
|
-
return new Decimal((product === null || product === void 0 || (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.product_discount_difference) || 0).toNumber();
|
|
974
|
-
};
|
|
975
|
-
|
|
976
945
|
/**
|
|
977
946
|
* 获取主商品价格(单价,不含舍入余数)
|
|
978
947
|
* @param product 商品
|
|
@@ -980,8 +949,8 @@ export var getProductDiscountDifference = function getProductDiscountDifference(
|
|
|
980
949
|
* @returns 商品单价
|
|
981
950
|
*/
|
|
982
951
|
export var getMainProductPrice = function getMainProductPrice(product, isDeductTaxAndFee) {
|
|
983
|
-
var _product$
|
|
984
|
-
var mainProductPrice = new Decimal((product === null || product === void 0 ? void 0 : product.main_product_selling_price) || ((_product$
|
|
952
|
+
var _product$metadata, _product$metadata2, _product$metadata3, _product$metadata4, _product$metadata5;
|
|
953
|
+
var mainProductPrice = new Decimal((product === null || product === void 0 ? void 0 : product.main_product_selling_price) || ((_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.main_product_selling_price) || 0);
|
|
985
954
|
var _iterator6 = _createForOfIteratorHelper((product === null || product === void 0 ? void 0 : product.product_bundle) || []),
|
|
986
955
|
_step6;
|
|
987
956
|
try {
|
|
@@ -1000,14 +969,14 @@ export var getMainProductPrice = function getMainProductPrice(product, isDeductT
|
|
|
1000
969
|
} finally {
|
|
1001
970
|
_iterator6.f();
|
|
1002
971
|
}
|
|
1003
|
-
var taxFee = new Decimal((product === null || product === void 0 ? void 0 : product.tax_fee) || (product === null || product === void 0 || (_product$
|
|
972
|
+
var taxFee = new Decimal((product === null || product === void 0 ? void 0 : product.tax_fee) || (product === null || product === void 0 || (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.main_product_attached_bundle_tax_fee) || 0).add((product === null || product === void 0 || (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.tax_fee_rounding_remainder) || 0);
|
|
1004
973
|
if (product.is_price_include_tax === 1) {
|
|
1005
974
|
taxFee = new Decimal(0);
|
|
1006
975
|
}
|
|
1007
976
|
|
|
1008
977
|
// 税费
|
|
1009
978
|
// 附加费
|
|
1010
|
-
var surchargeFee = new Decimal((product === null || product === void 0 || (_product$
|
|
979
|
+
var surchargeFee = new Decimal((product === null || product === void 0 || (_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_attached_bundle_surcharge_fee) || 0).add((product === null || product === void 0 || (_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.surcharge_rounding_remainder) || 0);
|
|
1011
980
|
|
|
1012
981
|
// 税费附加费总额
|
|
1013
982
|
var taxAndFeeTotal = taxFee.add(surchargeFee);
|
|
@@ -1019,40 +988,6 @@ export var getMainProductPrice = function getMainProductPrice(product, isDeductT
|
|
|
1019
988
|
return mainProductPrice.toNumber();
|
|
1020
989
|
};
|
|
1021
990
|
|
|
1022
|
-
/**
|
|
1023
|
-
* 获取套餐子商品税费和附加费的舍入余数
|
|
1024
|
-
* @param bundleItem 套餐子商品
|
|
1025
|
-
* @param isDeductTaxAndFee 是否抵扣税费与附加费
|
|
1026
|
-
* @returns 舍入余数(税费 + 附加费的舍入余数)
|
|
1027
|
-
*/
|
|
1028
|
-
export var getBundleItemTaxAndFeeRoundingRemainder = function getBundleItemTaxAndFeeRoundingRemainder(bundleItem, isDeductTaxAndFee) {
|
|
1029
|
-
var _bundleItem$metadata2;
|
|
1030
|
-
if (!isDeductTaxAndFee) {
|
|
1031
|
-
return 0;
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
// 税费舍入余数(如果价格包含税则为0)
|
|
1035
|
-
var taxFeeRoundingRemainder = new Decimal(0);
|
|
1036
|
-
if (bundleItem.is_price_include_tax !== 1) {
|
|
1037
|
-
var _bundleItem$metadata;
|
|
1038
|
-
taxFeeRoundingRemainder = new Decimal(((_bundleItem$metadata = bundleItem.metadata) === null || _bundleItem$metadata === void 0 ? void 0 : _bundleItem$metadata.tax_fee_rounding_remainder) || 0);
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
|
-
// 附加费舍入余数
|
|
1042
|
-
var surchargeFeeRoundingRemainder = new Decimal(((_bundleItem$metadata2 = bundleItem.metadata) === null || _bundleItem$metadata2 === void 0 ? void 0 : _bundleItem$metadata2.surcharge_rounding_remainder) || 0);
|
|
1043
|
-
return taxFeeRoundingRemainder.add(surchargeFeeRoundingRemainder).toNumber();
|
|
1044
|
-
};
|
|
1045
|
-
|
|
1046
|
-
/**
|
|
1047
|
-
* 获取套餐子商品的商品差额
|
|
1048
|
-
* @param bundleItem 套餐子商品
|
|
1049
|
-
* @returns 商品差额(与数量无关,计算总价时需要减去)
|
|
1050
|
-
*/
|
|
1051
|
-
export var getBundleItemDiscountDifference = function getBundleItemDiscountDifference(bundleItem) {
|
|
1052
|
-
var _bundleItem$metadata3;
|
|
1053
|
-
return new Decimal(((_bundleItem$metadata3 = bundleItem.metadata) === null || _bundleItem$metadata3 === void 0 ? void 0 : _bundleItem$metadata3.product_discount_difference) || 0).toNumber();
|
|
1054
|
-
};
|
|
1055
|
-
|
|
1056
991
|
/**
|
|
1057
992
|
* 获取套餐子商品价格(不含舍入余数)
|
|
1058
993
|
* @param bundleItem 套餐子商品
|
|
@@ -1068,14 +1003,14 @@ export var getBundleItemPrice = function getBundleItemPrice(bundleItem, parentQu
|
|
|
1068
1003
|
|
|
1069
1004
|
// 根据 deductTaxAndFee 配置决定是否加上税费和附加费
|
|
1070
1005
|
if (isDeductTaxAndFee) {
|
|
1071
|
-
var _bundleItem$tax_fee, _bundleItem$metadata$, _bundleItem$
|
|
1006
|
+
var _bundleItem$tax_fee, _bundleItem$metadata$, _bundleItem$metadata;
|
|
1072
1007
|
// 税费
|
|
1073
1008
|
var taxFee = new Decimal((_bundleItem$tax_fee = bundleItem.tax_fee) !== null && _bundleItem$tax_fee !== void 0 ? _bundleItem$tax_fee : 0).times(totalQuantity);
|
|
1074
1009
|
if (bundleItem.is_price_include_tax === 1) {
|
|
1075
1010
|
taxFee = new Decimal(0);
|
|
1076
1011
|
}
|
|
1077
1012
|
// 附加费
|
|
1078
|
-
var surchargeFee = new Decimal((_bundleItem$metadata$ = (_bundleItem$
|
|
1013
|
+
var surchargeFee = new Decimal((_bundleItem$metadata$ = (_bundleItem$metadata = bundleItem.metadata) === null || _bundleItem$metadata === void 0 ? void 0 : _bundleItem$metadata.surcharge_fee) !== null && _bundleItem$metadata$ !== void 0 ? _bundleItem$metadata$ : 0).times(totalQuantity);
|
|
1079
1014
|
bundleItemPrice = bundleItemPrice.add(taxFee).add(surchargeFee);
|
|
1080
1015
|
}
|
|
1081
1016
|
return bundleItemPrice.toNumber();
|
|
@@ -1097,11 +1032,6 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
|
|
|
1097
1032
|
var unitPriceWithTax = getMainProductPrice(product, true);
|
|
1098
1033
|
var unitPricePure = getMainProductPrice(product, false);
|
|
1099
1034
|
|
|
1100
|
-
// 获取舍入余数(与数量无关,只加一次)
|
|
1101
|
-
var roundingRemainderWithTax = getTaxAndFeeRoundingRemainder(product, true);
|
|
1102
|
-
// 获取商品差额(与数量无关,计算总价时需要减去)
|
|
1103
|
-
var discountDifference = getProductDiscountDifference(product);
|
|
1104
|
-
|
|
1105
1035
|
// 1. 添加主商品(同时计算含税和不含税两个金额,以及单价和剩余数量)
|
|
1106
1036
|
expandedProducts.push(_objectSpread(_objectSpread({}, product), {}, {
|
|
1107
1037
|
is_bundle_item: false,
|
|
@@ -1113,10 +1043,10 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
|
|
|
1113
1043
|
unitPricePure: new Decimal(unitPricePure),
|
|
1114
1044
|
// 剩余可抵扣数量
|
|
1115
1045
|
remainingQuantity: productQuantity,
|
|
1116
|
-
//
|
|
1117
|
-
remainingAmountWithTax: new Decimal(unitPriceWithTax).times(productQuantity)
|
|
1118
|
-
//
|
|
1119
|
-
remainingAmountPure: new Decimal(unitPricePure).times(productQuantity)
|
|
1046
|
+
// 含税费的剩余金额
|
|
1047
|
+
remainingAmountWithTax: new Decimal(unitPriceWithTax).times(productQuantity),
|
|
1048
|
+
// 纯商品金额(不含税费)
|
|
1049
|
+
remainingAmountPure: new Decimal(unitPricePure).times(productQuantity)
|
|
1120
1050
|
}));
|
|
1121
1051
|
|
|
1122
1052
|
// 2. 添加原价子商品(作为独立商品项)
|
|
@@ -1129,11 +1059,6 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
|
|
|
1129
1059
|
var bundleUnitPriceWithTax = new Decimal(getBundleItemPrice(bundleItem, 1, true)).dividedBy(bundleItem.num);
|
|
1130
1060
|
var bundleUnitPricePure = new Decimal(getBundleItemPrice(bundleItem, 1, false)).dividedBy(bundleItem.num);
|
|
1131
1061
|
|
|
1132
|
-
// 获取子商品舍入余数(与数量无关,只加一次)
|
|
1133
|
-
var bundleRoundingRemainder = getBundleItemTaxAndFeeRoundingRemainder(bundleItem, true);
|
|
1134
|
-
// 获取子商品差额(与数量无关,计算总价时需要减去)
|
|
1135
|
-
var bundleDiscountDifference = getBundleItemDiscountDifference(bundleItem);
|
|
1136
|
-
|
|
1137
1062
|
// 原价子商品作为独立商品
|
|
1138
1063
|
expandedProducts.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
|
|
1139
1064
|
product_id: bundleItem.bundle_product_id,
|
|
@@ -1149,10 +1074,10 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
|
|
|
1149
1074
|
unitPricePure: bundleUnitPricePure,
|
|
1150
1075
|
// 剩余可抵扣数量
|
|
1151
1076
|
remainingQuantity: bundleQuantity,
|
|
1152
|
-
//
|
|
1153
|
-
remainingAmountWithTax: new Decimal(getBundleItemPrice(bundleItem, productQuantity, true))
|
|
1154
|
-
//
|
|
1155
|
-
remainingAmountPure: new Decimal(getBundleItemPrice(bundleItem, productQuantity, false))
|
|
1077
|
+
// 含税费的剩余金额
|
|
1078
|
+
remainingAmountWithTax: new Decimal(getBundleItemPrice(bundleItem, productQuantity, true)),
|
|
1079
|
+
// 纯商品金额(不含税费)
|
|
1080
|
+
remainingAmountPure: new Decimal(getBundleItemPrice(bundleItem, productQuantity, false))
|
|
1156
1081
|
}));
|
|
1157
1082
|
}
|
|
1158
1083
|
});
|
|
@@ -246,6 +246,8 @@ var codeContext = {
|
|
|
246
246
|
// ============================================
|
|
247
247
|
|
|
248
248
|
function runExamples() {
|
|
249
|
+
console.log('====== 策略模型使用示例 ======\n');
|
|
250
|
+
|
|
249
251
|
// 创建引擎实例(开启调试和追踪)
|
|
250
252
|
var engine = createStrategyEngine({
|
|
251
253
|
debug: true,
|
|
@@ -253,23 +255,32 @@ function runExamples() {
|
|
|
253
255
|
});
|
|
254
256
|
|
|
255
257
|
// 示例1: 代金券
|
|
256
|
-
|
|
258
|
+
console.log('示例1: 10元代金券');
|
|
257
259
|
var result1 = engine.evaluate(voucherConfig, voucherContext);
|
|
260
|
+
console.log('结果:', JSON.stringify(result1, null, 2));
|
|
261
|
+
console.log('\n');
|
|
258
262
|
|
|
259
263
|
// 示例2: 阶梯满减
|
|
260
|
-
|
|
264
|
+
console.log('示例2: 阶梯满减(订单金额250)');
|
|
261
265
|
var result2 = engine.evaluate(tieredDiscountConfig, tieredContext);
|
|
266
|
+
console.log('结果:', JSON.stringify(result2, null, 2));
|
|
267
|
+
console.log('\n');
|
|
262
268
|
|
|
263
269
|
// 示例3: Code 模式
|
|
264
|
-
|
|
270
|
+
console.log('示例3: Code 模式条件');
|
|
265
271
|
var result3 = engine.evaluate(codeConditionConfig, codeContext);
|
|
272
|
+
console.log('结果:', JSON.stringify(result3, null, 2));
|
|
273
|
+
console.log('\n');
|
|
266
274
|
|
|
267
275
|
// 快速评估(不需要创建引擎实例)
|
|
268
|
-
|
|
276
|
+
console.log('示例4: 快速评估');
|
|
269
277
|
var result4 = evaluate(voucherConfig, voucherContext);
|
|
278
|
+
console.log('适用:', result4.applicable);
|
|
279
|
+
console.log('匹配动作数:', result4.matchedActions.length);
|
|
280
|
+
console.log('\n');
|
|
270
281
|
|
|
271
282
|
// 注册自定义运算符
|
|
272
|
-
|
|
283
|
+
console.log('示例5: 自定义运算符');
|
|
273
284
|
engine.registerOperator('divisible_by', function (fieldValue, compareValue) {
|
|
274
285
|
return Number(fieldValue) % Number(compareValue) === 0;
|
|
275
286
|
});
|
|
@@ -306,8 +317,11 @@ function runExamples() {
|
|
|
306
317
|
}
|
|
307
318
|
};
|
|
308
319
|
var result5 = engine.evaluate(customOperatorConfig, customContext);
|
|
320
|
+
console.log('结果:', result5.applicable ? '适用' : '不适用');
|
|
321
|
+
console.log('匹配动作:', result5.matchedActions);
|
|
309
322
|
|
|
310
323
|
// 调试信息
|
|
324
|
+
console.log('\n引擎调试信息:', engine.getDebugInfo());
|
|
311
325
|
}
|
|
312
326
|
|
|
313
327
|
// 运行示例(如果直接执行此文件)
|
|
@@ -16,7 +16,7 @@ export declare class BaseModule {
|
|
|
16
16
|
}): void;
|
|
17
17
|
effectsOn(eventType: string, callback: (payload: any) => void): () => void;
|
|
18
18
|
effectsOff(eventType: string, callback: (payload: any) => void): void;
|
|
19
|
-
effectsOnce(eventType: string, callback: (payload: any) => void): void;
|
|
19
|
+
effectsOnce(eventType: string, callback: (payload: any) => void): () => void;
|
|
20
20
|
effectsEmit(eventType: string, payload: any): Promise<{
|
|
21
21
|
status: boolean;
|
|
22
22
|
data: any;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
6
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
@@ -41,7 +39,7 @@ export var BaseModule = /*#__PURE__*/function () {
|
|
|
41
39
|
var currentCacheData = window.sessionStorage.getItem(fatherModule);
|
|
42
40
|
var currentCacheDataObj = JSON.parse(currentCacheData || '{}');
|
|
43
41
|
if (!currentCacheData || !currentCacheDataObj[cacheId]) {
|
|
44
|
-
currentCacheDataObj =
|
|
42
|
+
currentCacheDataObj = _defineProperty({}, cacheId, _defineProperty({}, this.name, {}));
|
|
45
43
|
}
|
|
46
44
|
if (!currentCacheDataObj[cacheId][this.name]) {
|
|
47
45
|
currentCacheDataObj[cacheId][this.name] = {};
|
|
@@ -52,17 +50,17 @@ export var BaseModule = /*#__PURE__*/function () {
|
|
|
52
50
|
window.sessionStorage.setItem(fatherModule, JSON.stringify(currentCacheDataObj));
|
|
53
51
|
} else {
|
|
54
52
|
var _currentCacheData = window.sessionStorage.getItem(cacheId);
|
|
55
|
-
var
|
|
56
|
-
if (!
|
|
57
|
-
|
|
53
|
+
var _currentCacheDataObj2 = JSON.parse(_currentCacheData || '{}');
|
|
54
|
+
if (!_currentCacheDataObj2) {
|
|
55
|
+
_currentCacheDataObj2 = {};
|
|
58
56
|
}
|
|
59
|
-
if (!
|
|
60
|
-
|
|
57
|
+
if (!_currentCacheDataObj2[this.name]) {
|
|
58
|
+
_currentCacheDataObj2[this.name] = {};
|
|
61
59
|
}
|
|
62
60
|
cacheKey.forEach(function (key) {
|
|
63
|
-
|
|
61
|
+
_currentCacheDataObj2[_this.name][key] = store[key];
|
|
64
62
|
});
|
|
65
|
-
window.sessionStorage.setItem(cacheId, JSON.stringify(
|
|
63
|
+
window.sessionStorage.setItem(cacheId, JSON.stringify(_currentCacheDataObj2));
|
|
66
64
|
}
|
|
67
65
|
}
|
|
68
66
|
}
|
|
@@ -63,6 +63,7 @@ export var handleVariantProduct = function handleVariantProduct(product) {
|
|
|
63
63
|
*/
|
|
64
64
|
export var formatProductToCartItem = function formatProductToCartItem(params) {
|
|
65
65
|
var _product$custom_depos;
|
|
66
|
+
console.log('formatProductToCartItem>>>>>>', params);
|
|
66
67
|
var cartItem = params.cartItem,
|
|
67
68
|
product = params.product,
|
|
68
69
|
bundle = params.bundle,
|