@pisell/pisellos 0.0.23 → 0.0.25
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/AccountList/index.d.ts +1 -0
- package/dist/modules/AccountList/index.js +57 -30
- 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 +5 -4
- package/dist/solution/ShopDiscount/index.js +65 -73
- package/lib/modules/AccountList/index.d.ts +1 -0
- package/lib/modules/AccountList/index.js +9 -0
- 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 +1 -0
- package/lib/solution/ShopDiscount/index.js +25 -21
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ export declare class AccountListModule extends BaseModule implements Module {
|
|
|
12
12
|
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
13
13
|
addAccount(account: Account): Promise<void>;
|
|
14
14
|
updateAccount(id: string, updates: Account): Promise<void>;
|
|
15
|
+
updateAccountListById(id: string | number, updates: Account): Promise<void>;
|
|
15
16
|
removeAccount(id: string): Promise<void>;
|
|
16
17
|
getAccounts(): AccountModule[];
|
|
17
18
|
getAccount(id: string): AccountModule | null;
|
|
@@ -200,21 +200,48 @@ export var AccountListModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
200
200
|
return updateAccount;
|
|
201
201
|
}()
|
|
202
202
|
}, {
|
|
203
|
-
key: "
|
|
203
|
+
key: "updateAccountListById",
|
|
204
204
|
value: function () {
|
|
205
|
-
var
|
|
206
|
-
var index;
|
|
205
|
+
var _updateAccountListById = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(id, updates) {
|
|
207
206
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
208
207
|
while (1) switch (_context4.prev = _context4.next) {
|
|
209
208
|
case 0:
|
|
210
|
-
|
|
209
|
+
this.store.accountList = this.store.accountList.map(function (account) {
|
|
210
|
+
if (account.id === id) {
|
|
211
|
+
return updates;
|
|
212
|
+
}
|
|
213
|
+
return account;
|
|
214
|
+
});
|
|
215
|
+
this.core.effects.emit("".concat(this.name, ":changed"), {
|
|
216
|
+
value: this.store.accountList
|
|
217
|
+
});
|
|
218
|
+
case 2:
|
|
219
|
+
case "end":
|
|
220
|
+
return _context4.stop();
|
|
221
|
+
}
|
|
222
|
+
}, _callee4, this);
|
|
223
|
+
}));
|
|
224
|
+
function updateAccountListById(_x6, _x7) {
|
|
225
|
+
return _updateAccountListById.apply(this, arguments);
|
|
226
|
+
}
|
|
227
|
+
return updateAccountListById;
|
|
228
|
+
}()
|
|
229
|
+
}, {
|
|
230
|
+
key: "removeAccount",
|
|
231
|
+
value: function () {
|
|
232
|
+
var _removeAccount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(id) {
|
|
233
|
+
var index;
|
|
234
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
235
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
236
|
+
case 0:
|
|
237
|
+
_context5.prev = 0;
|
|
211
238
|
this.store.isLoading = true;
|
|
212
239
|
this.store.error = null;
|
|
213
240
|
index = this.store.accounts.findIndex(function (a) {
|
|
214
241
|
return a.getId() === id;
|
|
215
242
|
});
|
|
216
243
|
if (!(index === -1)) {
|
|
217
|
-
|
|
244
|
+
_context5.next = 6;
|
|
218
245
|
break;
|
|
219
246
|
}
|
|
220
247
|
throw new Error("Account with id ".concat(id, " not found"));
|
|
@@ -224,28 +251,28 @@ export var AccountListModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
224
251
|
this.store.accountList = this.store.accountList.filter(function (account) {
|
|
225
252
|
return account.id !== id;
|
|
226
253
|
});
|
|
227
|
-
|
|
254
|
+
_context5.next = 11;
|
|
228
255
|
return this.core.effects.emit(AccountListHooks.OnAccountListUpdate, this.store);
|
|
229
256
|
case 11:
|
|
230
|
-
|
|
257
|
+
_context5.next = 18;
|
|
231
258
|
break;
|
|
232
259
|
case 13:
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this.store.error =
|
|
236
|
-
|
|
260
|
+
_context5.prev = 13;
|
|
261
|
+
_context5.t0 = _context5["catch"](0);
|
|
262
|
+
this.store.error = _context5.t0 instanceof Error ? _context5.t0.message : 'Failed to remove account';
|
|
263
|
+
_context5.next = 18;
|
|
237
264
|
return this.core.effects.emit(AccountListHooks.OnAccountListError, this.store.error);
|
|
238
265
|
case 18:
|
|
239
|
-
|
|
266
|
+
_context5.prev = 18;
|
|
240
267
|
this.store.isLoading = false;
|
|
241
|
-
return
|
|
268
|
+
return _context5.finish(18);
|
|
242
269
|
case 21:
|
|
243
270
|
case "end":
|
|
244
|
-
return
|
|
271
|
+
return _context5.stop();
|
|
245
272
|
}
|
|
246
|
-
},
|
|
273
|
+
}, _callee5, this, [[0, 13, 18, 21]]);
|
|
247
274
|
}));
|
|
248
|
-
function removeAccount(
|
|
275
|
+
function removeAccount(_x8) {
|
|
249
276
|
return _removeAccount.apply(this, arguments);
|
|
250
277
|
}
|
|
251
278
|
return removeAccount;
|
|
@@ -265,34 +292,34 @@ export var AccountListModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
265
292
|
}, {
|
|
266
293
|
key: "clearAccounts",
|
|
267
294
|
value: function () {
|
|
268
|
-
var _clearAccounts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
269
|
-
return _regeneratorRuntime().wrap(function
|
|
270
|
-
while (1) switch (
|
|
295
|
+
var _clearAccounts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
296
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
297
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
271
298
|
case 0:
|
|
272
|
-
|
|
299
|
+
_context6.prev = 0;
|
|
273
300
|
this.store.isLoading = true;
|
|
274
301
|
this.store.error = null;
|
|
275
302
|
this.store.accounts = [];
|
|
276
|
-
|
|
303
|
+
_context6.next = 6;
|
|
277
304
|
return this.core.effects.emit(AccountListHooks.OnAccountListUpdate, this.store);
|
|
278
305
|
case 6:
|
|
279
|
-
|
|
306
|
+
_context6.next = 13;
|
|
280
307
|
break;
|
|
281
308
|
case 8:
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
this.store.error =
|
|
285
|
-
|
|
309
|
+
_context6.prev = 8;
|
|
310
|
+
_context6.t0 = _context6["catch"](0);
|
|
311
|
+
this.store.error = _context6.t0 instanceof Error ? _context6.t0.message : 'Failed to clear accounts';
|
|
312
|
+
_context6.next = 13;
|
|
286
313
|
return this.core.effects.emit(AccountListHooks.OnAccountListError, this.store.error);
|
|
287
314
|
case 13:
|
|
288
|
-
|
|
315
|
+
_context6.prev = 13;
|
|
289
316
|
this.store.isLoading = false;
|
|
290
|
-
return
|
|
317
|
+
return _context6.finish(13);
|
|
291
318
|
case 16:
|
|
292
319
|
case "end":
|
|
293
|
-
return
|
|
320
|
+
return _context6.stop();
|
|
294
321
|
}
|
|
295
|
-
},
|
|
322
|
+
}, _callee6, this, [[0, 8, 13, 16]]);
|
|
296
323
|
}));
|
|
297
324
|
function clearAccounts() {
|
|
298
325
|
return _clearAccounts.apply(this, arguments);
|
|
@@ -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;
|
|
@@ -485,9 +485,10 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
485
485
|
case 0:
|
|
486
486
|
account = this.store.accountList.getAccount(accountId);
|
|
487
487
|
if (!account) {
|
|
488
|
-
_context11.next =
|
|
488
|
+
_context11.next = 8;
|
|
489
489
|
break;
|
|
490
490
|
}
|
|
491
|
+
this.store.accountList.updateAccountListById(account.getId(), accountInfo);
|
|
491
492
|
account.setAccountInfo(accountInfo);
|
|
492
493
|
// 然后去购物车,把原先关联了 holder_id 为 accountId 的商品,替换为 holder_id = accountInfo.id
|
|
493
494
|
cartItems = this.store.cart.getItems();
|
|
@@ -499,11 +500,11 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
499
500
|
});
|
|
500
501
|
}
|
|
501
502
|
});
|
|
502
|
-
_context11.next =
|
|
503
|
+
_context11.next = 9;
|
|
503
504
|
break;
|
|
504
|
-
case 7:
|
|
505
|
-
throw new Error("\u6CA1\u6709\u627E\u5230".concat(accountId, "\u8D26\u6237"));
|
|
506
505
|
case 8:
|
|
506
|
+
throw new Error("\u6CA1\u6709\u627E\u5230".concat(accountId, "\u8D26\u6237"));
|
|
507
|
+
case 9:
|
|
507
508
|
case "end":
|
|
508
509
|
return _context11.stop();
|
|
509
510
|
}
|
|
@@ -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;
|
|
@@ -12,6 +12,7 @@ export declare class AccountListModule extends BaseModule implements Module {
|
|
|
12
12
|
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
13
13
|
addAccount(account: Account): Promise<void>;
|
|
14
14
|
updateAccount(id: string, updates: Account): Promise<void>;
|
|
15
|
+
updateAccountListById(id: string | number, updates: Account): Promise<void>;
|
|
15
16
|
removeAccount(id: string): Promise<void>;
|
|
16
17
|
getAccounts(): AccountModule[];
|
|
17
18
|
getAccount(id: string): AccountModule | null;
|
|
@@ -109,6 +109,15 @@ var AccountListModule = class extends import_BaseModule.BaseModule {
|
|
|
109
109
|
this.store.isLoading = false;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
+
async updateAccountListById(id, updates) {
|
|
113
|
+
this.store.accountList = this.store.accountList.map((account) => {
|
|
114
|
+
if (account.id === id) {
|
|
115
|
+
return updates;
|
|
116
|
+
}
|
|
117
|
+
return account;
|
|
118
|
+
});
|
|
119
|
+
this.core.effects.emit(`${this.name}:changed`, { value: this.store.accountList });
|
|
120
|
+
}
|
|
112
121
|
async removeAccount(id) {
|
|
113
122
|
try {
|
|
114
123
|
this.store.isLoading = true;
|
|
@@ -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;
|
|
@@ -238,6 +238,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
238
238
|
async setLoginAccount(accountId, accountInfo) {
|
|
239
239
|
const account = this.store.accountList.getAccount(accountId);
|
|
240
240
|
if (account) {
|
|
241
|
+
this.store.accountList.updateAccountListById(account.getId(), accountInfo);
|
|
241
242
|
account.setAccountInfo(accountInfo);
|
|
242
243
|
const cartItems = this.store.cart.getItems();
|
|
243
244
|
cartItems.forEach((item) => {
|
|
@@ -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() {
|