@pisell/pisellos 2.1.84 → 2.1.85
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/model/index.d.ts +1 -0
- package/dist/model/index.js +1 -0
- package/dist/model/strategy/adapter/index.d.ts +3 -0
- package/dist/model/strategy/adapter/index.js +4 -0
- package/dist/model/strategy/adapter/type.d.ts +28 -0
- package/dist/model/strategy/adapter/type.js +1 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +497 -0
- package/dist/model/strategy/adapter/walletPass/example.d.ts +4 -0
- package/dist/model/strategy/adapter/walletPass/example.js +258 -0
- package/dist/model/strategy/adapter/walletPass/index.d.ts +32 -0
- package/dist/model/strategy/adapter/walletPass/index.js +182 -0
- package/dist/model/strategy/adapter/walletPass/locales.d.ts +1 -0
- package/dist/model/strategy/adapter/walletPass/locales.js +23 -0
- package/dist/model/strategy/adapter/walletPass/type.d.ts +168 -0
- package/dist/model/strategy/adapter/walletPass/type.js +1 -0
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +76 -0
- package/dist/model/strategy/adapter/walletPass/utils.js +1043 -0
- package/dist/model/strategy/index.d.ts +94 -0
- package/dist/model/strategy/index.js +551 -0
- package/dist/model/strategy/strategy-example.d.ts +5 -0
- package/dist/model/strategy/strategy-example.js +331 -0
- package/dist/model/strategy/type.d.ts +228 -0
- package/dist/model/strategy/type.js +94 -0
- package/dist/modules/Cart/types.d.ts +2 -0
- package/dist/modules/Cart/utils/cartProduct.js +11 -0
- package/dist/modules/Cart/utils/changePrice.js +0 -6
- package/dist/modules/Discount/index.d.ts +0 -1
- package/dist/modules/Discount/index.js +1 -2
- package/dist/modules/Discount/types.d.ts +15 -0
- package/dist/modules/Payment/index.d.ts +2 -1
- package/dist/modules/Payment/index.js +10 -7
- package/dist/modules/Payment/utils.js +3 -0
- package/dist/modules/Payment/walletpass.d.ts +23 -0
- package/dist/modules/Payment/walletpass.js +191 -95
- package/dist/modules/Rules/index.d.ts +7 -2
- package/dist/modules/Rules/index.js +141 -19
- package/dist/modules/Rules/types.d.ts +1 -0
- package/dist/modules/Summary/index.js +5 -47
- package/dist/modules/Summary/types.d.ts +2 -0
- package/dist/modules/Summary/utils.d.ts +7 -1
- package/dist/modules/Summary/utils.js +27 -21
- package/dist/plugins/window.d.ts +2 -0
- package/dist/solution/BookingByStep/index.d.ts +1 -0
- package/dist/solution/BookingByStep/index.js +35 -84
- package/dist/solution/Checkout/index.js +2 -0
- package/dist/solution/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +12 -3
- package/dist/solution/ShopDiscount/types.d.ts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/model/index.d.ts +1 -0
- package/lib/model/index.js +23 -0
- package/lib/model/strategy/adapter/index.d.ts +3 -0
- package/lib/model/strategy/adapter/index.js +45 -0
- package/lib/model/strategy/adapter/type.d.ts +28 -0
- package/lib/model/strategy/adapter/type.js +17 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.js +421 -0
- package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
- package/lib/model/strategy/adapter/walletPass/example.js +207 -0
- package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
- package/lib/model/strategy/adapter/walletPass/index.js +142 -0
- package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
- package/lib/model/strategy/adapter/walletPass/locales.js +51 -0
- package/lib/model/strategy/adapter/walletPass/type.d.ts +168 -0
- package/lib/model/strategy/adapter/walletPass/type.js +17 -0
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +76 -0
- package/lib/model/strategy/adapter/walletPass/utils.js +704 -0
- package/lib/model/strategy/index.d.ts +94 -0
- package/lib/model/strategy/index.js +413 -0
- package/lib/model/strategy/strategy-example.d.ts +5 -0
- package/lib/model/strategy/strategy-example.js +318 -0
- package/lib/model/strategy/type.d.ts +228 -0
- package/lib/model/strategy/type.js +44 -0
- package/lib/modules/Cart/types.d.ts +2 -0
- package/lib/modules/Cart/utils/cartProduct.js +9 -0
- package/lib/modules/Cart/utils/changePrice.js +0 -5
- package/lib/modules/Discount/index.d.ts +0 -1
- package/lib/modules/Discount/index.js +1 -2
- package/lib/modules/Discount/types.d.ts +15 -0
- package/lib/modules/Payment/index.d.ts +2 -1
- package/lib/modules/Payment/index.js +1 -0
- package/lib/modules/Payment/utils.js +3 -0
- package/lib/modules/Payment/walletpass.d.ts +23 -0
- package/lib/modules/Payment/walletpass.js +94 -17
- package/lib/modules/Rules/index.d.ts +7 -2
- package/lib/modules/Rules/index.js +285 -149
- package/lib/modules/Rules/types.d.ts +1 -0
- package/lib/modules/Summary/index.js +9 -22
- package/lib/modules/Summary/types.d.ts +2 -0
- package/lib/modules/Summary/utils.d.ts +7 -1
- package/lib/modules/Summary/utils.js +25 -21
- package/lib/plugins/window.d.ts +2 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -0
- package/lib/solution/BookingByStep/index.js +3 -34
- package/lib/solution/Checkout/index.js +2 -0
- package/lib/solution/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +7 -2
- package/lib/solution/ShopDiscount/types.d.ts +1 -0
- package/package.json +1 -1
package/dist/plugins/window.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletPassEvaluator } from '../model';
|
|
1
2
|
import { Plugin } from '../types';
|
|
2
3
|
/**
|
|
3
4
|
* WindowPlugin 接口定义
|
|
@@ -14,6 +15,7 @@ export interface WindowPlugin extends Plugin {
|
|
|
14
15
|
document: Partial<Document>;
|
|
15
16
|
history: History;
|
|
16
17
|
interaction?: any;
|
|
18
|
+
getWalletPassEvaluator?: () => WalletPassEvaluator;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* 简单的 Storage 接口实现
|
|
@@ -144,6 +144,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
144
144
|
getSummary(): Promise<{
|
|
145
145
|
subtotal: string | number;
|
|
146
146
|
total: string | number;
|
|
147
|
+
originTotal: string | number;
|
|
147
148
|
taxTitle?: string | undefined;
|
|
148
149
|
totalTaxFee?: string | number | undefined;
|
|
149
150
|
isPriceIncludeTax?: 0 | 1 | undefined;
|
|
@@ -2552,63 +2552,14 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2552
2552
|
var targetResourceTimes = allResources === null || allResources === void 0 || (_allResources$find = allResources.find(function (n) {
|
|
2553
2553
|
return n.id === resource.id;
|
|
2554
2554
|
})) === null || _allResources$find === void 0 ? void 0 : _allResources$find.times;
|
|
2555
|
-
// 找到最晚的 end_at 还没用,因为可能存在资源工作时间是 10:00-19:00,但是资源的 times 里有 16:30-19:00 被 block 的情况
|
|
2556
|
-
// 所以还需要排除掉 block 时间
|
|
2557
|
-
function getEarliestBlockedStartTime(_ref11) {
|
|
2558
|
-
var _earliestBlockStart;
|
|
2559
|
-
var currentStartTime = _ref11.currentStartTime,
|
|
2560
|
-
times = _ref11.times;
|
|
2561
|
-
var currentStart = dayjs(currentStartTime);
|
|
2562
|
-
var earliestBlockStart;
|
|
2563
|
-
var _iterator3 = _createForOfIteratorHelper(times || []),
|
|
2564
|
-
_step3;
|
|
2565
|
-
try {
|
|
2566
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
2567
|
-
var time = _step3.value;
|
|
2568
|
-
var _iterator4 = _createForOfIteratorHelper(time.event_list || []),
|
|
2569
|
-
_step4;
|
|
2570
|
-
try {
|
|
2571
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
2572
|
-
var event = _step4.value;
|
|
2573
|
-
var eventStart = dayjs(event.start_at);
|
|
2574
|
-
var eventEnd = dayjs(event.end_at);
|
|
2575
|
-
if (eventStart.isBefore(currentStart) && eventEnd.isAfter(currentStart)) {
|
|
2576
|
-
return currentStart.format('YYYY-MM-DD HH:mm');
|
|
2577
|
-
}
|
|
2578
|
-
if (eventStart.isAfter(currentStart)) {
|
|
2579
|
-
if (!earliestBlockStart || eventStart.isBefore(earliestBlockStart)) {
|
|
2580
|
-
earliestBlockStart = eventStart;
|
|
2581
|
-
}
|
|
2582
|
-
}
|
|
2583
|
-
}
|
|
2584
|
-
} catch (err) {
|
|
2585
|
-
_iterator4.e(err);
|
|
2586
|
-
} finally {
|
|
2587
|
-
_iterator4.f();
|
|
2588
|
-
}
|
|
2589
|
-
}
|
|
2590
|
-
} catch (err) {
|
|
2591
|
-
_iterator3.e(err);
|
|
2592
|
-
} finally {
|
|
2593
|
-
_iterator3.f();
|
|
2594
|
-
}
|
|
2595
|
-
return (_earliestBlockStart = earliestBlockStart) === null || _earliestBlockStart === void 0 ? void 0 : _earliestBlockStart.format('YYYY-MM-DD HH:mm');
|
|
2596
|
-
}
|
|
2597
2555
|
var resourcesEndTime = targetResourceTimes.reduce(function (acc, curr) {
|
|
2598
2556
|
return dayjs(curr.end_at).isAfter(dayjs(acc.end_at)) ? curr : acc;
|
|
2599
2557
|
}, targetResourceTimes[0]);
|
|
2600
|
-
var earliestBlockedStartTime = getEarliestBlockedStartTime({
|
|
2601
|
-
currentStartTime: currentStartTime,
|
|
2602
|
-
times: targetResourceTimes
|
|
2603
|
-
});
|
|
2604
2558
|
|
|
2605
2559
|
// 将 operating_day_boundary 转换为与 resourcesEndTime.end_at 相同日期的完整日期时间
|
|
2606
2560
|
var resourceDate = dayjs(resourcesEndTime.end_at).format('YYYY-MM-DD');
|
|
2607
2561
|
var operatingBoundaryDateTime = "".concat(resourceDate, " ").concat(operating_day_boundary.type === 'start_time' ? '23:59' : operating_day_boundary.time);
|
|
2608
|
-
var
|
|
2609
|
-
var endTime = endTimeCandidates.reduce(function (earliest, value) {
|
|
2610
|
-
return dayjs(value).isBefore(dayjs(earliest)) ? value : earliest;
|
|
2611
|
-
}, endTimeCandidates[0]);
|
|
2562
|
+
var endTime = dayjs(resourcesEndTime.end_at).isBefore(dayjs(operatingBoundaryDateTime)) ? resourcesEndTime.end_at : operatingBoundaryDateTime;
|
|
2612
2563
|
// 修复:如果 endTime 只是时间格式(如 "17:00"),需要加上日期
|
|
2613
2564
|
var formattedEndTime;
|
|
2614
2565
|
if (typeof endTime === 'string' && endTime.includes(':') && !endTime.includes(' ') && !endTime.includes('T')) {
|
|
@@ -2749,14 +2700,14 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2749
2700
|
// 通过商品和 schedule 来获取视频可用的时间片、时间片内资源可用的数据
|
|
2750
2701
|
}, {
|
|
2751
2702
|
key: "getTimeslotBySchedule",
|
|
2752
|
-
value: function getTimeslotBySchedule(
|
|
2703
|
+
value: function getTimeslotBySchedule(_ref11) {
|
|
2753
2704
|
var _this$store$currentPr2,
|
|
2754
2705
|
_targetProductData$pr,
|
|
2755
2706
|
_this15 = this;
|
|
2756
|
-
var date =
|
|
2757
|
-
scheduleIds =
|
|
2758
|
-
resources =
|
|
2759
|
-
product =
|
|
2707
|
+
var date = _ref11.date,
|
|
2708
|
+
scheduleIds = _ref11.scheduleIds,
|
|
2709
|
+
resources = _ref11.resources,
|
|
2710
|
+
product = _ref11.product;
|
|
2760
2711
|
var targetProduct = this.store.currentProduct;
|
|
2761
2712
|
// 如果外面传递了product 优先用外面的
|
|
2762
2713
|
var targetProductData = product || targetProduct;
|
|
@@ -3315,12 +3266,12 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3315
3266
|
// 检查资源类型(单个预约 vs 多个预约)
|
|
3316
3267
|
// 从商品配置中获取资源类型信息
|
|
3317
3268
|
var resourceTypeConfig = null;
|
|
3318
|
-
var
|
|
3319
|
-
|
|
3269
|
+
var _iterator3 = _createForOfIteratorHelper(items),
|
|
3270
|
+
_step3;
|
|
3320
3271
|
try {
|
|
3321
|
-
for (
|
|
3272
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
3322
3273
|
var _cartItem$_productOri12;
|
|
3323
|
-
var cartItem =
|
|
3274
|
+
var cartItem = _step3.value;
|
|
3324
3275
|
if ((_cartItem$_productOri12 = cartItem._productOrigin) !== null && _cartItem$_productOri12 !== void 0 && (_cartItem$_productOri12 = _cartItem$_productOri12.product_resource) !== null && _cartItem$_productOri12 !== void 0 && _cartItem$_productOri12.resources) {
|
|
3325
3276
|
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(function (r) {
|
|
3326
3277
|
return r.code === resourceCode && r.status === 1;
|
|
@@ -3329,9 +3280,9 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3329
3280
|
}
|
|
3330
3281
|
}
|
|
3331
3282
|
} catch (err) {
|
|
3332
|
-
|
|
3283
|
+
_iterator3.e(err);
|
|
3333
3284
|
} finally {
|
|
3334
|
-
|
|
3285
|
+
_iterator3.f();
|
|
3335
3286
|
}
|
|
3336
3287
|
var isMultipleBooking = ((_resourceTypeConfig = resourceTypeConfig) === null || _resourceTypeConfig === void 0 ? void 0 : _resourceTypeConfig.type) === 'multiple';
|
|
3337
3288
|
var totalAvailable;
|
|
@@ -3534,17 +3485,17 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3534
3485
|
*/
|
|
3535
3486
|
}, {
|
|
3536
3487
|
key: "convertProductToCartItem",
|
|
3537
|
-
value: function convertProductToCartItem(
|
|
3538
|
-
var product =
|
|
3539
|
-
date =
|
|
3540
|
-
account =
|
|
3541
|
-
var
|
|
3542
|
-
bundle =
|
|
3543
|
-
options =
|
|
3544
|
-
origin =
|
|
3545
|
-
product_variant_id =
|
|
3546
|
-
|
|
3547
|
-
quantity =
|
|
3488
|
+
value: function convertProductToCartItem(_ref12) {
|
|
3489
|
+
var product = _ref12.product,
|
|
3490
|
+
date = _ref12.date,
|
|
3491
|
+
account = _ref12.account;
|
|
3492
|
+
var _ref13 = product || {},
|
|
3493
|
+
bundle = _ref13.bundle,
|
|
3494
|
+
options = _ref13.options,
|
|
3495
|
+
origin = _ref13.origin,
|
|
3496
|
+
product_variant_id = _ref13.product_variant_id,
|
|
3497
|
+
_ref13$quantity = _ref13.quantity,
|
|
3498
|
+
quantity = _ref13$quantity === void 0 ? 1 : _ref13$quantity;
|
|
3548
3499
|
|
|
3549
3500
|
// 处理商品数据,类似 addProductToCart 中的逻辑
|
|
3550
3501
|
var productData = _objectSpread(_objectSpread({}, origin), {}, {
|
|
@@ -3599,11 +3550,11 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3599
3550
|
}
|
|
3600
3551
|
}, {
|
|
3601
3552
|
key: "checkMaxDurationCapacityForDetailNums",
|
|
3602
|
-
value: function checkMaxDurationCapacityForDetailNums(
|
|
3553
|
+
value: function checkMaxDurationCapacityForDetailNums(_ref14) {
|
|
3603
3554
|
var _this17 = this;
|
|
3604
|
-
var product =
|
|
3605
|
-
date =
|
|
3606
|
-
account =
|
|
3555
|
+
var product = _ref14.product,
|
|
3556
|
+
date = _ref14.date,
|
|
3557
|
+
account = _ref14.account;
|
|
3607
3558
|
var cartItems = this.store.cart.getItems().filter(function (item) {
|
|
3608
3559
|
return !isNormalProduct(item._productOrigin);
|
|
3609
3560
|
});
|
|
@@ -3748,12 +3699,12 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3748
3699
|
// 检查资源类型(单个预约 vs 多个预约)
|
|
3749
3700
|
// 从商品配置中获取资源类型信息
|
|
3750
3701
|
var resourceTypeConfig = null;
|
|
3751
|
-
var
|
|
3752
|
-
|
|
3702
|
+
var _iterator4 = _createForOfIteratorHelper(items),
|
|
3703
|
+
_step4;
|
|
3753
3704
|
try {
|
|
3754
|
-
for (
|
|
3705
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
3755
3706
|
var _cartItem$_productOri15;
|
|
3756
|
-
var cartItem =
|
|
3707
|
+
var cartItem = _step4.value;
|
|
3757
3708
|
if ((_cartItem$_productOri15 = cartItem._productOrigin) !== null && _cartItem$_productOri15 !== void 0 && (_cartItem$_productOri15 = _cartItem$_productOri15.product_resource) !== null && _cartItem$_productOri15 !== void 0 && _cartItem$_productOri15.resources) {
|
|
3758
3709
|
resourceTypeConfig = cartItem._productOrigin.product_resource.resources.find(function (r) {
|
|
3759
3710
|
return r.code === resourceCode && r.status === 1;
|
|
@@ -3762,9 +3713,9 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3762
3713
|
}
|
|
3763
3714
|
}
|
|
3764
3715
|
} catch (err) {
|
|
3765
|
-
|
|
3716
|
+
_iterator4.e(err);
|
|
3766
3717
|
} finally {
|
|
3767
|
-
|
|
3718
|
+
_iterator4.f();
|
|
3768
3719
|
}
|
|
3769
3720
|
var isMultipleBooking = ((_resourceTypeConfig2 = resourceTypeConfig) === null || _resourceTypeConfig2 === void 0 ? void 0 : _resourceTypeConfig2.type) === 'multiple';
|
|
3770
3721
|
var totalAvailable;
|
|
@@ -4135,12 +4086,12 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
4135
4086
|
}, {
|
|
4136
4087
|
key: "getTimeslotsScheduleByDateRange",
|
|
4137
4088
|
value: (function () {
|
|
4138
|
-
var _getTimeslotsScheduleByDateRange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee27(
|
|
4089
|
+
var _getTimeslotsScheduleByDateRange = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee27(_ref15) {
|
|
4139
4090
|
var startDate, endDate, scheduleIds, resources, dates, currentDate, end, results, _i5, _dates, date;
|
|
4140
4091
|
return _regeneratorRuntime().wrap(function _callee27$(_context28) {
|
|
4141
4092
|
while (1) switch (_context28.prev = _context28.next) {
|
|
4142
4093
|
case 0:
|
|
4143
|
-
startDate =
|
|
4094
|
+
startDate = _ref15.startDate, endDate = _ref15.endDate, scheduleIds = _ref15.scheduleIds, resources = _ref15.resources;
|
|
4144
4095
|
console.log('appoimentBooking-session-date-getTimeslotsScheduleByDateRange', {
|
|
4145
4096
|
startDate: startDate,
|
|
4146
4097
|
endDate: endDate,
|
|
@@ -403,6 +403,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
403
403
|
product_id: item.product_id,
|
|
404
404
|
product_variant_id: item.product_variant_id,
|
|
405
405
|
quantity: item.num,
|
|
406
|
+
is_price_include_tax: item.is_price_include_tax,
|
|
406
407
|
// 商品是否含税:1;0
|
|
407
408
|
is_charge_tax: (_item$is_charge_tax = item.is_charge_tax) !== null && _item$is_charge_tax !== void 0 ? _item$is_charge_tax : 0,
|
|
408
409
|
// 若商品不含税,计算得到的税费,单位(元)
|
|
@@ -427,6 +428,7 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
427
428
|
},
|
|
428
429
|
product_bundle: item.product_bundle.map(function (bundle) {
|
|
429
430
|
return {
|
|
431
|
+
is_price_include_tax: item.is_price_include_tax,
|
|
430
432
|
bundle_id: bundle.bundle_id,
|
|
431
433
|
bundle_product_id: bundle.bundle_product_id,
|
|
432
434
|
bundle_variant_id: bundle.bundle_variant_id,
|
|
@@ -22,6 +22,7 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
|
|
|
22
22
|
getCurrentBookingTime(): string | null;
|
|
23
23
|
private filterDiscountListByBookingTime;
|
|
24
24
|
setCustomer(customer: Customer): Promise<void>;
|
|
25
|
+
setOriginTotalAmount(amount: number): void;
|
|
25
26
|
setHolders(holders: {
|
|
26
27
|
form_record_id: number;
|
|
27
28
|
}[]): void;
|
|
@@ -56,6 +56,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
56
56
|
originalDiscountList: [],
|
|
57
57
|
currentBookingTime: "",
|
|
58
58
|
filteredDiscountList: [],
|
|
59
|
+
orderTotalAmount: 0,
|
|
59
60
|
bookingSubject: undefined
|
|
60
61
|
};
|
|
61
62
|
return _this;
|
|
@@ -288,7 +289,14 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
288
289
|
return _setCustomer.apply(this, arguments);
|
|
289
290
|
}
|
|
290
291
|
return setCustomer;
|
|
291
|
-
}()
|
|
292
|
+
}()
|
|
293
|
+
}, {
|
|
294
|
+
key: "setOriginTotalAmount",
|
|
295
|
+
value: function setOriginTotalAmount(amount) {
|
|
296
|
+
this.store.orderTotalAmount = amount;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// 设置holders
|
|
292
300
|
}, {
|
|
293
301
|
key: "setHolders",
|
|
294
302
|
value: function setHolders(holders) {
|
|
@@ -317,6 +325,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
317
325
|
productList: productList,
|
|
318
326
|
discountList: this.getDiscountList(),
|
|
319
327
|
holders: this.store.holders || [],
|
|
328
|
+
orderTotalAmount: this.store.orderTotalAmount || 0,
|
|
320
329
|
isFormSubject: ((_this$store$bookingSu = this.store.bookingSubject) === null || _this$store$bookingSu === void 0 ? void 0 : _this$store$bookingSu.type) === 'form'
|
|
321
330
|
}, options) || {
|
|
322
331
|
productList: productList,
|
|
@@ -458,6 +467,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
458
467
|
oldDiscountList: this.getDiscountList(),
|
|
459
468
|
newDiscountList: withScanList,
|
|
460
469
|
holders: this.store.holders || [],
|
|
470
|
+
orderTotalAmount: this.store.orderTotalAmount || 0,
|
|
461
471
|
isFormSubject: ((_this$store$bookingSu2 = this.store.bookingSubject) === null || _this$store$bookingSu2 === void 0 ? void 0 : _this$store$bookingSu2.type) === 'form'
|
|
462
472
|
}) || {
|
|
463
473
|
isAvailable: false,
|
|
@@ -745,8 +755,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
745
755
|
action: 'create',
|
|
746
756
|
with_good_pass: 1,
|
|
747
757
|
with_discount_card: 1,
|
|
748
|
-
with_wallet_pass_holder: 1
|
|
749
|
-
request_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
758
|
+
with_wallet_pass_holder: 1
|
|
750
759
|
});
|
|
751
760
|
case 4:
|
|
752
761
|
goodPassList = _context9.sent;
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -38,6 +38,7 @@ __reExport(src_exports, require("./types"), module.exports);
|
|
|
38
38
|
__reExport(src_exports, require("./modules"), module.exports);
|
|
39
39
|
__reExport(src_exports, require("./plugins"), module.exports);
|
|
40
40
|
__reExport(src_exports, require("./solution"), module.exports);
|
|
41
|
+
__reExport(src_exports, require("./model"), module.exports);
|
|
41
42
|
var import_core = require("./core");
|
|
42
43
|
var import_core2 = __toESM(require("./core"));
|
|
43
44
|
var src_default = import_core2.default;
|
|
@@ -47,5 +48,6 @@ var src_default = import_core2.default;
|
|
|
47
48
|
...require("./types"),
|
|
48
49
|
...require("./modules"),
|
|
49
50
|
...require("./plugins"),
|
|
50
|
-
...require("./solution")
|
|
51
|
+
...require("./solution"),
|
|
52
|
+
...require("./model")
|
|
51
53
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './strategy';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/model/index.ts
|
|
17
|
+
var model_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(model_exports);
|
|
19
|
+
__reExport(model_exports, require("./strategy"), module.exports);
|
|
20
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
+
0 && (module.exports = {
|
|
22
|
+
...require("./strategy")
|
|
23
|
+
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/model/strategy/adapter/index.ts
|
|
31
|
+
var adapter_exports = {};
|
|
32
|
+
__export(adapter_exports, {
|
|
33
|
+
WalletPassAdapter: () => import_walletPass.default,
|
|
34
|
+
WalletPassEvaluator: () => import_evaluator.WalletPassEvaluator
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(adapter_exports);
|
|
37
|
+
__reExport(adapter_exports, require("./type"), module.exports);
|
|
38
|
+
var import_walletPass = __toESM(require("./walletPass"));
|
|
39
|
+
var import_evaluator = require("./walletPass/evaluator");
|
|
40
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
41
|
+
0 && (module.exports = {
|
|
42
|
+
WalletPassAdapter,
|
|
43
|
+
WalletPassEvaluator,
|
|
44
|
+
...require("./type")
|
|
45
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EvaluationResult, RuntimeContext } from '../type';
|
|
2
|
+
export interface BusinessAdapter {
|
|
3
|
+
/**
|
|
4
|
+
* 适配器名称
|
|
5
|
+
*/
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* 适配器版本
|
|
9
|
+
*/
|
|
10
|
+
version: string;
|
|
11
|
+
/**
|
|
12
|
+
* 准备运行时上下文
|
|
13
|
+
* 将业务数据转换为策略引擎可识别的上下文
|
|
14
|
+
*/
|
|
15
|
+
prepareContext(businessData: any): RuntimeContext;
|
|
16
|
+
/**
|
|
17
|
+
* 转换执行结果
|
|
18
|
+
* 将策略引擎的通用结果转换为业务层需要的格式
|
|
19
|
+
*/
|
|
20
|
+
transformResult(result: EvaluationResult, businessData?: any): any;
|
|
21
|
+
/**
|
|
22
|
+
* 根据业务数据重新格式化配置
|
|
23
|
+
*/
|
|
24
|
+
formatConfig(result: EvaluationResult, businessData?: any): {
|
|
25
|
+
result: EvaluationResult;
|
|
26
|
+
businessData?: any;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
|
+
|
|
15
|
+
// src/model/strategy/adapter/type.ts
|
|
16
|
+
var type_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(type_exports);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { StrategyConfig } from '../../type';
|
|
2
|
+
import { Voucher, Product, VoucherEvaluationResult, EvaluatorInput } from './type';
|
|
3
|
+
/**
|
|
4
|
+
* Wallet Pass 评估器
|
|
5
|
+
* 用于评估哪些 voucher 可以在当前订单中使用
|
|
6
|
+
*/
|
|
7
|
+
export declare class WalletPassEvaluator {
|
|
8
|
+
private engine;
|
|
9
|
+
private strategyConfigs;
|
|
10
|
+
private locale;
|
|
11
|
+
constructor();
|
|
12
|
+
setStrategyConfigs(strategyConfigs: StrategyConfig[]): void;
|
|
13
|
+
getStrategyConfigs(): StrategyConfig[];
|
|
14
|
+
setLocale(locale: string): void;
|
|
15
|
+
getText(key: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* 搜索券的格式
|
|
18
|
+
* @param input 输入
|
|
19
|
+
* @returns 返回搜索券的格式
|
|
20
|
+
*/
|
|
21
|
+
searchVoucherFormat(input: EvaluatorInput): Voucher[];
|
|
22
|
+
/**
|
|
23
|
+
* 评估可用的 vouchers
|
|
24
|
+
*/
|
|
25
|
+
evaluate(input: EvaluatorInput): VoucherEvaluationResult[];
|
|
26
|
+
/** 检查代金券/折扣卡是否可用 并返回config */
|
|
27
|
+
checkVoucherAvailability(input: EvaluatorInput): {
|
|
28
|
+
isAvailable: boolean;
|
|
29
|
+
config: {
|
|
30
|
+
[x: string]: any;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* 获取推荐券
|
|
35
|
+
* @param input 输入
|
|
36
|
+
* @returns 返回推荐券列表
|
|
37
|
+
*/
|
|
38
|
+
getRecommendedVouchers(input: EvaluatorInput): {
|
|
39
|
+
recommendedAmount: any;
|
|
40
|
+
recommended: any[];
|
|
41
|
+
transformList: any[];
|
|
42
|
+
noApplicableVoucher: Voucher[];
|
|
43
|
+
};
|
|
44
|
+
enhanceWithReason(voucher: any): any;
|
|
45
|
+
/**
|
|
46
|
+
* 优惠券处理函数
|
|
47
|
+
* @param applicableVouchers 可用的券列表
|
|
48
|
+
* @param orderTotalAmount 订单总金额
|
|
49
|
+
* @param products 订单商品列表
|
|
50
|
+
* @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status
|
|
51
|
+
*/
|
|
52
|
+
processVouchers(vouchers: Voucher[], orderTotalAmount: number, products: Product[]): {
|
|
53
|
+
recommended: any[];
|
|
54
|
+
transformList: any[];
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* 重新计算优惠券状态(基于已选券的增量计算)
|
|
58
|
+
* @param allVouchers 所有原始券列表
|
|
59
|
+
* @param selectedVouchers 已选中的券列表(按选中顺序)
|
|
60
|
+
* @param orderTotalAmount 订单总金额
|
|
61
|
+
* @param products 订单商品列表
|
|
62
|
+
* @returns 返回更新后的所有券列表和已选券的详细抵扣信息
|
|
63
|
+
*/
|
|
64
|
+
recalculateVouchers(allVouchers: any[], selectedVouchers: any[], orderTotalAmount: number, products: any[]): {
|
|
65
|
+
allWithUpdatedStatus: any[];
|
|
66
|
+
selectedWithDetails: any[];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* 查找适用于指定 voucher 的策略配置
|
|
70
|
+
*/
|
|
71
|
+
private findApplicableStrategies;
|
|
72
|
+
/**
|
|
73
|
+
* 检查策略中是否包含指定的 voucher ID
|
|
74
|
+
*/
|
|
75
|
+
private checkVoucherInStrategy;
|
|
76
|
+
/**
|
|
77
|
+
* 递归检查条件组中是否包含 voucher ID
|
|
78
|
+
*/
|
|
79
|
+
private checkVoucherInConditionGroup;
|
|
80
|
+
/**
|
|
81
|
+
* 计算适用商品的总金额和数量
|
|
82
|
+
*/
|
|
83
|
+
private calculateApplicableProducts;
|
|
84
|
+
}
|