@pisell/pisellos 0.0.23 → 0.0.24
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/modules/Discount/index.d.ts +1 -1
- package/dist/modules/Discount/index.js +3 -1
- package/dist/modules/Rules/index.js +19 -7
- package/dist/solution/ShopDiscount/index.js +65 -73
- package/lib/modules/Discount/index.d.ts +1 -1
- package/lib/modules/Discount/index.js +3 -1
- package/lib/modules/Rules/index.js +12 -9
- package/lib/solution/ShopDiscount/index.js +25 -21
- package/package.json +1 -1
|
@@ -23,7 +23,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
|
|
|
23
23
|
filterEnabledDiscountList(discountList: Discount[]): Discount[];
|
|
24
24
|
uniqueByProductId(discountList: Discount[]): Discount[];
|
|
25
25
|
filterDiscountListByProductIds(discountList: Discount[], productIds: number[]): Discount[];
|
|
26
|
-
calcDiscountApplicableProductTotalPrice(discount: Discount): number;
|
|
26
|
+
calcDiscountApplicableProductTotalPrice(discount: Discount): number | undefined;
|
|
27
27
|
destroy(): Promise<void>;
|
|
28
28
|
clear(): Promise<void>;
|
|
29
29
|
storeChange(): void;
|
|
@@ -193,13 +193,15 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
193
193
|
}, {
|
|
194
194
|
key: "calcDiscountApplicableProductTotalPrice",
|
|
195
195
|
value: function calcDiscountApplicableProductTotalPrice(discount) {
|
|
196
|
+
if (discount !== null && discount !== void 0 && discount.savedAmount) {
|
|
197
|
+
return (discount === null || discount === void 0 ? void 0 : discount.savedAmount) || 0;
|
|
198
|
+
}
|
|
196
199
|
if (discount.appliedProductDetails) {
|
|
197
200
|
return discount.appliedProductDetails.reduce(function (total, product) {
|
|
198
201
|
var price = Number(product === null || product === void 0 ? void 0 : product.amount) || 0;
|
|
199
202
|
return total + price;
|
|
200
203
|
}, 0);
|
|
201
204
|
}
|
|
202
|
-
return (discount === null || discount === void 0 ? void 0 : discount.savedAmount) || 0;
|
|
203
205
|
}
|
|
204
206
|
}, {
|
|
205
207
|
key: "destroy",
|
|
@@ -205,10 +205,19 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
205
205
|
sortedProductList.forEach(function (originProduct) {
|
|
206
206
|
var product = _this3.hooks.getProduct(originProduct);
|
|
207
207
|
addModeDiscount.forEach(function (discount) {
|
|
208
|
+
var _product$discount_lis, _product$discount_lis2;
|
|
208
209
|
var limitedData = discount === null || discount === void 0 ? void 0 : discount.limited_relation_product_data;
|
|
209
210
|
|
|
211
|
+
// 是符合折扣的商品
|
|
212
|
+
var isLimitedProduct = limitedData.type === "product_all" || limitedData.product_ids && limitedData.product_ids.includes(product.id);
|
|
213
|
+
|
|
214
|
+
// 编辑的商品 使用了优惠券不可用
|
|
215
|
+
var isAvailableProduct = !(product !== null && product !== void 0 && product.booking_id && product !== null && product !== void 0 && (_product$discount_lis = product.discount_list) !== null && _product$discount_lis !== void 0 && _product$discount_lis.length && product !== null && product !== void 0 && (_product$discount_lis2 = product.discount_list) !== null && _product$discount_lis2 !== void 0 && _product$discount_lis2.every(function (discount) {
|
|
216
|
+
return discount.id;
|
|
217
|
+
}));
|
|
218
|
+
|
|
210
219
|
// 判断优惠券是否适用于该商品
|
|
211
|
-
if (
|
|
220
|
+
if (isAvailableProduct && isLimitedProduct) {
|
|
212
221
|
var _discountApplicabilit;
|
|
213
222
|
// 记录此优惠券适用的商品
|
|
214
223
|
(_discountApplicabilit = discountApplicability.get(discount.id)) === null || _discountApplicabilit === void 0 || _discountApplicabilit.push(product.id);
|
|
@@ -231,9 +240,11 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
231
240
|
|
|
232
241
|
// 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
|
|
233
242
|
sortedProductList.forEach(function (originProduct) {
|
|
234
|
-
var _product$
|
|
243
|
+
var _product$discount_lis3, _product$discount_lis4, _product$discount_lis5;
|
|
235
244
|
var product = _this3.hooks.getProduct(originProduct);
|
|
236
|
-
if (product !== null && product !== void 0 && product.booking_id) {
|
|
245
|
+
if (product !== null && product !== void 0 && product.booking_id && (_product$discount_lis3 = product.discount_list) !== null && _product$discount_lis3 !== void 0 && _product$discount_lis3.length && product !== null && product !== void 0 && (_product$discount_lis4 = product.discount_list) !== null && _product$discount_lis4 !== void 0 && _product$discount_lis4.every(function (discount) {
|
|
246
|
+
return discount.id;
|
|
247
|
+
})) {
|
|
237
248
|
processedProductsMap.set(product._id, originProduct);
|
|
238
249
|
return;
|
|
239
250
|
}
|
|
@@ -257,7 +268,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
257
268
|
var selectedDiscount = applicableDiscounts[0];
|
|
258
269
|
|
|
259
270
|
// 如果是手动折扣,则不适用优惠券
|
|
260
|
-
var isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && !((_product$
|
|
271
|
+
var isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && !((_product$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.length);
|
|
261
272
|
|
|
262
273
|
// 勾选时覆盖手动折扣
|
|
263
274
|
if (options !== null && options !== void 0 && options.discountId && (options === null || options === void 0 ? void 0 : options.discountId) === (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.id)) {
|
|
@@ -274,6 +285,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
274
285
|
})));
|
|
275
286
|
return;
|
|
276
287
|
}
|
|
288
|
+
if (applicableDiscounts.length && product.booking_id && typeof selectedDiscount.isManualSelect === 'undefined') {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
277
291
|
|
|
278
292
|
// 标记优惠券为已使用
|
|
279
293
|
usedDiscounts.set(selectedDiscount.id, true);
|
|
@@ -331,7 +345,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
331
345
|
// 如果此优惠券被明确设置为不选中,保持其状态,但正确设置isAvailable
|
|
332
346
|
if (typeof discount.isSelected === "boolean" && discount.isSelected === false && discount.isManualSelect) {
|
|
333
347
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
334
|
-
isUsed: false,
|
|
335
348
|
isSelected: false,
|
|
336
349
|
isAvailable: isAvailable,
|
|
337
350
|
// 正确设置可用性
|
|
@@ -344,7 +357,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
344
357
|
}
|
|
345
358
|
if (usedDiscounts.get(discount.id)) {
|
|
346
359
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
347
|
-
isUsed: true,
|
|
348
360
|
isSelected: true,
|
|
349
361
|
// 标记为可用,因为它已被应用
|
|
350
362
|
isAvailable: true,
|
|
@@ -359,7 +371,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
359
371
|
var isSelected = typeof discount.isSelected === "boolean" ? discount.isSelected : undefined;
|
|
360
372
|
|
|
361
373
|
// 如果是可用的 并且没有手动标记 则设置为选中
|
|
362
|
-
if (isAvailable && !discount.isManualSelect) {
|
|
374
|
+
if (isAvailable && appliedProductDetails.length && !discount.isManualSelect) {
|
|
363
375
|
isSelected = true;
|
|
364
376
|
} else if (!appliedProductDetails.length) {
|
|
365
377
|
isSelected = false;
|
|
@@ -235,6 +235,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
235
235
|
}, {
|
|
236
236
|
key: "calcDiscount",
|
|
237
237
|
value: function calcDiscount(productList, options) {
|
|
238
|
+
this.store.productList = productList;
|
|
238
239
|
var rulesModule = this.core.getModule("".concat(this.name, "_rules"));
|
|
239
240
|
if (!rulesModule) {
|
|
240
241
|
return {
|
|
@@ -252,7 +253,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
252
253
|
newProductList = _ref.productList,
|
|
253
254
|
newDiscountList = _ref.discountList;
|
|
254
255
|
if (newDiscountList) {
|
|
255
|
-
this.setDiscountList(newDiscountList);
|
|
256
|
+
newDiscountList = this.setDiscountList(newDiscountList);
|
|
256
257
|
}
|
|
257
258
|
return {
|
|
258
259
|
productList: newProductList || productList,
|
|
@@ -275,8 +276,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
275
276
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
276
277
|
isSelected: isSelected,
|
|
277
278
|
// 手动设置不使用
|
|
278
|
-
isManualSelect: !isSelected
|
|
279
|
-
isUsed: isSelected
|
|
279
|
+
isManualSelect: !isSelected
|
|
280
280
|
});
|
|
281
281
|
}
|
|
282
282
|
return discount;
|
|
@@ -423,47 +423,39 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
423
423
|
}() // 设置优惠券列表
|
|
424
424
|
}, {
|
|
425
425
|
key: "setDiscountList",
|
|
426
|
-
value: function () {
|
|
427
|
-
var
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
}
|
|
460
|
-
}, _callee7, this);
|
|
461
|
-
}));
|
|
462
|
-
function setDiscountList(_x6) {
|
|
463
|
-
return _setDiscountList.apply(this, arguments);
|
|
464
|
-
}
|
|
465
|
-
return setDiscountList;
|
|
466
|
-
}() // 获取优惠券列表
|
|
426
|
+
value: function setDiscountList(discountList) {
|
|
427
|
+
var _this$store$discount5;
|
|
428
|
+
var productList = this.store.productList || [];
|
|
429
|
+
var editModeDiscountList = [];
|
|
430
|
+
productList.forEach(function (item) {
|
|
431
|
+
if (item.booking_id) {
|
|
432
|
+
(item.discount_list || []).forEach(function (discount) {
|
|
433
|
+
if (discount.id) {
|
|
434
|
+
var _discount$discount, _discount$discount2, _discount$discount3;
|
|
435
|
+
editModeDiscountList.push(_objectSpread(_objectSpread({}, discount), {}, {
|
|
436
|
+
isEditMode: true,
|
|
437
|
+
limited_relation_product_data: {},
|
|
438
|
+
savedAmount: discount.amount,
|
|
439
|
+
isAvailable: true,
|
|
440
|
+
id: ((_discount$discount = discount.discount) === null || _discount$discount === void 0 ? void 0 : _discount$discount.resource_id) || discount.id,
|
|
441
|
+
format_title: ((_discount$discount2 = discount.discount) === null || _discount$discount2 === void 0 ? void 0 : _discount$discount2.title) || discount.format_title,
|
|
442
|
+
isDisabled: true,
|
|
443
|
+
isSelected: true,
|
|
444
|
+
product_id: ((_discount$discount3 = discount.discount) === null || _discount$discount3 === void 0 ? void 0 : _discount$discount3.product_id) || discount.product_id
|
|
445
|
+
}));
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
var newDiscountList = uniqueById([].concat(editModeDiscountList, _toConsumableArray(discountList.filter(function (item) {
|
|
451
|
+
return !item.isDisabled;
|
|
452
|
+
}))), "product_id");
|
|
453
|
+
(_this$store$discount5 = this.store.discount) === null || _this$store$discount5 === void 0 || _this$store$discount5.setDiscountList(newDiscountList);
|
|
454
|
+
this.emitDiscountListChange(newDiscountList);
|
|
455
|
+
return newDiscountList;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// 获取优惠券列表
|
|
467
459
|
}, {
|
|
468
460
|
key: "getDiscountList",
|
|
469
461
|
value: function getDiscountList() {
|
|
@@ -475,35 +467,35 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
475
467
|
}, {
|
|
476
468
|
key: "getCustomerWallet",
|
|
477
469
|
value: function () {
|
|
478
|
-
var _getCustomerWallet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
470
|
+
var _getCustomerWallet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(id) {
|
|
479
471
|
var result, _result$data, wallet_pass_list, customer;
|
|
480
|
-
return _regeneratorRuntime().wrap(function
|
|
481
|
-
while (1) switch (
|
|
472
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
473
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
482
474
|
case 0:
|
|
483
|
-
|
|
484
|
-
|
|
475
|
+
_context7.prev = 0;
|
|
476
|
+
_context7.next = 3;
|
|
485
477
|
return this.request.get("/customer/info/wallet/".concat(id), {
|
|
486
478
|
wallet_pass_tags: ["good_pass"]
|
|
487
479
|
});
|
|
488
480
|
case 3:
|
|
489
|
-
result =
|
|
481
|
+
result = _context7.sent;
|
|
490
482
|
if (result !== null && result !== void 0 && result.data) {
|
|
491
483
|
_result$data = result.data, wallet_pass_list = _result$data.wallet_pass_list, customer = _objectWithoutProperties(_result$data, _excluded);
|
|
492
484
|
this.setCustomer(customer);
|
|
493
485
|
}
|
|
494
|
-
|
|
486
|
+
_context7.next = 10;
|
|
495
487
|
break;
|
|
496
488
|
case 7:
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
console.error("[ShopDiscount] 获取客户钱包信息出错:",
|
|
489
|
+
_context7.prev = 7;
|
|
490
|
+
_context7.t0 = _context7["catch"](0);
|
|
491
|
+
console.error("[ShopDiscount] 获取客户钱包信息出错:", _context7.t0);
|
|
500
492
|
case 10:
|
|
501
493
|
case "end":
|
|
502
|
-
return
|
|
494
|
+
return _context7.stop();
|
|
503
495
|
}
|
|
504
|
-
},
|
|
496
|
+
}, _callee7, this, [[0, 7]]);
|
|
505
497
|
}));
|
|
506
|
-
function getCustomerWallet(
|
|
498
|
+
function getCustomerWallet(_x6) {
|
|
507
499
|
return _getCustomerWallet.apply(this, arguments);
|
|
508
500
|
}
|
|
509
501
|
return getCustomerWallet;
|
|
@@ -511,48 +503,48 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
511
503
|
}, {
|
|
512
504
|
key: "loadPrepareConfig",
|
|
513
505
|
value: function () {
|
|
514
|
-
var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
506
|
+
var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(params) {
|
|
515
507
|
var _this$getCustomer2, _this$store$discount7, _this$store$productLi, customerId, goodPassList, result;
|
|
516
|
-
return _regeneratorRuntime().wrap(function
|
|
517
|
-
while (1) switch (
|
|
508
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
509
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
518
510
|
case 0:
|
|
519
|
-
|
|
511
|
+
_context8.prev = 0;
|
|
520
512
|
customerId = params.customerId || ((_this$getCustomer2 = this.getCustomer()) === null || _this$getCustomer2 === void 0 ? void 0 : _this$getCustomer2.id); // if (customerId === 1 || !customerId) {
|
|
521
513
|
// return
|
|
522
514
|
// }
|
|
523
|
-
|
|
515
|
+
_context8.next = 4;
|
|
524
516
|
return (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 ? void 0 : _this$store$discount7.loadPrepareConfig({
|
|
525
517
|
customer_id: customerId,
|
|
526
518
|
action: "create",
|
|
527
519
|
with_good_pass: 1
|
|
528
520
|
});
|
|
529
521
|
case 4:
|
|
530
|
-
goodPassList =
|
|
522
|
+
goodPassList = _context8.sent;
|
|
531
523
|
this.setDiscountList(goodPassList || []);
|
|
532
524
|
if (!((_this$store$productLi = this.store.productList) !== null && _this$store$productLi !== void 0 && _this$store$productLi.length)) {
|
|
533
|
-
|
|
525
|
+
_context8.next = 10;
|
|
534
526
|
break;
|
|
535
527
|
}
|
|
536
528
|
result = this.calcDiscount(this.store.productList);
|
|
537
|
-
|
|
529
|
+
_context8.next = 10;
|
|
538
530
|
return this.core.effects.emit(ShopDiscountHooks.onLoadPrepareCalcResult, result);
|
|
539
531
|
case 10:
|
|
540
|
-
|
|
532
|
+
_context8.next = 12;
|
|
541
533
|
return this.core.effects.emit(ShopDiscountHooks.onLoadDiscountList, goodPassList);
|
|
542
534
|
case 12:
|
|
543
|
-
|
|
535
|
+
_context8.next = 17;
|
|
544
536
|
break;
|
|
545
537
|
case 14:
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
console.error("[ShopDiscount] 加载准备配置出错:",
|
|
538
|
+
_context8.prev = 14;
|
|
539
|
+
_context8.t0 = _context8["catch"](0);
|
|
540
|
+
console.error("[ShopDiscount] 加载准备配置出错:", _context8.t0);
|
|
549
541
|
case 17:
|
|
550
542
|
case "end":
|
|
551
|
-
return
|
|
543
|
+
return _context8.stop();
|
|
552
544
|
}
|
|
553
|
-
},
|
|
545
|
+
}, _callee8, this, [[0, 14]]);
|
|
554
546
|
}));
|
|
555
|
-
function loadPrepareConfig(
|
|
547
|
+
function loadPrepareConfig(_x7) {
|
|
556
548
|
return _loadPrepareConfig.apply(this, arguments);
|
|
557
549
|
}
|
|
558
550
|
return loadPrepareConfig;
|
|
@@ -23,7 +23,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
|
|
|
23
23
|
filterEnabledDiscountList(discountList: Discount[]): Discount[];
|
|
24
24
|
uniqueByProductId(discountList: Discount[]): Discount[];
|
|
25
25
|
filterDiscountListByProductIds(discountList: Discount[], productIds: number[]): Discount[];
|
|
26
|
-
calcDiscountApplicableProductTotalPrice(discount: Discount): number;
|
|
26
|
+
calcDiscountApplicableProductTotalPrice(discount: Discount): number | undefined;
|
|
27
27
|
destroy(): Promise<void>;
|
|
28
28
|
clear(): Promise<void>;
|
|
29
29
|
storeChange(): void;
|
|
@@ -107,13 +107,15 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
calcDiscountApplicableProductTotalPrice(discount) {
|
|
110
|
+
if (discount == null ? void 0 : discount.savedAmount) {
|
|
111
|
+
return (discount == null ? void 0 : discount.savedAmount) || 0;
|
|
112
|
+
}
|
|
110
113
|
if (discount.appliedProductDetails) {
|
|
111
114
|
return discount.appliedProductDetails.reduce((total, product) => {
|
|
112
115
|
const price = Number(product == null ? void 0 : product.amount) || 0;
|
|
113
116
|
return total + price;
|
|
114
117
|
}, 0);
|
|
115
118
|
}
|
|
116
|
-
return (discount == null ? void 0 : discount.savedAmount) || 0;
|
|
117
119
|
}
|
|
118
120
|
async destroy() {
|
|
119
121
|
this.store.discountList = [];
|
|
@@ -130,10 +130,12 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
130
130
|
sortedProductList.forEach((originProduct) => {
|
|
131
131
|
const product = this.hooks.getProduct(originProduct);
|
|
132
132
|
addModeDiscount.forEach((discount) => {
|
|
133
|
-
var _a;
|
|
133
|
+
var _a, _b, _c;
|
|
134
134
|
const limitedData = discount == null ? void 0 : discount.limited_relation_product_data;
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
const isLimitedProduct = limitedData.type === "product_all" || limitedData.product_ids && limitedData.product_ids.includes(product.id);
|
|
136
|
+
const isAvailableProduct = !((product == null ? void 0 : product.booking_id) && ((_a = product == null ? void 0 : product.discount_list) == null ? void 0 : _a.length) && ((_b = product == null ? void 0 : product.discount_list) == null ? void 0 : _b.every((discount2) => discount2.id)));
|
|
137
|
+
if (isAvailableProduct && isLimitedProduct) {
|
|
138
|
+
(_c = discountApplicability.get(discount.id)) == null ? void 0 : _c.push(product.id);
|
|
137
139
|
const applicableProducts = discountApplicableProducts.get(discount.id) || [];
|
|
138
140
|
applicableProducts.push({
|
|
139
141
|
amount: product.price,
|
|
@@ -149,9 +151,9 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
149
151
|
});
|
|
150
152
|
});
|
|
151
153
|
sortedProductList.forEach((originProduct) => {
|
|
152
|
-
var _a;
|
|
154
|
+
var _a, _b, _c;
|
|
153
155
|
const product = this.hooks.getProduct(originProduct);
|
|
154
|
-
if (product == null ? void 0 : product.booking_id) {
|
|
156
|
+
if ((product == null ? void 0 : product.booking_id) && ((_a = product.discount_list) == null ? void 0 : _a.length) && ((_b = product == null ? void 0 : product.discount_list) == null ? void 0 : _b.every((discount) => discount.id))) {
|
|
155
157
|
processedProductsMap.set(product._id, originProduct);
|
|
156
158
|
return;
|
|
157
159
|
}
|
|
@@ -167,7 +169,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
167
169
|
return false;
|
|
168
170
|
});
|
|
169
171
|
const selectedDiscount = applicableDiscounts[0];
|
|
170
|
-
let isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && !((
|
|
172
|
+
let isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && !((_c = product.discount_list) == null ? void 0 : _c.length);
|
|
171
173
|
if ((options == null ? void 0 : options.discountId) && (options == null ? void 0 : options.discountId) === (selectedDiscount == null ? void 0 : selectedDiscount.id)) {
|
|
172
174
|
isManualDiscount = false;
|
|
173
175
|
}
|
|
@@ -184,6 +186,9 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
184
186
|
);
|
|
185
187
|
return;
|
|
186
188
|
}
|
|
189
|
+
if (applicableDiscounts.length && product.booking_id && typeof selectedDiscount.isManualSelect === "undefined") {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
187
192
|
usedDiscounts.set(selectedDiscount.id, true);
|
|
188
193
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount.id) || [];
|
|
189
194
|
const discountDetail = {
|
|
@@ -225,7 +230,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
225
230
|
if (typeof discount.isSelected === "boolean" && discount.isSelected === false && discount.isManualSelect) {
|
|
226
231
|
return {
|
|
227
232
|
...discount,
|
|
228
|
-
isUsed: false,
|
|
229
233
|
isSelected: false,
|
|
230
234
|
isAvailable,
|
|
231
235
|
// 正确设置可用性
|
|
@@ -239,7 +243,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
239
243
|
if (usedDiscounts.get(discount.id)) {
|
|
240
244
|
return {
|
|
241
245
|
...discount,
|
|
242
|
-
isUsed: true,
|
|
243
246
|
isSelected: true,
|
|
244
247
|
// 标记为可用,因为它已被应用
|
|
245
248
|
isAvailable: true,
|
|
@@ -252,7 +255,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
252
255
|
};
|
|
253
256
|
}
|
|
254
257
|
let isSelected = typeof discount.isSelected === "boolean" ? discount.isSelected : void 0;
|
|
255
|
-
if (isAvailable && !discount.isManualSelect) {
|
|
258
|
+
if (isAvailable && appliedProductDetails.length && !discount.isManualSelect) {
|
|
256
259
|
isSelected = true;
|
|
257
260
|
} else if (!appliedProductDetails.length) {
|
|
258
261
|
isSelected = false;
|
|
@@ -138,11 +138,12 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
138
138
|
}
|
|
139
139
|
// 计算优惠券
|
|
140
140
|
calcDiscount(productList, options) {
|
|
141
|
+
this.store.productList = productList;
|
|
141
142
|
const rulesModule = this.core.getModule(`${this.name}_rules`);
|
|
142
143
|
if (!rulesModule) {
|
|
143
144
|
return { productList, discountList: this.getDiscountList() };
|
|
144
145
|
}
|
|
145
|
-
|
|
146
|
+
let { productList: newProductList, discountList: newDiscountList } = rulesModule.calcDiscount(
|
|
146
147
|
{
|
|
147
148
|
productList,
|
|
148
149
|
discountList: this.getDiscountList()
|
|
@@ -150,7 +151,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
150
151
|
options
|
|
151
152
|
) || { productList, discountList: this.getDiscountList() };
|
|
152
153
|
if (newDiscountList) {
|
|
153
|
-
this.setDiscountList(newDiscountList);
|
|
154
|
+
newDiscountList = this.setDiscountList(newDiscountList);
|
|
154
155
|
}
|
|
155
156
|
return {
|
|
156
157
|
productList: newProductList || productList,
|
|
@@ -169,8 +170,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
169
170
|
...discount,
|
|
170
171
|
isSelected,
|
|
171
172
|
// 手动设置不使用
|
|
172
|
-
isManualSelect: !isSelected
|
|
173
|
-
isUsed: isSelected
|
|
173
|
+
isManualSelect: !isSelected
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
176
|
return discount;
|
|
@@ -257,31 +257,35 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
257
257
|
);
|
|
258
258
|
}
|
|
259
259
|
// 设置优惠券列表
|
|
260
|
-
|
|
260
|
+
setDiscountList(discountList) {
|
|
261
261
|
var _a;
|
|
262
262
|
const productList = this.store.productList || [];
|
|
263
263
|
const editModeDiscountList = [];
|
|
264
264
|
productList.forEach((item) => {
|
|
265
265
|
if (item.booking_id) {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
266
|
+
(item.discount_list || []).forEach((discount) => {
|
|
267
|
+
var _a2, _b, _c;
|
|
268
|
+
if (discount.id) {
|
|
269
|
+
editModeDiscountList.push({
|
|
270
|
+
...discount,
|
|
271
|
+
isEditMode: true,
|
|
272
|
+
limited_relation_product_data: {},
|
|
273
|
+
savedAmount: discount.amount,
|
|
274
|
+
isAvailable: true,
|
|
275
|
+
id: ((_a2 = discount.discount) == null ? void 0 : _a2.resource_id) || discount.id,
|
|
276
|
+
format_title: ((_b = discount.discount) == null ? void 0 : _b.title) || discount.format_title,
|
|
277
|
+
isDisabled: true,
|
|
278
|
+
isSelected: true,
|
|
279
|
+
product_id: ((_c = discount.discount) == null ? void 0 : _c.product_id) || discount.product_id
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
});
|
|
280
283
|
}
|
|
281
284
|
});
|
|
282
|
-
const newDiscountList = (0, import_utils.uniqueById)([...editModeDiscountList, ...discountList], "product_id");
|
|
285
|
+
const newDiscountList = (0, import_utils.uniqueById)([...editModeDiscountList, ...discountList.filter((item) => !item.isDisabled)], "product_id");
|
|
283
286
|
(_a = this.store.discount) == null ? void 0 : _a.setDiscountList(newDiscountList);
|
|
284
|
-
|
|
287
|
+
this.emitDiscountListChange(newDiscountList);
|
|
288
|
+
return newDiscountList;
|
|
285
289
|
}
|
|
286
290
|
// 获取优惠券列表
|
|
287
291
|
getDiscountList() {
|