@pisell/pisellos 0.0.128 → 0.0.129

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.
@@ -17,6 +17,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
17
17
  loadPrepareConfig(params: {
18
18
  action?: 'create';
19
19
  with_good_pass: 0 | 1;
20
+ with_discount_card: 0 | 1;
20
21
  customer_id: number;
21
22
  }): Promise<Discount[]>;
22
23
  batchSearch(code: string): Promise<Discount[]>;
@@ -1,4 +1,10 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
5
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
2
8
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
9
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
10
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
@@ -18,6 +24,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
18
24
  import { uniqueById } from "../../solution/ShopDiscount/utils";
19
25
  import { BaseModule } from "../BaseModule";
20
26
  import { DiscountHooks } from "./types";
27
+ import Decimal from 'decimal.js';
21
28
  export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
22
29
  _inherits(DiscountModule, _BaseModule);
23
30
  var _super = _createSuper(DiscountModule);
@@ -113,7 +120,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
113
120
  key: "loadPrepareConfig",
114
121
  value: function () {
115
122
  var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(params) {
116
- var _prepareConfig$data;
123
+ var _prepareConfig$data, _prepareConfig$data2;
117
124
  var prepareConfig, goodPassList;
118
125
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
119
126
  while (1) switch (_context3.prev = _context3.next) {
@@ -122,9 +129,10 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
122
129
  return this.request.post("/order/prepare/config", params);
123
130
  case 2:
124
131
  prepareConfig = _context3.sent;
125
- goodPassList = this.filterEnabledDiscountList((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data = prepareConfig.data) === null || _prepareConfig$data === void 0 ? void 0 : _prepareConfig$data.good_pass_list) || []) || [];
132
+ goodPassList = this.filterEnabledDiscountList([].concat(_toConsumableArray((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data = prepareConfig.data) === null || _prepareConfig$data === void 0 ? void 0 : _prepareConfig$data.good_pass_list) || []), _toConsumableArray((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data2 = prepareConfig.data) === null || _prepareConfig$data2 === void 0 ? void 0 : _prepareConfig$data2.discount_card_list) || []))) || [];
133
+ this.setDiscountList(goodPassList);
126
134
  return _context3.abrupt("return", goodPassList);
127
- case 5:
135
+ case 6:
128
136
  case "end":
129
137
  return _context3.stop();
130
138
  }
@@ -147,7 +155,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
147
155
  return this.request.get("/machinecode/batch-search", {
148
156
  code: code,
149
157
  translate_flag: 1,
150
- tag: 'good_pass',
158
+ tags: ['good_pass', 'product_discount_card'],
151
159
  available: 1,
152
160
  relation_product: 1
153
161
  });
@@ -170,7 +178,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
170
178
  key: "filterEnabledDiscountList",
171
179
  value: function filterEnabledDiscountList(discountList) {
172
180
  return discountList.filter(function (discount) {
173
- return discount.limit_status === 'enable' && Number((discount === null || discount === void 0 ? void 0 : discount.par_value) || 0) - Number((discount === null || discount === void 0 ? void 0 : discount.used_par_value) || 0) > 0;
181
+ return discount.limit_status === 'enable' && new Decimal((discount === null || discount === void 0 ? void 0 : discount.par_value) || 0).minus(new Decimal((discount === null || discount === void 0 ? void 0 : discount.used_par_value) || 0)).greaterThan(0);
174
182
  });
175
183
  }
176
184
 
@@ -198,8 +206,8 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
198
206
  }
199
207
  if (discount.appliedProductDetails) {
200
208
  return discount.appliedProductDetails.reduce(function (total, product) {
201
- var price = Number(product === null || product === void 0 ? void 0 : product.amount) || 0;
202
- return total + price;
209
+ var price = new Decimal((product === null || product === void 0 ? void 0 : product.amount) || 0);
210
+ return new Decimal(total).plus(price).toNumber();
203
211
  }, 0);
204
212
  }
205
213
  }
@@ -27,6 +27,7 @@ import { BaseModule } from "../BaseModule";
27
27
  import { RulesHooks } from "./types";
28
28
  import { uniqueById } from "../../solution/ShopDiscount/utils";
29
29
  import { getProductOriginTotalPrice, getProductTotalPrice } from "../Cart/utils";
30
+ import Decimal from 'decimal.js';
30
31
  export var RulesModule = /*#__PURE__*/function (_BaseModule) {
31
32
  _inherits(RulesModule, _BaseModule);
32
33
  var _super = _createSuper(RulesModule);
@@ -163,24 +164,49 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
163
164
  return !discount.isManualSelect;
164
165
  });
165
166
 
166
- // 优惠券按过期时间排序(即将过期优先)
167
+ // 优惠力度排序,传进来的数据里可能有商品券,也可能有优惠券
168
+ // 商品券(n.tag=good_pass)视为最优惠(免费),折扣券(n.tag=product_discount_card)按照n.par_value排序
169
+ // 如果最后拍出来商品券有多个,或者说没有商品券,但是有多个相同折扣的折扣券(比如 6 折券有 3张),则按照过期时间(n.expire_time)排序
167
170
  var sortedDiscountList = _toConsumableArray(filteredDiscountList).sort(function (a, b) {
168
- if (a.expire_time && b.expire_time) {
169
- var timeA = new Date(a.expire_time).getTime();
170
- var timeB = new Date(b.expire_time).getTime();
171
- return timeA - timeB;
171
+ // 1. 商品券优先级最高
172
+ if (a.tag === 'good_pass' && b.tag !== 'good_pass') return -1;
173
+ if (b.tag === 'good_pass' && a.tag !== 'good_pass') return 1;
174
+
175
+ // 2. 如果都是商品券或都不是商品券,按照类型和折扣力度排序
176
+ if (a.tag === 'good_pass' && b.tag === 'good_pass') {
177
+ // 都是商品券,按照过期时间排序
178
+ return compareByExpireTime(a, b);
179
+ } else if (a.tag === 'product_discount_card' && b.tag === 'product_discount_card') {
180
+ // 都是折扣券,按照par_value排序(折扣越大越优先,即par_value越小越优先)
181
+ if (a.par_value !== b.par_value) {
182
+ var valueA = new Decimal(a.par_value || 0);
183
+ var valueB = new Decimal(b.par_value || 0);
184
+ return valueA.minus(valueB).toNumber();
185
+ }
186
+ // 相同折扣的情况下,按照过期时间排序
187
+ return compareByExpireTime(a, b);
188
+ }
189
+
190
+ // 3. 其他情况按照过期时间排序
191
+ return compareByExpireTime(a, b);
192
+ function compareByExpireTime(itemA, itemB) {
193
+ if (itemA.expire_time && itemB.expire_time) {
194
+ var timeA = new Date(itemA.expire_time).getTime();
195
+ var timeB = new Date(itemB.expire_time).getTime();
196
+ return timeA - timeB;
197
+ }
198
+ // 有过期时间的优先级高于永久的
199
+ return itemA.expire_time ? -1 : itemB.expire_time ? 1 : 0;
172
200
  }
173
- // 有过期时间的优先级高于永久的
174
- return a.expire_time ? -1 : b.expire_time ? 1 : 0;
175
201
  });
176
202
 
177
203
  // 对productList按价格降序排序(用于应用优惠券时优先选择高价商品)
178
204
  var sortedProductList = _toConsumableArray(productList).sort(function (a, b) {
179
205
  var aProduct = _this3.hooks.getProduct(a);
180
206
  var bProduct = _this3.hooks.getProduct(b);
181
- var priceA = parseFloat(aProduct.price || '0');
182
- var priceB = parseFloat(bProduct.price || '0');
183
- return priceB - priceA;
207
+ var priceA = new Decimal(aProduct.price || '0');
208
+ var priceB = new Decimal(bProduct.price || '0');
209
+ return priceB.minus(priceA).toNumber();
184
210
  });
185
211
 
186
212
  // 标记已使用的优惠券
@@ -233,7 +259,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
233
259
  discount: {
234
260
  resource_id: discount.id,
235
261
  title: discount.format_title,
236
- original_amount: product.origin_total
262
+ original_amount: product.origin_total,
263
+ pre_value: discount.par_value
237
264
  }
238
265
  });
239
266
  discountApplicableProducts.set(discount.id, applicableProducts);
@@ -321,14 +348,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
321
348
 
322
349
  // 记录实际应用了优惠券的商品信息
323
350
  var appliedProducts = appliedDiscountProducts.get(selectedDiscount.id) || [];
351
+ var targetProductPrice = selectedDiscount.tag === 'good_pass' ? '0' : new Decimal(selectedDiscount.par_value || 0).div(100).mul(new Decimal(product.price || 0)).toFixed(2);
324
352
  var discountDetail = {
325
- amount: product.price,
326
- type: selectedDiscount.tag,
353
+ amount: selectedDiscount.tag === 'product_discount_card' ? new Decimal(product.price || 0).minus(new Decimal(targetProductPrice)).toNumber() : product.price,
354
+ type: selectedDiscount.tag === 'product_discount_card' ? 'discount_card' : selectedDiscount.tag,
327
355
  discount: {
328
356
  resource_id: selectedDiscount.id,
329
357
  title: selectedDiscount.format_title,
330
- original_amount: product.origin_total,
331
- product_id: selectedDiscount.product_id
358
+ original_amount: product.price,
359
+ product_id: selectedDiscount.product_id,
360
+ percent: selectedDiscount.par_value
332
361
  }
333
362
  };
334
363
  appliedProducts.push(discountDetail);
@@ -339,7 +368,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
339
368
  if (product.isClient) {
340
369
  processedProductsMap.set(product._id, _this3.hooks.setProduct(originProduct, {
341
370
  discount_list: [discountDetail],
342
- price: 0,
371
+ price: new Decimal(targetProductPrice).toNumber(),
343
372
  origin_total: getProductOriginTotalPrice({
344
373
  product: {
345
374
  original_price: product.original_price
@@ -349,7 +378,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
349
378
  }),
350
379
  total: getProductTotalPrice({
351
380
  product: {
352
- price: '0'
381
+ price: targetProductPrice
353
382
  },
354
383
  bundle: product.bundle,
355
384
  options: product.options
@@ -358,8 +387,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
358
387
  } else {
359
388
  processedProductsMap.set(product._id, _this3.hooks.setProduct(originProduct, {
360
389
  discount_list: [discountDetail],
361
- price: 0,
362
- total: (product.origin_total || product.total) - product.price,
390
+ price: new Decimal(targetProductPrice).toNumber(),
391
+ total: new Decimal(product.origin_total || product.total || 0).minus(new Decimal(product.price || 0)).toNumber(),
363
392
  origin_total: product.origin_total || product.total
364
393
  }));
365
394
  }
@@ -2592,7 +2592,8 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
2592
2592
  _ref11$quantity = _ref11.quantity,
2593
2593
  quantity = _ref11$quantity === void 0 ? 1 : _ref11$quantity;
2594
2594
  var productData = _objectSpread(_objectSpread({}, origin), {}, {
2595
- product_variant_id: product_variant_id
2595
+ product_variant_id: product_variant_id,
2596
+ rowKey: rowKey
2596
2597
  });
2597
2598
  if (!account) {
2598
2599
  var activeAccount = this.getActiveAccount();
@@ -2611,7 +2612,10 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
2611
2612
  _id: targetCartItem._id,
2612
2613
  product: _objectSpread(_objectSpread({}, targetCartItem._productOrigin), {}, {
2613
2614
  quantity: (targetCartItem.num || 1) + quantity
2614
- })
2615
+ }),
2616
+ bundle: targetCartItem._bundleOrigin,
2617
+ options: targetCartItem._optionsOrigin,
2618
+ quantity: (targetCartItem.num || 1) + quantity
2615
2619
  });
2616
2620
  return;
2617
2621
  }
@@ -2949,6 +2953,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
2949
2953
  startDate,
2950
2954
  endDate,
2951
2955
  endDateAfterMonth,
2956
+ tempEndDate,
2952
2957
  tempProducts,
2953
2958
  schedule,
2954
2959
  filteredSchedule,
@@ -2976,17 +2981,23 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
2976
2981
  // 优化策略:
2977
2982
  // 在 endDate 添加完一个月以后,如果 endDate 还小于 startDate + 7 天,则还需要 endDate+7 天
2978
2983
  endDateAfterMonth = dayjs().add(1, 'month').format('YYYY-MM-DD');
2984
+ tempEndDate = endDateAfterMonth;
2979
2985
  if (dayjs(startDate).add(7, 'day').isAfter(dayjs(endDateAfterMonth), 'day')) {
2980
- endDate = dayjs(startDate).add(7, 'day').format('YYYY-MM-DD');
2986
+ tempEndDate = dayjs(startDate).add(7, 'day').format('YYYY-MM-DD');
2981
2987
  } else {
2982
- endDate = endDateAfterMonth;
2988
+ tempEndDate = endDateAfterMonth;
2989
+ }
2990
+ // 如果这么算出来的 tempEndDate 还小于 endDate,则需要把 endDate 置为 tempEndDate
2991
+ if (dayjs(tempEndDate).isBefore(dayjs(endDate), 'day')) {
2992
+ tempEndDate = endDate || '';
2983
2993
  }
2994
+ endDate = tempEndDate;
2984
2995
  // 如果当前打开了某个的商品详情弹窗,则应该默认用这个商品
2985
2996
  tempProducts = (_this$store$currentPr3 = this.store.currentProduct) === null || _this$store$currentPr3 === void 0 ? void 0 : _this$store$currentPr3.getData();
2986
2997
  schedule = (_this$store$currentPr4 = this.store.currentProduct) === null || _this$store$currentPr4 === void 0 ? void 0 : _this$store$currentPr4.getOtherParams()['schedule'];
2987
2998
  filteredSchedule = filterScheduleByDateRange(schedule, startDate || '', endDate || ''); // 1.后端返回的数据,确定资源在每一天的可用和使用情况
2988
2999
  tempResourceIds = getResourcesIdsByProduct(tempProducts);
2989
- _context32.next = 11;
3000
+ _context32.next = 14;
2990
3001
  return this.store.date.fetchResourceDates({
2991
3002
  query: {
2992
3003
  start_date: startDate || '',
@@ -2994,17 +3005,17 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
2994
3005
  resource_ids: tempResourceIds
2995
3006
  }
2996
3007
  });
2997
- case 11:
3008
+ case 14:
2998
3009
  res = _context32.sent;
2999
3010
  // 先去读缓存结果,因为正常 UI 调用的是 7 天,而下面我会直接计算 30 天(最少也是 14 天),所以先去读缓存结果,如果缓存结果存在,则直接返回
3000
3011
  // TODO 优化关于为什么要放在接口后,因为在获取时间切片的时候还需要读一次接口数据,其实可以直接从这个结果里拿了,需要优化
3001
3012
  cache = (_this$store$currentPr5 = this.store.currentProduct) === null || _this$store$currentPr5 === void 0 ? void 0 : _this$store$currentPr5.getOtherParams()['timeSlotBySchedule'];
3002
3013
  if (!cache) {
3003
- _context32.next = 17;
3014
+ _context32.next = 20;
3004
3015
  break;
3005
3016
  }
3006
3017
  if (!(dayjs(params.startDate).isSameOrAfter(dayjs(cache.startDate), 'day') && dayjs(params.endDate).isSameOrBefore(dayjs(cache.endDate), 'day'))) {
3007
- _context32.next = 17;
3018
+ _context32.next = 20;
3008
3019
  break;
3009
3020
  }
3010
3021
  this.store.date.setDateList(cache.dateList);
@@ -3012,7 +3023,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
3012
3023
  dateList: cache.dateList,
3013
3024
  firstAvailableDate: cache.firstAvailableDate
3014
3025
  });
3015
- case 17:
3026
+ case 20:
3016
3027
  // 2. 商品 schedule 数据,确定日程在每一天的时间片
3017
3028
  // 3. 把后端返回的和 schedule 的数据进行合并,确定每一天的可用和使用情况
3018
3029
  dates = [];
@@ -3139,22 +3150,22 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
3139
3150
  }
3140
3151
  }, _loop3);
3141
3152
  });
3142
- case 25:
3153
+ case 28:
3143
3154
  if (!(dayjs(currentDate).isBefore(dayjs(endDate), 'day') || dayjs(currentDate).isSame(dayjs(endDate), 'day'))) {
3144
- _context32.next = 31;
3155
+ _context32.next = 34;
3145
3156
  break;
3146
3157
  }
3147
- return _context32.delegateYield(_loop3(), "t0", 27);
3148
- case 27:
3158
+ return _context32.delegateYield(_loop3(), "t0", 30);
3159
+ case 30:
3149
3160
  if (!_context32.t0) {
3150
- _context32.next = 29;
3161
+ _context32.next = 32;
3151
3162
  break;
3152
3163
  }
3153
- return _context32.abrupt("break", 31);
3154
- case 29:
3155
- _context32.next = 25;
3164
+ return _context32.abrupt("break", 34);
3165
+ case 32:
3166
+ _context32.next = 28;
3156
3167
  break;
3157
- case 31:
3168
+ case 34:
3158
3169
  // 最终把资源数据也加到日期内
3159
3170
  dates = handleAvailableDateByResource(res.data, dates);
3160
3171
  this.store.date.setDateList(dates);
@@ -3170,7 +3181,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
3170
3181
  dateList: dates,
3171
3182
  firstAvailableDate: firstAvailableDate
3172
3183
  });
3173
- case 35:
3184
+ case 38:
3174
3185
  case "end":
3175
3186
  return _context32.stop();
3176
3187
  }
@@ -1,7 +1,5 @@
1
- var _excluded = ["wallet_pass_list"];
2
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2
+ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
5
3
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
6
4
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -196,7 +194,8 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
196
194
  _this2.loadPrepareConfig({
197
195
  customerId: customer.id,
198
196
  action: 'create',
199
- with_good_pass: 1
197
+ with_good_pass: 1,
198
+ with_discount_card: 1
200
199
  });
201
200
  });
202
201
  }
@@ -473,14 +472,14 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
473
472
  key: "getCustomerWallet",
474
473
  value: function () {
475
474
  var _getCustomerWallet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(id) {
476
- var result, _result$data, wallet_pass_list, customer;
475
+ var result, customer;
477
476
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
478
477
  while (1) switch (_context7.prev = _context7.next) {
479
478
  case 0:
480
479
  _context7.prev = 0;
481
480
  _context7.next = 3;
482
- return this.request.get("/customer/info/wallet/".concat(id), {
483
- wallet_pass_tags: ['good_pass']
481
+ return this.request.get("/customer/info/".concat(id), {
482
+ with_trashed: 1
484
483
  });
485
484
  case 3:
486
485
  result = _context7.sent;
@@ -488,7 +487,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
488
487
  _context7.next = 9;
489
488
  break;
490
489
  }
491
- _result$data = result.data, wallet_pass_list = _result$data.wallet_pass_list, customer = _objectWithoutProperties(_result$data, _excluded);
490
+ customer = Object.assign({}, (_objectDestructuringEmpty(result.data), result.data));
492
491
  this.setCustomer(customer);
493
492
  _context7.next = 9;
494
493
  return this.core.effects.emit(ShopDiscountHooks.onScanCustomerChange, customer);
@@ -526,7 +525,8 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
526
525
  return (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 ? void 0 : _this$store$discount7.loadPrepareConfig({
527
526
  customer_id: customerId,
528
527
  action: 'create',
529
- with_good_pass: 1
528
+ with_good_pass: 1,
529
+ with_discount_card: 1
530
530
  });
531
531
  case 4:
532
532
  goodPassList = _context8.sent;
@@ -17,6 +17,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
17
17
  loadPrepareConfig(params: {
18
18
  action?: 'create';
19
19
  with_good_pass: 0 | 1;
20
+ with_discount_card: 0 | 1;
20
21
  customer_id: number;
21
22
  }): Promise<Discount[]>;
22
23
  batchSearch(code: string): Promise<Discount[]>;
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // src/modules/Discount/index.ts
@@ -25,6 +35,7 @@ module.exports = __toCommonJS(Discount_exports);
25
35
  var import_utils = require("../../solution/ShopDiscount/utils");
26
36
  var import_BaseModule = require("../BaseModule");
27
37
  var import_types = require("./types");
38
+ var import_decimal = __toESM(require("decimal.js"));
28
39
  var DiscountModule = class extends import_BaseModule.BaseModule {
29
40
  constructor(name, version) {
30
41
  super(name, version);
@@ -68,21 +79,22 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
68
79
  return this.store.discountList;
69
80
  }
70
81
  async loadPrepareConfig(params) {
71
- var _a;
82
+ var _a, _b;
72
83
  const prepareConfig = await this.request.post(
73
84
  `/order/prepare/config`,
74
85
  params
75
86
  );
76
87
  const goodPassList = this.filterEnabledDiscountList(
77
- ((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || []
88
+ [...((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || [], ...((_b = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _b.discount_card_list) || []]
78
89
  ) || [];
90
+ this.setDiscountList(goodPassList);
79
91
  return goodPassList;
80
92
  }
81
93
  async batchSearch(code) {
82
94
  const result = await this.request.get(`/machinecode/batch-search`, {
83
95
  code,
84
96
  translate_flag: 1,
85
- tag: "good_pass",
97
+ tags: ["good_pass", "product_discount_card"],
86
98
  available: 1,
87
99
  relation_product: 1
88
100
  });
@@ -91,7 +103,7 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
91
103
  }
92
104
  filterEnabledDiscountList(discountList) {
93
105
  return discountList.filter(
94
- (discount) => discount.limit_status === "enable" && Number((discount == null ? void 0 : discount.par_value) || 0) - Number((discount == null ? void 0 : discount.used_par_value) || 0) > 0
106
+ (discount) => discount.limit_status === "enable" && new import_decimal.default((discount == null ? void 0 : discount.par_value) || 0).minus(new import_decimal.default((discount == null ? void 0 : discount.used_par_value) || 0)).greaterThan(0)
95
107
  );
96
108
  }
97
109
  // 根据productIds去重
@@ -110,8 +122,8 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
110
122
  }
111
123
  if (discount.appliedProductDetails) {
112
124
  return discount.appliedProductDetails.reduce((total, product) => {
113
- const price = Number(product == null ? void 0 : product.amount) || 0;
114
- return total + price;
125
+ const price = new import_decimal.default((product == null ? void 0 : product.amount) || 0);
126
+ return new import_decimal.default(total).plus(price).toNumber();
115
127
  }, 0);
116
128
  }
117
129
  }
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // src/modules/Rules/index.ts
@@ -26,6 +36,7 @@ var import_BaseModule = require("../BaseModule");
26
36
  var import_types = require("./types");
27
37
  var import_utils = require("../../solution/ShopDiscount/utils");
28
38
  var import_utils2 = require("../Cart/utils");
39
+ var import_decimal = __toESM(require("decimal.js"));
29
40
  var RulesModule = class extends import_BaseModule.BaseModule {
30
41
  constructor(name, version) {
31
42
  super(name, version);
@@ -107,19 +118,36 @@ var RulesModule = class extends import_BaseModule.BaseModule {
107
118
  return !discount.isManualSelect;
108
119
  });
109
120
  const sortedDiscountList = [...filteredDiscountList].sort((a, b) => {
110
- if (a.expire_time && b.expire_time) {
111
- const timeA = new Date(a.expire_time).getTime();
112
- const timeB = new Date(b.expire_time).getTime();
113
- return timeA - timeB;
121
+ if (a.tag === "good_pass" && b.tag !== "good_pass")
122
+ return -1;
123
+ if (b.tag === "good_pass" && a.tag !== "good_pass")
124
+ return 1;
125
+ if (a.tag === "good_pass" && b.tag === "good_pass") {
126
+ return compareByExpireTime(a, b);
127
+ } else if (a.tag === "product_discount_card" && b.tag === "product_discount_card") {
128
+ if (a.par_value !== b.par_value) {
129
+ const valueA = new import_decimal.default(a.par_value || 0);
130
+ const valueB = new import_decimal.default(b.par_value || 0);
131
+ return valueA.minus(valueB).toNumber();
132
+ }
133
+ return compareByExpireTime(a, b);
134
+ }
135
+ return compareByExpireTime(a, b);
136
+ function compareByExpireTime(itemA, itemB) {
137
+ if (itemA.expire_time && itemB.expire_time) {
138
+ const timeA = new Date(itemA.expire_time).getTime();
139
+ const timeB = new Date(itemB.expire_time).getTime();
140
+ return timeA - timeB;
141
+ }
142
+ return itemA.expire_time ? -1 : itemB.expire_time ? 1 : 0;
114
143
  }
115
- return a.expire_time ? -1 : b.expire_time ? 1 : 0;
116
144
  });
117
145
  const sortedProductList = [...productList].sort((a, b) => {
118
146
  const aProduct = this.hooks.getProduct(a);
119
147
  const bProduct = this.hooks.getProduct(b);
120
- const priceA = parseFloat(aProduct.price || "0");
121
- const priceB = parseFloat(bProduct.price || "0");
122
- return priceB - priceA;
148
+ const priceA = new import_decimal.default(aProduct.price || "0");
149
+ const priceB = new import_decimal.default(bProduct.price || "0");
150
+ return priceB.minus(priceA).toNumber();
123
151
  });
124
152
  const usedDiscounts = /* @__PURE__ */ new Map();
125
153
  const discountApplicability = /* @__PURE__ */ new Map();
@@ -146,7 +174,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
146
174
  discount: {
147
175
  resource_id: discount.id,
148
176
  title: discount.format_title,
149
- original_amount: product.origin_total
177
+ original_amount: product.origin_total,
178
+ pre_value: discount.par_value
150
179
  }
151
180
  });
152
181
  discountApplicableProducts.set(discount.id, applicableProducts);
@@ -220,14 +249,16 @@ var RulesModule = class extends import_BaseModule.BaseModule {
220
249
  }
221
250
  usedDiscounts.set(selectedDiscount.id, true);
222
251
  const appliedProducts = appliedDiscountProducts.get(selectedDiscount.id) || [];
252
+ const targetProductPrice = selectedDiscount.tag === "good_pass" ? "0" : new import_decimal.default(selectedDiscount.par_value || 0).div(100).mul(new import_decimal.default(product.price || 0)).toFixed(2);
223
253
  const discountDetail = {
224
- amount: product.price,
225
- type: selectedDiscount.tag,
254
+ amount: selectedDiscount.tag === "product_discount_card" ? new import_decimal.default(product.price || 0).minus(new import_decimal.default(targetProductPrice)).toNumber() : product.price,
255
+ type: selectedDiscount.tag === "product_discount_card" ? "discount_card" : selectedDiscount.tag,
226
256
  discount: {
227
257
  resource_id: selectedDiscount.id,
228
258
  title: selectedDiscount.format_title,
229
- original_amount: product.origin_total,
230
- product_id: selectedDiscount.product_id
259
+ original_amount: product.price,
260
+ product_id: selectedDiscount.product_id,
261
+ percent: selectedDiscount.par_value
231
262
  }
232
263
  };
233
264
  appliedProducts.push(discountDetail);
@@ -237,7 +268,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
237
268
  product._id,
238
269
  this.hooks.setProduct(originProduct, {
239
270
  discount_list: [discountDetail],
240
- price: 0,
271
+ price: new import_decimal.default(targetProductPrice).toNumber(),
241
272
  origin_total: (0, import_utils2.getProductOriginTotalPrice)({
242
273
  product: {
243
274
  original_price: product.original_price
@@ -247,7 +278,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
247
278
  }),
248
279
  total: (0, import_utils2.getProductTotalPrice)({
249
280
  product: {
250
- price: "0"
281
+ price: targetProductPrice
251
282
  },
252
283
  bundle: product.bundle,
253
284
  options: product.options
@@ -259,8 +290,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
259
290
  product._id,
260
291
  this.hooks.setProduct(originProduct, {
261
292
  discount_list: [discountDetail],
262
- price: 0,
263
- total: (product.origin_total || product.total) - product.price,
293
+ price: new import_decimal.default(targetProductPrice).toNumber(),
294
+ total: new import_decimal.default(product.origin_total || product.total || 0).minus(new import_decimal.default(product.price || 0)).toNumber(),
264
295
  origin_total: product.origin_total || product.total
265
296
  })
266
297
  );
@@ -1796,7 +1796,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1796
1796
  account
1797
1797
  }) {
1798
1798
  const { bundle, options, origin, product_variant_id, rowKey, quantity = 1 } = product || {};
1799
- const productData = { ...origin, product_variant_id };
1799
+ const productData = { ...origin, product_variant_id, rowKey };
1800
1800
  if (!account) {
1801
1801
  const activeAccount = this.getActiveAccount();
1802
1802
  if (activeAccount) {
@@ -1815,7 +1815,10 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1815
1815
  product: {
1816
1816
  ...targetCartItem._productOrigin,
1817
1817
  quantity: (targetCartItem.num || 1) + quantity
1818
- }
1818
+ },
1819
+ bundle: targetCartItem._bundleOrigin,
1820
+ options: targetCartItem._optionsOrigin,
1821
+ quantity: (targetCartItem.num || 1) + quantity
1819
1822
  });
1820
1823
  return;
1821
1824
  }
@@ -2076,11 +2079,16 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
2076
2079
  startDate = (0, import_dayjs.default)().format("YYYY-MM-DD");
2077
2080
  }
2078
2081
  const endDateAfterMonth = (0, import_dayjs.default)().add(1, "month").format("YYYY-MM-DD");
2082
+ let tempEndDate = endDateAfterMonth;
2079
2083
  if ((0, import_dayjs.default)(startDate).add(7, "day").isAfter((0, import_dayjs.default)(endDateAfterMonth), "day")) {
2080
- endDate = (0, import_dayjs.default)(startDate).add(7, "day").format("YYYY-MM-DD");
2084
+ tempEndDate = (0, import_dayjs.default)(startDate).add(7, "day").format("YYYY-MM-DD");
2081
2085
  } else {
2082
- endDate = endDateAfterMonth;
2086
+ tempEndDate = endDateAfterMonth;
2087
+ }
2088
+ if ((0, import_dayjs.default)(tempEndDate).isBefore((0, import_dayjs.default)(endDate), "day")) {
2089
+ tempEndDate = endDate || "";
2083
2090
  }
2091
+ endDate = tempEndDate;
2084
2092
  let tempProducts;
2085
2093
  tempProducts = (_a = this.store.currentProduct) == null ? void 0 : _a.getData();
2086
2094
  const schedule = (_b = this.store.currentProduct) == null ? void 0 : _b.getOtherParams()["schedule"];
@@ -118,7 +118,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
118
118
  this.loadPrepareConfig({
119
119
  customerId: customer.id,
120
120
  action: "create",
121
- with_good_pass: 1
121
+ with_good_pass: 1,
122
+ with_discount_card: 1
122
123
  });
123
124
  }
124
125
  );
@@ -303,11 +304,11 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
303
304
  // 获取客户钱包信息
304
305
  async getCustomerWallet(id) {
305
306
  try {
306
- const result = await this.request.get(`/customer/info/wallet/${id}`, {
307
- wallet_pass_tags: ["good_pass"]
307
+ const result = await this.request.get(`/customer/info/${id}`, {
308
+ with_trashed: 1
308
309
  });
309
310
  if (result == null ? void 0 : result.data) {
310
- const { wallet_pass_list, ...customer } = result.data;
311
+ const { ...customer } = result.data;
311
312
  this.setCustomer(customer);
312
313
  await this.core.effects.emit(
313
314
  import_types.ShopDiscountHooks.onScanCustomerChange,
@@ -326,7 +327,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
326
327
  const goodPassList = await ((_b = this.store.discount) == null ? void 0 : _b.loadPrepareConfig({
327
328
  customer_id: customerId,
328
329
  action: "create",
329
- with_good_pass: 1
330
+ with_good_pass: 1,
331
+ with_discount_card: 1
330
332
  }));
331
333
  const scanDiscount = (_c = this.getDiscountList()) == null ? void 0 : _c.filter(
332
334
  (item) => item.isScan
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "0.0.128",
4
+ "version": "0.0.129",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",