@pisell/pisellos 2.2.93 → 2.2.95
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/Order/index.d.ts +1 -1
- package/dist/plugins/app-types/app/app.d.ts +1 -0
- package/dist/server/index.d.ts +55 -0
- package/dist/server/index.js +826 -207
- package/dist/server/modules/index.d.ts +6 -0
- package/dist/server/modules/index.js +7 -0
- package/dist/server/modules/order/index.d.ts +87 -0
- package/dist/server/modules/order/index.js +916 -0
- package/dist/server/modules/order/types.d.ts +530 -0
- package/dist/server/modules/order/types.js +141 -0
- package/dist/server/modules/order/utils/filterBookings.d.ts +6 -0
- package/dist/server/modules/order/utils/filterBookings.js +350 -0
- package/dist/server/modules/order/utils/filterOrders.d.ts +15 -0
- package/dist/server/modules/order/utils/filterOrders.js +226 -0
- package/dist/server/modules/resource/index.d.ts +88 -0
- package/dist/server/modules/resource/index.js +1202 -0
- package/dist/server/modules/resource/types.d.ts +121 -0
- package/dist/server/modules/resource/types.js +47 -0
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/Sales/index.d.ts +96 -0
- package/dist/solution/Sales/index.js +562 -0
- package/dist/solution/Sales/types.d.ts +66 -0
- package/dist/solution/Sales/types.js +26 -0
- package/dist/solution/index.d.ts +1 -0
- package/dist/solution/index.js +2 -1
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/plugins/app-types/app/app.d.ts +1 -0
- package/lib/server/index.d.ts +55 -0
- package/lib/server/index.js +343 -1
- package/lib/server/modules/index.d.ts +6 -0
- package/lib/server/modules/index.js +16 -2
- package/lib/server/modules/order/index.d.ts +87 -0
- package/lib/server/modules/order/index.js +543 -0
- package/lib/server/modules/order/types.d.ts +530 -0
- package/lib/server/modules/order/types.js +34 -0
- package/lib/server/modules/order/utils/filterBookings.d.ts +6 -0
- package/lib/server/modules/order/utils/filterBookings.js +320 -0
- package/lib/server/modules/order/utils/filterOrders.d.ts +15 -0
- package/lib/server/modules/order/utils/filterOrders.js +197 -0
- package/lib/server/modules/resource/index.d.ts +88 -0
- package/lib/server/modules/resource/index.js +571 -0
- package/lib/server/modules/resource/types.d.ts +121 -0
- package/lib/server/modules/resource/types.js +35 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/Sales/index.d.ts +96 -0
- package/lib/solution/Sales/index.js +413 -0
- package/lib/solution/Sales/types.d.ts +66 -0
- package/lib/solution/Sales/types.js +35 -0
- package/lib/solution/index.d.ts +1 -0
- package/lib/solution/index.js +3 -1
- package/package.json +1 -1
|
@@ -0,0 +1,916 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
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); }
|
|
4
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
5
|
+
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."); }
|
|
6
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
7
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
9
|
+
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); }
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
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); } }
|
|
13
|
+
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); }); }; }
|
|
14
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
16
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
17
|
+
function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
|
|
18
|
+
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
|
|
19
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
20
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
21
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
22
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
23
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
24
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
25
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
26
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
28
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
29
|
+
import { cloneDeep } from 'lodash-es';
|
|
30
|
+
import dayjs from 'dayjs';
|
|
31
|
+
import { BaseModule } from "../../../modules/BaseModule";
|
|
32
|
+
import { OrderHooks } from "./types";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* SQLite 存储名称
|
|
36
|
+
*/
|
|
37
|
+
var INDEXDB_STORE_NAME = 'orders';
|
|
38
|
+
var ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY = 'server_order_last_full_fetch_at';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Order 模块 - 基础框架
|
|
42
|
+
*/
|
|
43
|
+
export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
44
|
+
_inherits(OrderModule, _BaseModule);
|
|
45
|
+
var _super = _createSuper(OrderModule);
|
|
46
|
+
function OrderModule(name, version) {
|
|
47
|
+
var _this;
|
|
48
|
+
_classCallCheck(this, OrderModule);
|
|
49
|
+
_this = _super.call(this, name, version);
|
|
50
|
+
_defineProperty(_assertThisInitialized(_this), "defaultName", 'order');
|
|
51
|
+
_defineProperty(_assertThisInitialized(_this), "defaultVersion", '1.0.0');
|
|
52
|
+
_defineProperty(_assertThisInitialized(_this), "store", void 0);
|
|
53
|
+
_defineProperty(_assertThisInitialized(_this), "dbManager", void 0);
|
|
54
|
+
_defineProperty(_assertThisInitialized(_this), "orderDataSource", void 0);
|
|
55
|
+
_defineProperty(_assertThisInitialized(_this), "pendingSyncMessages", []);
|
|
56
|
+
_defineProperty(_assertThisInitialized(_this), "syncTimer", void 0);
|
|
57
|
+
_defineProperty(_assertThisInitialized(_this), "ORDER_SYNC_DEBOUNCE_MS", 10000);
|
|
58
|
+
// Map<resource_id, OrderId[]> 资源到订单的倒排索引
|
|
59
|
+
_defineProperty(_assertThisInitialized(_this), "resourceIdIndex", new Map());
|
|
60
|
+
_defineProperty(_assertThisInitialized(_this), "logger", void 0);
|
|
61
|
+
// LoggerManager 实例
|
|
62
|
+
_defineProperty(_assertThisInitialized(_this), "storage", void 0);
|
|
63
|
+
return _this;
|
|
64
|
+
}
|
|
65
|
+
_createClass(OrderModule, [{
|
|
66
|
+
key: "initialize",
|
|
67
|
+
value: function () {
|
|
68
|
+
var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(core, options) {
|
|
69
|
+
var _options$initialState;
|
|
70
|
+
var appPlugin, app, _this$store$createdAt, coreData, today, operatingDayBoundary, boundaryTime, boundaryStart, boundaryEnd;
|
|
71
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
72
|
+
while (1) switch (_context.prev = _context.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
this.core = core;
|
|
75
|
+
this.store = options === null || options === void 0 ? void 0 : options.store;
|
|
76
|
+
if (!this.store.map) this.store.map = new Map();
|
|
77
|
+
appPlugin = core.getPlugin('app');
|
|
78
|
+
app = appPlugin === null || appPlugin === void 0 ? void 0 : appPlugin.getApp();
|
|
79
|
+
if (app) {
|
|
80
|
+
this.dbManager = app.sqlite;
|
|
81
|
+
this.logger = app.logger;
|
|
82
|
+
this.storage = app.storage;
|
|
83
|
+
coreData = app.data.store.getStore().getDataByModel('core');
|
|
84
|
+
if (!((_this$store$createdAt = this.store.createdAtQuery) !== null && _this$store$createdAt !== void 0 && _this$store$createdAt.sales_time_between) && coreData !== null && coreData !== void 0 && coreData.core) {
|
|
85
|
+
today = dayjs();
|
|
86
|
+
if (coreData !== null && coreData !== void 0 && coreData.core.operating_day_boundary) {
|
|
87
|
+
operatingDayBoundary = coreData.core.operating_day_boundary;
|
|
88
|
+
if (operatingDayBoundary.type === 'start_time') {
|
|
89
|
+
boundaryTime = String(operatingDayBoundary.time || '').trim();
|
|
90
|
+
boundaryStart = dayjs("".concat(today.format('YYYY-MM-DD'), " ").concat(boundaryTime));
|
|
91
|
+
boundaryEnd = boundaryStart.add(1, 'day');
|
|
92
|
+
if (boundaryStart.isValid()) {
|
|
93
|
+
this.store.createdAtQuery = {
|
|
94
|
+
sales_time_between: [boundaryStart.format('YYYY-MM-DD HH:mm:ss'), boundaryEnd.format('YYYY-MM-DD HH:mm:ss')]
|
|
95
|
+
};
|
|
96
|
+
} else {
|
|
97
|
+
// 边界时间异常时回退到自然日,避免 createdAtQuery 为空导致后续查询异常
|
|
98
|
+
this.store.createdAtQuery = {
|
|
99
|
+
sales_time_between: [today.startOf('day').format('YYYY-MM-DD HH:mm:ss'), today.endOf('day').format('YYYY-MM-DD HH:mm:ss')]
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
this.store.createdAtQuery = {
|
|
104
|
+
sales_time_between: [today.startOf('day').format('YYYY-MM-DD HH:mm:ss'), today.endOf('day').format('YYYY-MM-DD HH:mm:ss')]
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
// TODO: 这里后续可能需要使用店铺营业时间查询
|
|
109
|
+
this.store.createdAtQuery = {
|
|
110
|
+
sales_time_between: [today.startOf('day').format('YYYY-MM-DD HH:mm:ss'), today.endOf('day').format('YYYY-MM-DD HH:mm:ss')]
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (Array.isArray(options === null || options === void 0 || (_options$initialState = options.initialState) === null || _options$initialState === void 0 ? void 0 : _options$initialState.list)) {
|
|
116
|
+
this.store.list = options.initialState.list;
|
|
117
|
+
this.syncOrdersMap();
|
|
118
|
+
this.core.effects.emit(OrderHooks.onOrdersChanged, this.store.list);
|
|
119
|
+
} else {
|
|
120
|
+
this.store.list = [];
|
|
121
|
+
this.store.map = new Map();
|
|
122
|
+
}
|
|
123
|
+
this.initOrderDataSource();
|
|
124
|
+
this.setupOrderSync();
|
|
125
|
+
this.logInfo('OrderServer模块初始化完成', {
|
|
126
|
+
hasDbManager: !!this.dbManager,
|
|
127
|
+
hasLogger: !!this.logger,
|
|
128
|
+
initialOrderCount: this.store.list.length
|
|
129
|
+
});
|
|
130
|
+
case 10:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context.stop();
|
|
133
|
+
}
|
|
134
|
+
}, _callee, this);
|
|
135
|
+
}));
|
|
136
|
+
function initialize(_x, _x2) {
|
|
137
|
+
return _initialize.apply(this, arguments);
|
|
138
|
+
}
|
|
139
|
+
return initialize;
|
|
140
|
+
}()
|
|
141
|
+
/**
|
|
142
|
+
* 记录信息日志
|
|
143
|
+
* @param title 日志标题
|
|
144
|
+
* @param metadata 日志元数据
|
|
145
|
+
*/
|
|
146
|
+
}, {
|
|
147
|
+
key: "logInfo",
|
|
148
|
+
value: function logInfo(title, metadata) {
|
|
149
|
+
try {
|
|
150
|
+
if (this.logger) {
|
|
151
|
+
this.logger.addLog({
|
|
152
|
+
type: 'info',
|
|
153
|
+
title: "[OrderServerModule] ".concat(title),
|
|
154
|
+
metadata: metadata || {}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
} catch (_unused) {
|
|
158
|
+
// 日志记录失败不影响主流程
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 记录错误日志
|
|
164
|
+
* @param title 日志标题
|
|
165
|
+
* @param metadata 日志元数据
|
|
166
|
+
*/
|
|
167
|
+
}, {
|
|
168
|
+
key: "logError",
|
|
169
|
+
value: function logError(title, metadata) {
|
|
170
|
+
try {
|
|
171
|
+
if (this.logger) {
|
|
172
|
+
this.logger.addLog({
|
|
173
|
+
type: 'error',
|
|
174
|
+
title: "[OrderServerModule] ".concat(title),
|
|
175
|
+
metadata: metadata || {}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
} catch (_unused2) {
|
|
179
|
+
// 日志记录失败不影响主流程
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}, {
|
|
183
|
+
key: "preload",
|
|
184
|
+
value: function () {
|
|
185
|
+
var _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
186
|
+
var orders;
|
|
187
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
188
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
189
|
+
case 0:
|
|
190
|
+
_context2.next = 2;
|
|
191
|
+
return this.loadOrdersByServer();
|
|
192
|
+
case 2:
|
|
193
|
+
orders = _context2.sent;
|
|
194
|
+
if (!(orders.length === 0)) {
|
|
195
|
+
_context2.next = 5;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
return _context2.abrupt("return");
|
|
199
|
+
case 5:
|
|
200
|
+
this.store.list = cloneDeep(orders);
|
|
201
|
+
this.syncOrdersMap();
|
|
202
|
+
this.core.effects.emit(OrderHooks.onOrdersChanged, this.store.list);
|
|
203
|
+
case 8:
|
|
204
|
+
case "end":
|
|
205
|
+
return _context2.stop();
|
|
206
|
+
}
|
|
207
|
+
}, _callee2, this);
|
|
208
|
+
}));
|
|
209
|
+
function preload() {
|
|
210
|
+
return _preload.apply(this, arguments);
|
|
211
|
+
}
|
|
212
|
+
return preload;
|
|
213
|
+
}()
|
|
214
|
+
}, {
|
|
215
|
+
key: "getOrders",
|
|
216
|
+
value: function getOrders() {
|
|
217
|
+
return this.store.list;
|
|
218
|
+
}
|
|
219
|
+
}, {
|
|
220
|
+
key: "getOrderById",
|
|
221
|
+
value: function getOrderById(id) {
|
|
222
|
+
return this.store.map.get(this.getIdKey(id));
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/** 按 order_id 查询(推荐) */
|
|
226
|
+
}, {
|
|
227
|
+
key: "getOrderByOrderId",
|
|
228
|
+
value: function getOrderByOrderId(orderId) {
|
|
229
|
+
return this.store.map.get(this.getIdKey(orderId));
|
|
230
|
+
}
|
|
231
|
+
}, {
|
|
232
|
+
key: "loadOrdersByServer",
|
|
233
|
+
value: function () {
|
|
234
|
+
var _loadOrdersByServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
235
|
+
var orderList, data;
|
|
236
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
237
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
238
|
+
case 0:
|
|
239
|
+
orderList = [];
|
|
240
|
+
if (!this.orderDataSource) {
|
|
241
|
+
_context3.next = 13;
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
_context3.prev = 2;
|
|
245
|
+
_context3.next = 5;
|
|
246
|
+
return this.orderDataSource.run({
|
|
247
|
+
http: {
|
|
248
|
+
query: this.store.createdAtQuery
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
case 5:
|
|
252
|
+
data = _context3.sent;
|
|
253
|
+
orderList = data || [];
|
|
254
|
+
this.markOrderPulledAtNow();
|
|
255
|
+
_context3.next = 13;
|
|
256
|
+
break;
|
|
257
|
+
case 10:
|
|
258
|
+
_context3.prev = 10;
|
|
259
|
+
_context3.t0 = _context3["catch"](2);
|
|
260
|
+
orderList = [];
|
|
261
|
+
case 13:
|
|
262
|
+
_context3.next = 15;
|
|
263
|
+
return this.saveOrdersToSQLite(orderList);
|
|
264
|
+
case 15:
|
|
265
|
+
_context3.next = 17;
|
|
266
|
+
return this.core.effects.emit(OrderHooks.onOrdersLoaded, orderList);
|
|
267
|
+
case 17:
|
|
268
|
+
return _context3.abrupt("return", orderList);
|
|
269
|
+
case 18:
|
|
270
|
+
case "end":
|
|
271
|
+
return _context3.stop();
|
|
272
|
+
}
|
|
273
|
+
}, _callee3, this, [[2, 10]]);
|
|
274
|
+
}));
|
|
275
|
+
function loadOrdersByServer() {
|
|
276
|
+
return _loadOrdersByServer.apply(this, arguments);
|
|
277
|
+
}
|
|
278
|
+
return loadOrdersByServer;
|
|
279
|
+
}()
|
|
280
|
+
}, {
|
|
281
|
+
key: "getOrdersByResourceId",
|
|
282
|
+
value: function getOrdersByResourceId(resourceId) {
|
|
283
|
+
var _this2 = this;
|
|
284
|
+
var ids = this.resourceIdIndex.get(String(resourceId)) || [];
|
|
285
|
+
return ids.map(function (id) {
|
|
286
|
+
return _this2.store.map.get(id);
|
|
287
|
+
}).filter(function (order) {
|
|
288
|
+
return !!order;
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}, {
|
|
292
|
+
key: "getRoutes",
|
|
293
|
+
value: function getRoutes() {
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
}, {
|
|
297
|
+
key: "destroy",
|
|
298
|
+
value: function destroy() {
|
|
299
|
+
var _this$orderDataSource;
|
|
300
|
+
if (this.syncTimer) {
|
|
301
|
+
clearTimeout(this.syncTimer);
|
|
302
|
+
this.syncTimer = undefined;
|
|
303
|
+
}
|
|
304
|
+
this.pendingSyncMessages = [];
|
|
305
|
+
if ((_this$orderDataSource = this.orderDataSource) !== null && _this$orderDataSource !== void 0 && _this$orderDataSource.destroy) this.orderDataSource.destroy();
|
|
306
|
+
_get(_getPrototypeOf(OrderModule.prototype), "destroy", this).call(this);
|
|
307
|
+
}
|
|
308
|
+
}, {
|
|
309
|
+
key: "syncOrdersMap",
|
|
310
|
+
value: function syncOrdersMap() {
|
|
311
|
+
var _this3 = this;
|
|
312
|
+
this.store.map.clear();
|
|
313
|
+
this.resourceIdIndex.clear();
|
|
314
|
+
var _iterator = _createForOfIteratorHelper(this.store.list),
|
|
315
|
+
_step;
|
|
316
|
+
try {
|
|
317
|
+
var _loop = function _loop() {
|
|
318
|
+
var order = _step.value;
|
|
319
|
+
var id = order.order_id;
|
|
320
|
+
if (id === undefined || id === null) return 1; // continue
|
|
321
|
+
_this3.store.map.set(_this3.getIdKey(id), order);
|
|
322
|
+
var resourceIds = _this3.extractResourceIds(order);
|
|
323
|
+
var _iterator2 = _createForOfIteratorHelper(resourceIds),
|
|
324
|
+
_step2;
|
|
325
|
+
try {
|
|
326
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
327
|
+
var resourceId = _step2.value;
|
|
328
|
+
var key = String(resourceId);
|
|
329
|
+
var existing = _this3.resourceIdIndex.get(key) || [];
|
|
330
|
+
if (existing.some(function (eid) {
|
|
331
|
+
return _this3.getIdKey(eid) === _this3.getIdKey(id);
|
|
332
|
+
})) continue;
|
|
333
|
+
existing.push(id);
|
|
334
|
+
_this3.resourceIdIndex.set(key, existing);
|
|
335
|
+
}
|
|
336
|
+
} catch (err) {
|
|
337
|
+
_iterator2.e(err);
|
|
338
|
+
} finally {
|
|
339
|
+
_iterator2.f();
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
343
|
+
if (_loop()) continue;
|
|
344
|
+
}
|
|
345
|
+
} catch (err) {
|
|
346
|
+
_iterator.e(err);
|
|
347
|
+
} finally {
|
|
348
|
+
_iterator.f();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}, {
|
|
352
|
+
key: "extractResourceIds",
|
|
353
|
+
value: function extractResourceIds(order) {
|
|
354
|
+
var ids = new Set();
|
|
355
|
+
var visitResources = function visitResources(resources) {
|
|
356
|
+
if (!Array.isArray(resources)) return;
|
|
357
|
+
resources.forEach(function (resource) {
|
|
358
|
+
var rid = resource === null || resource === void 0 ? void 0 : resource.relation_id;
|
|
359
|
+
if (rid !== undefined && rid !== null && rid !== '') ids.add(String(rid));
|
|
360
|
+
if (Array.isArray(resource === null || resource === void 0 ? void 0 : resource.children)) visitResources(resource.children);
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
if (Array.isArray(order === null || order === void 0 ? void 0 : order.bookings)) {
|
|
364
|
+
order.bookings.forEach(function (booking) {
|
|
365
|
+
return visitResources((booking === null || booking === void 0 ? void 0 : booking.resources) || []);
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return _toConsumableArray(ids);
|
|
369
|
+
}
|
|
370
|
+
}, {
|
|
371
|
+
key: "getOrderDateKey",
|
|
372
|
+
value: function getOrderDateKey(order) {
|
|
373
|
+
var _order$bookings, _order$bookings2;
|
|
374
|
+
var candidates = [order === null || order === void 0 ? void 0 : order.schedule_date, order === null || order === void 0 ? void 0 : order.create_date, order === null || order === void 0 ? void 0 : order.created_at, order === null || order === void 0 || (_order$bookings = order.bookings) === null || _order$bookings === void 0 || (_order$bookings = _order$bookings[0]) === null || _order$bookings === void 0 ? void 0 : _order$bookings.start_date, order === null || order === void 0 || (_order$bookings2 = order.bookings) === null || _order$bookings2 === void 0 || (_order$bookings2 = _order$bookings2[0]) === null || _order$bookings2 === void 0 ? void 0 : _order$bookings2.select_date];
|
|
375
|
+
for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {
|
|
376
|
+
var v = _candidates[_i];
|
|
377
|
+
if (!v) continue;
|
|
378
|
+
var text = String(v);
|
|
379
|
+
if (!text) continue;
|
|
380
|
+
return text.split('T')[0].split(' ')[0];
|
|
381
|
+
}
|
|
382
|
+
return undefined;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* 初始化 OrderDataSource 实例
|
|
387
|
+
*/
|
|
388
|
+
}, {
|
|
389
|
+
key: "initOrderDataSource",
|
|
390
|
+
value: function initOrderDataSource() {
|
|
391
|
+
var _serverOptions;
|
|
392
|
+
var OrderDataSourceClass = (_serverOptions = this.core.serverOptions) === null || _serverOptions === void 0 || (_serverOptions = _serverOptions.All_DATA_SOURCES) === null || _serverOptions === void 0 ? void 0 : _serverOptions.OrderDataSource;
|
|
393
|
+
if (!OrderDataSourceClass) return;
|
|
394
|
+
this.orderDataSource = new OrderDataSourceClass();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* 初始化 pubsub 订阅,监听订单变更
|
|
399
|
+
*/
|
|
400
|
+
}, {
|
|
401
|
+
key: "setupOrderSync",
|
|
402
|
+
value: function setupOrderSync() {
|
|
403
|
+
var _this4 = this;
|
|
404
|
+
if (!this.orderDataSource) return;
|
|
405
|
+
var shouldSkipHttpPull = this.hasPulledOrdersToday();
|
|
406
|
+
var syncPayload = {
|
|
407
|
+
pubsub: {
|
|
408
|
+
callback: function callback(res) {
|
|
409
|
+
var message = _this4.normalizeOrderSyncMessage(res);
|
|
410
|
+
if (!message) return;
|
|
411
|
+
_this4.pendingSyncMessages.push(message);
|
|
412
|
+
if (_this4.syncTimer) clearTimeout(_this4.syncTimer);
|
|
413
|
+
_this4.syncTimer = setTimeout(function () {
|
|
414
|
+
_this4.processOrderSyncMessages();
|
|
415
|
+
}, _this4.ORDER_SYNC_DEBOUNCE_MS);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
syncPayload.http = {
|
|
420
|
+
query: this.store.createdAtQuery,
|
|
421
|
+
skipHttp: shouldSkipHttpPull
|
|
422
|
+
};
|
|
423
|
+
this.orderDataSource.run(syncPayload).then(function () {
|
|
424
|
+
if (!shouldSkipHttpPull) _this4.markOrderPulledAtNow();
|
|
425
|
+
}).catch(function () {
|
|
426
|
+
// 忽略同步初始化异常,避免影响主流程
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* 处理防抖后的同步消息批次
|
|
432
|
+
*
|
|
433
|
+
* 后端统一发送 change 消息,不再区分新增/编辑/删除。
|
|
434
|
+
* - 单条(id/order_id):若携带 body/data 则直接 upsert 到本地
|
|
435
|
+
* - 批量(ids):通过 HTTP 按 ids 增量拉取,再 merge 到本地
|
|
436
|
+
*/
|
|
437
|
+
}, {
|
|
438
|
+
key: "processOrderSyncMessages",
|
|
439
|
+
value: (function () {
|
|
440
|
+
var _processOrderSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
441
|
+
var messages, upsertOrders, refreshIds, _iterator3, _step3, _msg$id, _msg$relation_order_i, msg, hasBatchIds, singleId, hasSingleId, rawBody, normalizedBody, uniqueRefreshIds, upsertList, freshOrders;
|
|
442
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
443
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
444
|
+
case 0:
|
|
445
|
+
messages = _toConsumableArray(this.pendingSyncMessages);
|
|
446
|
+
this.pendingSyncMessages = [];
|
|
447
|
+
if (!(messages.length === 0)) {
|
|
448
|
+
_context4.next = 4;
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
return _context4.abrupt("return");
|
|
452
|
+
case 4:
|
|
453
|
+
upsertOrders = new Map();
|
|
454
|
+
refreshIds = [];
|
|
455
|
+
_iterator3 = _createForOfIteratorHelper(messages);
|
|
456
|
+
_context4.prev = 7;
|
|
457
|
+
_iterator3.s();
|
|
458
|
+
case 9:
|
|
459
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
460
|
+
_context4.next = 22;
|
|
461
|
+
break;
|
|
462
|
+
}
|
|
463
|
+
msg = _step3.value;
|
|
464
|
+
hasBatchIds = Array.isArray(msg.ids) && msg.ids.length > 0;
|
|
465
|
+
singleId = (_msg$id = msg.id) !== null && _msg$id !== void 0 ? _msg$id : msg.order_id;
|
|
466
|
+
hasSingleId = !hasBatchIds && singleId !== undefined && singleId !== null;
|
|
467
|
+
rawBody = msg.body || msg.data;
|
|
468
|
+
normalizedBody = this.normalizeOrderSyncPayload(rawBody);
|
|
469
|
+
if (!(hasSingleId && normalizedBody)) {
|
|
470
|
+
_context4.next = 19;
|
|
471
|
+
break;
|
|
472
|
+
}
|
|
473
|
+
upsertOrders.set(this.getIdKey(normalizedBody.order_id), normalizedBody);
|
|
474
|
+
return _context4.abrupt("continue", 20);
|
|
475
|
+
case 19:
|
|
476
|
+
if (hasBatchIds) refreshIds.push.apply(refreshIds, _toConsumableArray(msg.ids));else if (hasSingleId) refreshIds.push(singleId);else if ((_msg$relation_order_i = msg.relation_order_ids) !== null && _msg$relation_order_i !== void 0 && _msg$relation_order_i.length) refreshIds.push.apply(refreshIds, _toConsumableArray(msg.relation_order_ids));
|
|
477
|
+
case 20:
|
|
478
|
+
_context4.next = 9;
|
|
479
|
+
break;
|
|
480
|
+
case 22:
|
|
481
|
+
_context4.next = 27;
|
|
482
|
+
break;
|
|
483
|
+
case 24:
|
|
484
|
+
_context4.prev = 24;
|
|
485
|
+
_context4.t0 = _context4["catch"](7);
|
|
486
|
+
_iterator3.e(_context4.t0);
|
|
487
|
+
case 27:
|
|
488
|
+
_context4.prev = 27;
|
|
489
|
+
_iterator3.f();
|
|
490
|
+
return _context4.finish(27);
|
|
491
|
+
case 30:
|
|
492
|
+
uniqueRefreshIds = this.uniqueOrderIds(refreshIds);
|
|
493
|
+
upsertList = _toConsumableArray(upsertOrders.values());
|
|
494
|
+
if (!(upsertList.length > 0)) {
|
|
495
|
+
_context4.next = 35;
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
_context4.next = 35;
|
|
499
|
+
return this.mergeOrdersToStore(upsertList);
|
|
500
|
+
case 35:
|
|
501
|
+
if (!(uniqueRefreshIds.length > 0)) {
|
|
502
|
+
_context4.next = 42;
|
|
503
|
+
break;
|
|
504
|
+
}
|
|
505
|
+
_context4.next = 38;
|
|
506
|
+
return this.fetchOrdersByHttp(uniqueRefreshIds);
|
|
507
|
+
case 38:
|
|
508
|
+
freshOrders = _context4.sent;
|
|
509
|
+
if (!(freshOrders.length > 0)) {
|
|
510
|
+
_context4.next = 42;
|
|
511
|
+
break;
|
|
512
|
+
}
|
|
513
|
+
_context4.next = 42;
|
|
514
|
+
return this.mergeOrdersToStore(freshOrders);
|
|
515
|
+
case 42:
|
|
516
|
+
if (!(upsertList.length === 0 && uniqueRefreshIds.length === 0)) {
|
|
517
|
+
_context4.next = 44;
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
return _context4.abrupt("return");
|
|
521
|
+
case 44:
|
|
522
|
+
_context4.next = 46;
|
|
523
|
+
return this.core.effects.emit(OrderHooks.onOrdersSyncCompleted, null);
|
|
524
|
+
case 46:
|
|
525
|
+
case "end":
|
|
526
|
+
return _context4.stop();
|
|
527
|
+
}
|
|
528
|
+
}, _callee4, this, [[7, 24, 27, 30]]);
|
|
529
|
+
}));
|
|
530
|
+
function processOrderSyncMessages() {
|
|
531
|
+
return _processOrderSyncMessages.apply(this, arguments);
|
|
532
|
+
}
|
|
533
|
+
return processOrderSyncMessages;
|
|
534
|
+
}()
|
|
535
|
+
/**
|
|
536
|
+
* 通过 HTTP 按 ids 增量拉取订单
|
|
537
|
+
*/
|
|
538
|
+
)
|
|
539
|
+
}, {
|
|
540
|
+
key: "fetchOrdersByHttp",
|
|
541
|
+
value: (function () {
|
|
542
|
+
var _fetchOrdersByHttp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(ids) {
|
|
543
|
+
var _orderList, orderList;
|
|
544
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
545
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
546
|
+
case 0:
|
|
547
|
+
if (!(!this.orderDataSource || ids.length === 0)) {
|
|
548
|
+
_context5.next = 2;
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
return _context5.abrupt("return", []);
|
|
552
|
+
case 2:
|
|
553
|
+
_context5.prev = 2;
|
|
554
|
+
if (!(typeof this.orderDataSource.fetchOrdersByIds === 'function')) {
|
|
555
|
+
_context5.next = 8;
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
_context5.next = 6;
|
|
559
|
+
return this.orderDataSource.fetchOrdersByIds(ids);
|
|
560
|
+
case 6:
|
|
561
|
+
_orderList = _context5.sent;
|
|
562
|
+
return _context5.abrupt("return", _orderList || []);
|
|
563
|
+
case 8:
|
|
564
|
+
_context5.next = 10;
|
|
565
|
+
return this.orderDataSource.run({
|
|
566
|
+
http: {
|
|
567
|
+
query: {
|
|
568
|
+
ids: ids
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
case 10:
|
|
573
|
+
orderList = _context5.sent;
|
|
574
|
+
return _context5.abrupt("return", orderList || []);
|
|
575
|
+
case 14:
|
|
576
|
+
_context5.prev = 14;
|
|
577
|
+
_context5.t0 = _context5["catch"](2);
|
|
578
|
+
return _context5.abrupt("return", []);
|
|
579
|
+
case 17:
|
|
580
|
+
case "end":
|
|
581
|
+
return _context5.stop();
|
|
582
|
+
}
|
|
583
|
+
}, _callee5, this, [[2, 14]]);
|
|
584
|
+
}));
|
|
585
|
+
function fetchOrdersByHttp(_x3) {
|
|
586
|
+
return _fetchOrdersByHttp.apply(this, arguments);
|
|
587
|
+
}
|
|
588
|
+
return fetchOrdersByHttp;
|
|
589
|
+
}()
|
|
590
|
+
/**
|
|
591
|
+
* 将增量订单合并到 store
|
|
592
|
+
*/
|
|
593
|
+
)
|
|
594
|
+
}, {
|
|
595
|
+
key: "mergeOrdersToStore",
|
|
596
|
+
value: (function () {
|
|
597
|
+
var _mergeOrdersToStore = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(freshOrders) {
|
|
598
|
+
var _this5 = this;
|
|
599
|
+
var freshMap, _iterator4, _step4, order, id, updatedList, _iterator5, _step5, _order;
|
|
600
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
601
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
602
|
+
case 0:
|
|
603
|
+
freshMap = new Map();
|
|
604
|
+
_iterator4 = _createForOfIteratorHelper(freshOrders);
|
|
605
|
+
_context6.prev = 2;
|
|
606
|
+
_iterator4.s();
|
|
607
|
+
case 4:
|
|
608
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
609
|
+
_context6.next = 12;
|
|
610
|
+
break;
|
|
611
|
+
}
|
|
612
|
+
order = _step4.value;
|
|
613
|
+
id = order === null || order === void 0 ? void 0 : order.order_id;
|
|
614
|
+
if (!(id === undefined || id === null)) {
|
|
615
|
+
_context6.next = 9;
|
|
616
|
+
break;
|
|
617
|
+
}
|
|
618
|
+
return _context6.abrupt("continue", 10);
|
|
619
|
+
case 9:
|
|
620
|
+
freshMap.set(this.getIdKey(id), order);
|
|
621
|
+
case 10:
|
|
622
|
+
_context6.next = 4;
|
|
623
|
+
break;
|
|
624
|
+
case 12:
|
|
625
|
+
_context6.next = 17;
|
|
626
|
+
break;
|
|
627
|
+
case 14:
|
|
628
|
+
_context6.prev = 14;
|
|
629
|
+
_context6.t0 = _context6["catch"](2);
|
|
630
|
+
_iterator4.e(_context6.t0);
|
|
631
|
+
case 17:
|
|
632
|
+
_context6.prev = 17;
|
|
633
|
+
_iterator4.f();
|
|
634
|
+
return _context6.finish(17);
|
|
635
|
+
case 20:
|
|
636
|
+
updatedList = this.store.list.map(function (order) {
|
|
637
|
+
var id = order.order_id;
|
|
638
|
+
if (id === undefined || id === null) return order;
|
|
639
|
+
var key = _this5.getIdKey(id);
|
|
640
|
+
if (!freshMap.has(key)) return order;
|
|
641
|
+
var fresh = freshMap.get(key);
|
|
642
|
+
freshMap.delete(key);
|
|
643
|
+
return fresh;
|
|
644
|
+
});
|
|
645
|
+
_iterator5 = _createForOfIteratorHelper(freshMap.values());
|
|
646
|
+
try {
|
|
647
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
648
|
+
_order = _step5.value;
|
|
649
|
+
updatedList.push(_order);
|
|
650
|
+
}
|
|
651
|
+
} catch (err) {
|
|
652
|
+
_iterator5.e(err);
|
|
653
|
+
} finally {
|
|
654
|
+
_iterator5.f();
|
|
655
|
+
}
|
|
656
|
+
this.store.list = updatedList;
|
|
657
|
+
this.syncOrdersMap();
|
|
658
|
+
_context6.next = 27;
|
|
659
|
+
return this.saveOrdersToSQLite(this.store.list);
|
|
660
|
+
case 27:
|
|
661
|
+
this.core.effects.emit(OrderHooks.onOrdersChanged, this.store.list);
|
|
662
|
+
case 28:
|
|
663
|
+
case "end":
|
|
664
|
+
return _context6.stop();
|
|
665
|
+
}
|
|
666
|
+
}, _callee6, this, [[2, 14, 17, 20]]);
|
|
667
|
+
}));
|
|
668
|
+
function mergeOrdersToStore(_x4) {
|
|
669
|
+
return _mergeOrdersToStore.apply(this, arguments);
|
|
670
|
+
}
|
|
671
|
+
return mergeOrdersToStore;
|
|
672
|
+
}())
|
|
673
|
+
}, {
|
|
674
|
+
key: "normalizeOrderSyncMessage",
|
|
675
|
+
value: function normalizeOrderSyncMessage(res) {
|
|
676
|
+
var data = (res === null || res === void 0 ? void 0 : res.data) || res;
|
|
677
|
+
if (!data) return null;
|
|
678
|
+
var payload = data !== null && data !== void 0 && data.data && _typeof(data.data) === 'object' ? data.data : undefined;
|
|
679
|
+
var normalized = _objectSpread(_objectSpread({}, data), {}, {
|
|
680
|
+
_channelKey: data.module || 'sales_sync'
|
|
681
|
+
});
|
|
682
|
+
if (!normalized.type && typeof data.event === 'string') normalized.type = data.event;
|
|
683
|
+
if (!normalized.id && data.id !== undefined) normalized.id = data.id;
|
|
684
|
+
if (!normalized.id && data.order_id !== undefined) normalized.id = data.order_id;
|
|
685
|
+
if (!normalized.order_id && data.order_id !== undefined) normalized.order_id = data.order_id;
|
|
686
|
+
if (!normalized.order_id && (payload === null || payload === void 0 ? void 0 : payload.order_id) !== undefined) normalized.order_id = payload.order_id;
|
|
687
|
+
if (!normalized.body && (payload === null || payload === void 0 ? void 0 : payload.order_id) !== undefined) normalized.body = payload;
|
|
688
|
+
if (!normalized.data && (payload === null || payload === void 0 ? void 0 : payload.order_id) !== undefined) normalized.data = payload;
|
|
689
|
+
return normalized;
|
|
690
|
+
}
|
|
691
|
+
}, {
|
|
692
|
+
key: "normalizeOrderSyncPayload",
|
|
693
|
+
value: function normalizeOrderSyncPayload(payload) {
|
|
694
|
+
if (!payload) return null;
|
|
695
|
+
var orderId = payload.order_id;
|
|
696
|
+
if (orderId === undefined || orderId === null) return null;
|
|
697
|
+
return _objectSpread(_objectSpread({}, payload), {}, {
|
|
698
|
+
order_id: orderId
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
}, {
|
|
702
|
+
key: "uniqueOrderIds",
|
|
703
|
+
value: function uniqueOrderIds(ids) {
|
|
704
|
+
var idMap = new Map();
|
|
705
|
+
var _iterator6 = _createForOfIteratorHelper(ids),
|
|
706
|
+
_step6;
|
|
707
|
+
try {
|
|
708
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
709
|
+
var id = _step6.value;
|
|
710
|
+
idMap.set(this.getIdKey(id), id);
|
|
711
|
+
}
|
|
712
|
+
} catch (err) {
|
|
713
|
+
_iterator6.e(err);
|
|
714
|
+
} finally {
|
|
715
|
+
_iterator6.f();
|
|
716
|
+
}
|
|
717
|
+
return _toConsumableArray(idMap.values());
|
|
718
|
+
}
|
|
719
|
+
}, {
|
|
720
|
+
key: "getIdKey",
|
|
721
|
+
value: function getIdKey(id) {
|
|
722
|
+
return String(id);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* 当前订单拉取窗口:
|
|
727
|
+
* - 优先使用 createdAtQuery.sales_time_between(已按营业日边界初始化)
|
|
728
|
+
* - 无法解析时退化为自然日窗口
|
|
729
|
+
*/
|
|
730
|
+
}, {
|
|
731
|
+
key: "getCurrentPullWindow",
|
|
732
|
+
value: function getCurrentPullWindow() {
|
|
733
|
+
var _this$store;
|
|
734
|
+
var now = dayjs();
|
|
735
|
+
var range = (_this$store = this.store) === null || _this$store === void 0 || (_this$store = _this$store.createdAtQuery) === null || _this$store === void 0 ? void 0 : _this$store.sales_time_between;
|
|
736
|
+
if (Array.isArray(range) && range.length >= 2) {
|
|
737
|
+
var _startAt = dayjs(range[0]);
|
|
738
|
+
var endExclusiveAt = dayjs(range[1]);
|
|
739
|
+
if (_startAt.isValid() && endExclusiveAt.isValid() && endExclusiveAt.isAfter(_startAt)) {
|
|
740
|
+
return {
|
|
741
|
+
startAt: _startAt,
|
|
742
|
+
endExclusiveAt: endExclusiveAt
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
var startAt = now.startOf('day');
|
|
747
|
+
return {
|
|
748
|
+
startAt: startAt,
|
|
749
|
+
endExclusiveAt: startAt.add(1, 'day')
|
|
750
|
+
};
|
|
751
|
+
}
|
|
752
|
+
}, {
|
|
753
|
+
key: "hasPulledOrdersToday",
|
|
754
|
+
value: function hasPulledOrdersToday() {
|
|
755
|
+
var lastFullFetchAt = this.getStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY);
|
|
756
|
+
if (!lastFullFetchAt) return false;
|
|
757
|
+
var parsed = dayjs(lastFullFetchAt);
|
|
758
|
+
if (!parsed.isValid()) return false;
|
|
759
|
+
|
|
760
|
+
// 按当前拉取窗口判断,而不是自然日判断。
|
|
761
|
+
// 这样在营业日跨日边界(start_time)场景下也能正确判定是否需要重新拉取。
|
|
762
|
+
var _this$getCurrentPullW = this.getCurrentPullWindow(),
|
|
763
|
+
startAt = _this$getCurrentPullW.startAt,
|
|
764
|
+
endExclusiveAt = _this$getCurrentPullW.endExclusiveAt;
|
|
765
|
+
return (parsed.isAfter(startAt) || parsed.isSame(startAt)) && parsed.isBefore(endExclusiveAt);
|
|
766
|
+
}
|
|
767
|
+
}, {
|
|
768
|
+
key: "markOrderPulledAtNow",
|
|
769
|
+
value: function markOrderPulledAtNow() {
|
|
770
|
+
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, dayjs().format('YYYY-MM-DD HH:mm:ss'));
|
|
771
|
+
}
|
|
772
|
+
}, {
|
|
773
|
+
key: "getStorageItem",
|
|
774
|
+
value: function getStorageItem(key) {
|
|
775
|
+
try {
|
|
776
|
+
var _this$storage;
|
|
777
|
+
if ((_this$storage = this.storage) !== null && _this$storage !== void 0 && _this$storage.getStorage) return this.storage.getStorage(key);
|
|
778
|
+
if (typeof globalThis !== 'undefined' && globalThis !== null && globalThis !== void 0 && globalThis.localStorage) {
|
|
779
|
+
return globalThis.localStorage.getItem(key);
|
|
780
|
+
}
|
|
781
|
+
} catch (_unused5) {
|
|
782
|
+
// 忽略存储异常,避免影响主流程
|
|
783
|
+
}
|
|
784
|
+
return null;
|
|
785
|
+
}
|
|
786
|
+
}, {
|
|
787
|
+
key: "setStorageItem",
|
|
788
|
+
value: function setStorageItem(key, value) {
|
|
789
|
+
try {
|
|
790
|
+
var _this$storage2;
|
|
791
|
+
if ((_this$storage2 = this.storage) !== null && _this$storage2 !== void 0 && _this$storage2.setStorage) {
|
|
792
|
+
this.storage.setStorage(key, value);
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
if (typeof globalThis !== 'undefined' && globalThis !== null && globalThis !== void 0 && globalThis.localStorage) {
|
|
796
|
+
globalThis.localStorage.setItem(key, value);
|
|
797
|
+
}
|
|
798
|
+
} catch (_unused6) {
|
|
799
|
+
// 忽略存储异常,避免影响主流程
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
}, {
|
|
803
|
+
key: "loadOrdersFromSQLite",
|
|
804
|
+
value: function () {
|
|
805
|
+
var _loadOrdersFromSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
806
|
+
var orders;
|
|
807
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
808
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
809
|
+
case 0:
|
|
810
|
+
if (this.dbManager) {
|
|
811
|
+
_context7.next = 2;
|
|
812
|
+
break;
|
|
813
|
+
}
|
|
814
|
+
return _context7.abrupt("return", []);
|
|
815
|
+
case 2:
|
|
816
|
+
_context7.prev = 2;
|
|
817
|
+
_context7.next = 5;
|
|
818
|
+
return this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
819
|
+
case 5:
|
|
820
|
+
orders = _context7.sent;
|
|
821
|
+
return _context7.abrupt("return", orders || []);
|
|
822
|
+
case 9:
|
|
823
|
+
_context7.prev = 9;
|
|
824
|
+
_context7.t0 = _context7["catch"](2);
|
|
825
|
+
return _context7.abrupt("return", []);
|
|
826
|
+
case 12:
|
|
827
|
+
case "end":
|
|
828
|
+
return _context7.stop();
|
|
829
|
+
}
|
|
830
|
+
}, _callee7, this, [[2, 9]]);
|
|
831
|
+
}));
|
|
832
|
+
function loadOrdersFromSQLite() {
|
|
833
|
+
return _loadOrdersFromSQLite.apply(this, arguments);
|
|
834
|
+
}
|
|
835
|
+
return loadOrdersFromSQLite;
|
|
836
|
+
}()
|
|
837
|
+
}, {
|
|
838
|
+
key: "saveOrdersToSQLite",
|
|
839
|
+
value: function () {
|
|
840
|
+
var _saveOrdersToSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(orderList) {
|
|
841
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
842
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
843
|
+
case 0:
|
|
844
|
+
if (this.dbManager) {
|
|
845
|
+
_context8.next = 2;
|
|
846
|
+
break;
|
|
847
|
+
}
|
|
848
|
+
return _context8.abrupt("return");
|
|
849
|
+
case 2:
|
|
850
|
+
_context8.prev = 2;
|
|
851
|
+
_context8.next = 5;
|
|
852
|
+
return this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
853
|
+
case 5:
|
|
854
|
+
if (!(orderList.length === 0)) {
|
|
855
|
+
_context8.next = 7;
|
|
856
|
+
break;
|
|
857
|
+
}
|
|
858
|
+
return _context8.abrupt("return");
|
|
859
|
+
case 7:
|
|
860
|
+
_context8.next = 9;
|
|
861
|
+
return this.dbManager.bulkAdd(INDEXDB_STORE_NAME, orderList);
|
|
862
|
+
case 9:
|
|
863
|
+
_context8.next = 14;
|
|
864
|
+
break;
|
|
865
|
+
case 11:
|
|
866
|
+
_context8.prev = 11;
|
|
867
|
+
_context8.t0 = _context8["catch"](2);
|
|
868
|
+
// SQLite 异常,避免影响主流程
|
|
869
|
+
this.logError('保存订单到 SQLite 失败', {
|
|
870
|
+
error: _context8.t0 instanceof Error ? _context8.t0.message : String(_context8.t0),
|
|
871
|
+
orderList: orderList.length
|
|
872
|
+
});
|
|
873
|
+
case 14:
|
|
874
|
+
case "end":
|
|
875
|
+
return _context8.stop();
|
|
876
|
+
}
|
|
877
|
+
}, _callee8, this, [[2, 11]]);
|
|
878
|
+
}));
|
|
879
|
+
function saveOrdersToSQLite(_x5) {
|
|
880
|
+
return _saveOrdersToSQLite.apply(this, arguments);
|
|
881
|
+
}
|
|
882
|
+
return saveOrdersToSQLite;
|
|
883
|
+
}()
|
|
884
|
+
}, {
|
|
885
|
+
key: "clear",
|
|
886
|
+
value: function () {
|
|
887
|
+
var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
888
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
889
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
890
|
+
case 0:
|
|
891
|
+
this.store.list = [];
|
|
892
|
+
this.store.map = new Map();
|
|
893
|
+
this.resourceIdIndex.clear();
|
|
894
|
+
if (!this.dbManager) {
|
|
895
|
+
_context9.next = 6;
|
|
896
|
+
break;
|
|
897
|
+
}
|
|
898
|
+
_context9.next = 6;
|
|
899
|
+
return this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
900
|
+
case 6:
|
|
901
|
+
this.setStorageItem(ORDER_LAST_FULL_FETCH_AT_STORAGE_KEY, '');
|
|
902
|
+
this.core.effects.emit(OrderHooks.onOrdersChanged, this.store.list);
|
|
903
|
+
case 8:
|
|
904
|
+
case "end":
|
|
905
|
+
return _context9.stop();
|
|
906
|
+
}
|
|
907
|
+
}, _callee9, this);
|
|
908
|
+
}));
|
|
909
|
+
function clear() {
|
|
910
|
+
return _clear.apply(this, arguments);
|
|
911
|
+
}
|
|
912
|
+
return clear;
|
|
913
|
+
}()
|
|
914
|
+
}]);
|
|
915
|
+
return OrderModule;
|
|
916
|
+
}(BaseModule);
|