@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.
- package/dist/modules/Date/index.d.ts +1 -0
- package/dist/modules/Date/index.js +10 -0
- package/dist/modules/Discount/index.d.ts +1 -0
- package/dist/modules/Discount/index.js +15 -7
- package/dist/modules/Rules/index.js +48 -19
- package/dist/solution/BookingByStep/index.js +168 -111
- package/dist/solution/BookingByStep/utils/resources.d.ts +6 -2
- package/dist/solution/BookingByStep/utils/resources.js +14 -4
- package/dist/solution/ShopDiscount/index.js +9 -9
- package/lib/modules/Date/index.d.ts +1 -0
- package/lib/modules/Date/index.js +6 -0
- package/lib/modules/Discount/index.d.ts +1 -0
- package/lib/modules/Discount/index.js +18 -6
- package/lib/modules/Rules/index.js +48 -17
- package/lib/solution/BookingByStep/index.js +88 -42
- package/lib/solution/BookingByStep/utils/resources.d.ts +6 -2
- package/lib/solution/BookingByStep/utils/resources.js +12 -4
- package/lib/solution/ShopDiscount/index.js +7 -5
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
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' &&
|
|
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 =
|
|
202
|
-
return total
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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 =
|
|
182
|
-
var priceB =
|
|
183
|
-
return priceB
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
362
|
-
total: (product.origin_total || product.total)
|
|
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
|
}
|