@pisell/pisellos 0.0.22 → 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/BookingByStep/index.js +4 -0
- package/dist/solution/ShopDiscount/index.js +73 -85
- 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/BookingByStep/index.js +4 -0
- package/lib/solution/ShopDiscount/index.js +25 -24
- 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;
|
|
@@ -177,6 +177,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
177
177
|
open_quotation: 1,
|
|
178
178
|
open_bundle: 1,
|
|
179
179
|
extension_type: ["product_appointment", "appointment_ticket"],
|
|
180
|
+
with: ["category", "collection"],
|
|
180
181
|
status: "published",
|
|
181
182
|
num: 500,
|
|
182
183
|
skip: 1,
|
|
@@ -1022,6 +1023,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1022
1023
|
}
|
|
1023
1024
|
} else {
|
|
1024
1025
|
var _productResources$fin;
|
|
1026
|
+
debugger;
|
|
1025
1027
|
// 如果没有传递 timeSlots,代表是第一种资源,则直接拿商品的 duration,到资源列表里找一个公共可用的
|
|
1026
1028
|
var productResources = getResourcesByProduct(resourcesMap, item, allCartItems);
|
|
1027
1029
|
// 自动选择 productResources 中对应 resources_code 的资源
|
|
@@ -1042,6 +1044,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1042
1044
|
}
|
|
1043
1045
|
});
|
|
1044
1046
|
});
|
|
1047
|
+
debugger;
|
|
1045
1048
|
return {
|
|
1046
1049
|
errorList: errorList
|
|
1047
1050
|
};
|
|
@@ -1084,6 +1087,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1084
1087
|
duration = accountDuration;
|
|
1085
1088
|
}
|
|
1086
1089
|
});
|
|
1090
|
+
debugger;
|
|
1087
1091
|
var timeSlots = getTimeSlicesByResources({
|
|
1088
1092
|
resourceIds: resourceIds,
|
|
1089
1093
|
resourcesMap: resourcesMap,
|
|
@@ -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,52 +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
|
-
|
|
520
|
-
customerId = params.customerId || ((_this$getCustomer2 = this.getCustomer()) === null || _this$getCustomer2 === void 0 ? void 0 : _this$getCustomer2.id);
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
}
|
|
525
|
-
return _context9.abrupt("return");
|
|
526
|
-
case 4:
|
|
527
|
-
_context9.next = 6;
|
|
511
|
+
_context8.prev = 0;
|
|
512
|
+
customerId = params.customerId || ((_this$getCustomer2 = this.getCustomer()) === null || _this$getCustomer2 === void 0 ? void 0 : _this$getCustomer2.id); // if (customerId === 1 || !customerId) {
|
|
513
|
+
// return
|
|
514
|
+
// }
|
|
515
|
+
_context8.next = 4;
|
|
528
516
|
return (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 ? void 0 : _this$store$discount7.loadPrepareConfig({
|
|
529
517
|
customer_id: customerId,
|
|
530
518
|
action: "create",
|
|
531
519
|
with_good_pass: 1
|
|
532
520
|
});
|
|
533
|
-
case
|
|
534
|
-
goodPassList =
|
|
521
|
+
case 4:
|
|
522
|
+
goodPassList = _context8.sent;
|
|
535
523
|
this.setDiscountList(goodPassList || []);
|
|
536
524
|
if (!((_this$store$productLi = this.store.productList) !== null && _this$store$productLi !== void 0 && _this$store$productLi.length)) {
|
|
537
|
-
|
|
525
|
+
_context8.next = 10;
|
|
538
526
|
break;
|
|
539
527
|
}
|
|
540
528
|
result = this.calcDiscount(this.store.productList);
|
|
541
|
-
|
|
529
|
+
_context8.next = 10;
|
|
542
530
|
return this.core.effects.emit(ShopDiscountHooks.onLoadPrepareCalcResult, result);
|
|
543
|
-
case
|
|
544
|
-
|
|
531
|
+
case 10:
|
|
532
|
+
_context8.next = 12;
|
|
545
533
|
return this.core.effects.emit(ShopDiscountHooks.onLoadDiscountList, goodPassList);
|
|
546
|
-
case
|
|
547
|
-
|
|
534
|
+
case 12:
|
|
535
|
+
_context8.next = 17;
|
|
548
536
|
break;
|
|
549
|
-
case
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
console.error("[ShopDiscount] 加载准备配置出错:",
|
|
553
|
-
case
|
|
537
|
+
case 14:
|
|
538
|
+
_context8.prev = 14;
|
|
539
|
+
_context8.t0 = _context8["catch"](0);
|
|
540
|
+
console.error("[ShopDiscount] 加载准备配置出错:", _context8.t0);
|
|
541
|
+
case 17:
|
|
554
542
|
case "end":
|
|
555
|
-
return
|
|
543
|
+
return _context8.stop();
|
|
556
544
|
}
|
|
557
|
-
},
|
|
545
|
+
}, _callee8, this, [[0, 14]]);
|
|
558
546
|
}));
|
|
559
|
-
function loadPrepareConfig(
|
|
547
|
+
function loadPrepareConfig(_x7) {
|
|
560
548
|
return _loadPrepareConfig.apply(this, arguments);
|
|
561
549
|
}
|
|
562
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;
|
|
@@ -134,6 +134,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
134
134
|
open_quotation: 1,
|
|
135
135
|
open_bundle: 1,
|
|
136
136
|
extension_type: ["product_appointment", "appointment_ticket"],
|
|
137
|
+
with: ["category", "collection"],
|
|
137
138
|
status: "published",
|
|
138
139
|
num: 500,
|
|
139
140
|
skip: 1,
|
|
@@ -571,6 +572,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
571
572
|
errorList.push(item._id);
|
|
572
573
|
}
|
|
573
574
|
} else {
|
|
575
|
+
debugger;
|
|
574
576
|
const productResources = (0, import_resources.getResourcesByProduct)(resourcesMap, item, allCartItems);
|
|
575
577
|
const targetRenderList = (_a = productResources.find((n) => n.code === resources_code)) == null ? void 0 : _a.renderList;
|
|
576
578
|
if (targetRenderList && targetRenderList.length > 0) {
|
|
@@ -589,6 +591,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
589
591
|
}
|
|
590
592
|
});
|
|
591
593
|
});
|
|
594
|
+
debugger;
|
|
592
595
|
return { errorList };
|
|
593
596
|
}
|
|
594
597
|
// 从购物车中获取已经分配好第一步资源的所有时间片
|
|
@@ -621,6 +624,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
621
624
|
duration = accountDuration;
|
|
622
625
|
}
|
|
623
626
|
});
|
|
627
|
+
debugger;
|
|
624
628
|
const timeSlots = (0, import_resources.getTimeSlicesByResources)({
|
|
625
629
|
resourceIds,
|
|
626
630
|
resourcesMap,
|
|
@@ -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() {
|
|
@@ -307,9 +311,6 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
307
311
|
var _a, _b, _c;
|
|
308
312
|
try {
|
|
309
313
|
const customerId = params.customerId || ((_a = this.getCustomer()) == null ? void 0 : _a.id);
|
|
310
|
-
if (customerId === 1 || !customerId) {
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
314
|
const goodPassList = await ((_b = this.store.discount) == null ? void 0 : _b.loadPrepareConfig({
|
|
314
315
|
customer_id: customerId,
|
|
315
316
|
action: "create",
|