@pisell/pisellos 0.0.127 → 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.
@@ -20,4 +20,5 @@ export declare class DateModule extends BaseModule implements Module, DateModule
20
20
  getResourceAvailableTimeList(params: IGetAvailableTimeListParams): Promise<ITime[]>;
21
21
  clearDateRange(): void;
22
22
  storeChange(): void;
23
+ getResourcesListByDate(date: string): any[] | undefined;
23
24
  }
@@ -232,6 +232,16 @@ export var DateModule = /*#__PURE__*/function (_BaseModule) {
232
232
  });
233
233
  }
234
234
  }
235
+ }, {
236
+ key: "getResourcesListByDate",
237
+ value: function getResourcesListByDate(date) {
238
+ var _dateList$find;
239
+ var dateList = this.store.dateList;
240
+ var resourcesList = (_dateList$find = dateList.find(function (item) {
241
+ return item.date === date;
242
+ })) === null || _dateList$find === void 0 ? void 0 : _dateList$find.resource;
243
+ return resourcesList;
244
+ }
235
245
  }]);
236
246
  return DateModule;
237
247
  }(BaseModule);
@@ -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
  }