@pisell/pisellos 0.0.567 → 0.0.568
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/core/index.js +6 -9
- package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/adapter/walletPass/utils.js +0 -3
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +1 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +14 -41
- package/dist/modules/Payment/index.js +142 -270
- package/dist/modules/Payment/walletpass.js +4 -5
- package/dist/modules/Rules/index.js +0 -7
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +88 -121
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/products/index.js +29 -49
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +32 -40
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +5 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -246
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.d.ts +5 -0
- package/dist/solution/VenueBooking/index.js +364 -327
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +130 -131
- package/lib/effects/index.js +46 -57
- package/lib/index.js +92 -53
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
- package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
- package/lib/model/strategy/adapter/promotion/examples.js +139 -159
- package/lib/model/strategy/adapter/promotion/index.js +1 -49
- package/lib/model/strategy/adapter/promotion/type.js +199 -35
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +22 -45
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +306 -241
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +72 -78
- package/lib/modules/Cart/utils/changePrice.js +26 -62
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +216 -153
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +117 -113
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +63 -74
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +332 -320
- package/lib/modules/Order/types.js +24 -33
- package/lib/modules/Order/utils.js +350 -284
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +566 -432
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +216 -107
- package/lib/modules/Payment/utils.js +50 -47
- package/lib/modules/Payment/walletpass.js +221 -203
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +111 -110
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +60 -82
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/Rules/index.js +1172 -872
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +59 -68
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +176 -193
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
- package/lib/modules/Schedule/index.js +97 -107
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -70
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +782 -429
- package/lib/modules/index.js +212 -57
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +882 -623
- package/lib/server/modules/index.js +85 -59
- package/lib/server/modules/menu/index.js +146 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +195 -231
- package/lib/server/modules/order/types.js +107 -32
- package/lib/server/modules/order/utils/filterBookings.js +174 -140
- package/lib/server/modules/order/utils/filterOrders.js +89 -60
- package/lib/server/modules/products/index.js +430 -335
- package/lib/server/modules/products/types.js +41 -34
- package/lib/server/modules/quotation/index.js +76 -77
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +216 -187
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +134 -119
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1530 -1343
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +147 -122
- package/lib/solution/BookingTicket/types.js +38 -64
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
- package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +227 -158
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +218 -200
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +803 -840
- package/lib/solution/ScanOrder/types.js +34 -34
- package/lib/solution/ScanOrder/utils.js +372 -331
- package/lib/solution/ShopDiscount/index.js +230 -236
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +309 -172
- package/lib/solution/VenueBooking/index.d.ts +5 -0
- package/lib/solution/VenueBooking/index.js +886 -929
- package/lib/solution/VenueBooking/types.js +20 -40
- package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
- package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
- package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +102 -37
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,35 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(types_exports, {
|
|
22
|
-
ResourceHooks: () => ResourceHooks
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(types_exports);
|
|
25
|
-
var ResourceHooks = /* @__PURE__ */ ((ResourceHooks2) => {
|
|
26
|
-
ResourceHooks2["onResourcesLoaded"] = "resource:onResourcesLoaded";
|
|
27
|
-
ResourceHooks2["onResourcesChanged"] = "resource:onResourcesChanged";
|
|
28
|
-
ResourceHooks2["onResourcesSyncCompleted"] = "resource:onResourcesSyncCompleted";
|
|
29
|
-
ResourceHooks2["onBookingsChanged"] = "resource:onBookingsChanged";
|
|
30
|
-
return ResourceHooks2;
|
|
31
|
-
})(ResourceHooks || {});
|
|
32
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
-
0 && (module.exports = {
|
|
34
|
-
ResourceHooks
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
35
5
|
});
|
|
6
|
+
exports.ResourceHooks = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Resource 模块主键类型
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Sales / ScheduleEventResource:预约条目内关联资源(仅 ID 与占用,详情由设备端基准数据解析)
|
|
12
|
+
* @see 统一 Sales 数据协议 3.4.1 resources
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* 资源预订数据结构
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* 资源数据结构(兼容历史数据)
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* 查询选项
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Resource 模块状态
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* 与 ResourceDataSource 对齐的分页查询参数
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* 与 ResourceDataSource 对齐的分页返回结构
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* ResourceSyncMessage - pubsub 同步消息结构
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Resource 模块钩子
|
|
37
|
+
*/
|
|
38
|
+
let ResourceHooks = exports.ResourceHooks = /*#__PURE__*/function (ResourceHooks) {
|
|
39
|
+
ResourceHooks["onResourcesLoaded"] = "resource:onResourcesLoaded";
|
|
40
|
+
ResourceHooks["onResourcesChanged"] = "resource:onResourcesChanged";
|
|
41
|
+
ResourceHooks["onResourcesSyncCompleted"] = "resource:onResourcesSyncCompleted";
|
|
42
|
+
ResourceHooks["onBookingsChanged"] = "resource:onBookingsChanged";
|
|
43
|
+
return ResourceHooks;
|
|
44
|
+
}({});
|
|
@@ -1,54 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
28
2
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
__export(schedule_exports, {
|
|
32
|
-
ScheduleModuleEx: () => ScheduleModuleEx
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
33
5
|
});
|
|
34
|
-
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
6
|
+
exports.ScheduleModuleEx = void 0;
|
|
7
|
+
var _lodashEs = require("lodash-es");
|
|
8
|
+
var _BaseModule = require("../../../modules/BaseModule");
|
|
9
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
10
|
+
var _isSameOrBefore = _interopRequireDefault(require("dayjs/plugin/isSameOrBefore"));
|
|
11
|
+
var _isSameOrAfter = _interopRequireDefault(require("dayjs/plugin/isSameOrAfter"));
|
|
12
|
+
var _utils = require("../../../solution/ShopDiscount/utils");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
_dayjs.default.extend(_isSameOrBefore.default);
|
|
15
|
+
_dayjs.default.extend(_isSameOrAfter.default);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* IndexDB 存储名称
|
|
19
|
+
*/
|
|
20
|
+
const INDEXDB_STORE_NAME = 'schedule';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Schedule 模块(扩展版本)
|
|
24
|
+
* 在原有基础上添加了 getAvailableScheduleIds 方法
|
|
25
|
+
*/
|
|
26
|
+
class ScheduleModuleEx extends _BaseModule.BaseModule {
|
|
27
|
+
defaultName = 'schedule';
|
|
28
|
+
defaultVersion = '1.1.0';
|
|
29
|
+
request;
|
|
30
|
+
store = {};
|
|
31
|
+
dbManager; // IndexDBManager 实例
|
|
32
|
+
logger; // LoggerManager 实例
|
|
33
|
+
|
|
46
34
|
constructor(name, version) {
|
|
47
35
|
super(name, version);
|
|
48
|
-
this.defaultName = "schedule";
|
|
49
|
-
this.defaultVersion = "1.1.0";
|
|
50
|
-
this.store = {};
|
|
51
36
|
}
|
|
37
|
+
|
|
52
38
|
/**
|
|
53
39
|
* 记录信息日志
|
|
54
40
|
* @param title 日志标题
|
|
@@ -58,14 +44,16 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
58
44
|
try {
|
|
59
45
|
if (this.logger) {
|
|
60
46
|
this.logger.addLog({
|
|
61
|
-
type:
|
|
47
|
+
type: 'info',
|
|
62
48
|
title: `[ScheduleModule] ${title}`,
|
|
63
49
|
metadata: metadata || {}
|
|
64
50
|
});
|
|
65
51
|
}
|
|
66
52
|
} catch {
|
|
53
|
+
// 日志记录失败不影响主流程
|
|
67
54
|
}
|
|
68
55
|
}
|
|
56
|
+
|
|
69
57
|
/**
|
|
70
58
|
* 记录警告日志
|
|
71
59
|
* @param title 日志标题
|
|
@@ -75,14 +63,16 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
75
63
|
try {
|
|
76
64
|
if (this.logger) {
|
|
77
65
|
this.logger.addLog({
|
|
78
|
-
type:
|
|
66
|
+
type: 'warning',
|
|
79
67
|
title: `[ScheduleModule] ${title}`,
|
|
80
68
|
metadata: metadata || {}
|
|
81
69
|
});
|
|
82
70
|
}
|
|
83
71
|
} catch {
|
|
72
|
+
// 日志记录失败不影响主流程
|
|
84
73
|
}
|
|
85
74
|
}
|
|
75
|
+
|
|
86
76
|
/**
|
|
87
77
|
* 记录错误日志
|
|
88
78
|
* @param title 日志标题
|
|
@@ -92,71 +82,77 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
92
82
|
try {
|
|
93
83
|
if (this.logger) {
|
|
94
84
|
this.logger.addLog({
|
|
95
|
-
type:
|
|
85
|
+
type: 'error',
|
|
96
86
|
title: `[ScheduleModule] ${title}`,
|
|
97
87
|
metadata: metadata || {}
|
|
98
88
|
});
|
|
99
89
|
}
|
|
100
90
|
} catch {
|
|
91
|
+
// 日志记录失败不影响主流程
|
|
101
92
|
}
|
|
102
93
|
}
|
|
103
94
|
async initialize(core, options) {
|
|
104
95
|
this.core = core;
|
|
105
|
-
|
|
96
|
+
|
|
97
|
+
// 获取依赖的插件
|
|
98
|
+
this.request = core.getPlugin('request');
|
|
106
99
|
if (!this.request) {
|
|
107
|
-
throw new Error(
|
|
100
|
+
throw new Error('ScheduleModule 需要 request 插件支持');
|
|
108
101
|
}
|
|
109
|
-
this.store = options
|
|
102
|
+
this.store = options?.store;
|
|
110
103
|
if (options.initialState) {
|
|
111
104
|
this.store.scheduleList = options.initialState.scheduleList;
|
|
105
|
+
// 同步更新 Map 缓存
|
|
112
106
|
this.syncScheduleMap();
|
|
113
107
|
} else {
|
|
114
108
|
this.store.scheduleList = [];
|
|
115
|
-
this.store.map =
|
|
109
|
+
this.store.map = new Map();
|
|
116
110
|
}
|
|
117
|
-
|
|
111
|
+
|
|
112
|
+
// 获取并存储 dbManager 和 logger
|
|
113
|
+
const appPlugin = core.getPlugin('app');
|
|
118
114
|
if (appPlugin) {
|
|
119
115
|
const app = appPlugin.getApp();
|
|
120
116
|
this.dbManager = app.dbManager;
|
|
121
117
|
this.logger = app.logger;
|
|
122
|
-
if (this.dbManager) {
|
|
123
|
-
console.
|
|
124
|
-
} else {
|
|
125
|
-
console.warn("[Schedule] IndexDB Manager 未找到");
|
|
118
|
+
if (this.dbManager) {} else {
|
|
119
|
+
console.warn('[Schedule] IndexDB Manager 未找到');
|
|
126
120
|
}
|
|
127
121
|
}
|
|
128
|
-
this.logInfo(
|
|
122
|
+
this.logInfo('模块初始化完成', {
|
|
129
123
|
hasDbManager: !!this.dbManager,
|
|
130
124
|
hasLogger: !!this.logger,
|
|
131
125
|
initialScheduleCount: this.store.scheduleList.length
|
|
132
126
|
});
|
|
133
127
|
}
|
|
128
|
+
|
|
134
129
|
/**
|
|
135
130
|
* 加载当前店铺下所有 schedule(从服务器)
|
|
136
131
|
*/
|
|
137
132
|
async loadAllSchedule() {
|
|
138
|
-
|
|
139
|
-
this.logInfo("开始从服务器加载日程列表");
|
|
133
|
+
this.logInfo('开始从服务器加载日程列表');
|
|
140
134
|
const startTime = Date.now();
|
|
141
135
|
try {
|
|
142
|
-
const scheduleList = await this.request.get(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
);
|
|
147
|
-
const list =
|
|
136
|
+
const scheduleList = await this.request.get(`/schedule`, {
|
|
137
|
+
num: 999
|
|
138
|
+
}, {
|
|
139
|
+
cache: undefined
|
|
140
|
+
});
|
|
141
|
+
const list = scheduleList.data?.list || [];
|
|
148
142
|
const duration = Date.now() - startTime;
|
|
149
|
-
this.logInfo(
|
|
143
|
+
this.logInfo('从服务器加载日程列表成功', {
|
|
150
144
|
scheduleCount: list.length,
|
|
151
145
|
duration: `${duration}ms`
|
|
152
146
|
});
|
|
147
|
+
|
|
148
|
+
// 保存到 IndexDB
|
|
153
149
|
await this.saveScheduleToIndexDB(list);
|
|
154
150
|
this.setScheduleList(list);
|
|
155
151
|
return list;
|
|
156
152
|
} catch (error) {
|
|
157
153
|
const duration = Date.now() - startTime;
|
|
158
154
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
159
|
-
this.logError(
|
|
155
|
+
this.logError('从服务器加载日程列表失败', {
|
|
160
156
|
duration: `${duration}ms`,
|
|
161
157
|
error: errorMessage
|
|
162
158
|
});
|
|
@@ -165,21 +161,26 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
165
161
|
}
|
|
166
162
|
setScheduleList(list) {
|
|
167
163
|
this.store.scheduleList = list;
|
|
164
|
+
// 同步更新 Map 缓存
|
|
168
165
|
this.syncScheduleMap();
|
|
169
166
|
}
|
|
167
|
+
|
|
170
168
|
/**
|
|
171
169
|
* 获取所有日程列表
|
|
172
170
|
*/
|
|
173
171
|
getScheduleList() {
|
|
174
172
|
return this.store.scheduleList;
|
|
175
173
|
}
|
|
174
|
+
|
|
176
175
|
/**
|
|
177
176
|
* 根据 schedule IDs 获取日程数据
|
|
178
177
|
* 使用 Map 快速查询,时间复杂度 O(m),m 为 ids 数量
|
|
179
178
|
*/
|
|
180
179
|
getScheduleByIds(ids) {
|
|
181
180
|
if (!ids || ids.length === 0) {
|
|
182
|
-
this.logInfo(
|
|
181
|
+
this.logInfo('getScheduleByIds: 未提供有效的 ids', {
|
|
182
|
+
idsCount: 0
|
|
183
|
+
});
|
|
183
184
|
return [];
|
|
184
185
|
}
|
|
185
186
|
const result = [];
|
|
@@ -189,13 +190,14 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
189
190
|
result.push(schedule);
|
|
190
191
|
}
|
|
191
192
|
}
|
|
192
|
-
this.logInfo(
|
|
193
|
+
this.logInfo('getScheduleByIds: 查询完成', {
|
|
193
194
|
requestedCount: ids.length,
|
|
194
195
|
foundCount: result.length,
|
|
195
196
|
notFoundCount: ids.length - result.length
|
|
196
197
|
});
|
|
197
198
|
return result;
|
|
198
199
|
}
|
|
200
|
+
|
|
199
201
|
/**
|
|
200
202
|
* 同步更新日程 Map 缓存
|
|
201
203
|
* 将 scheduleList 中的日程同步到 map,以 id 为 key
|
|
@@ -206,30 +208,33 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
206
208
|
for (const schedule of this.store.scheduleList) {
|
|
207
209
|
this.store.map.set(schedule.id, schedule);
|
|
208
210
|
}
|
|
209
|
-
console.log(`[Schedule] Map 缓存已同步,共 ${this.store.map.size} 个日程`);
|
|
210
211
|
}
|
|
212
|
+
|
|
211
213
|
/**
|
|
212
214
|
* 清除缓存
|
|
213
215
|
*/
|
|
214
216
|
async clear() {
|
|
215
|
-
this.logInfo(
|
|
217
|
+
this.logInfo('开始清空缓存', {
|
|
216
218
|
currentScheduleCount: this.store.scheduleList.length
|
|
217
219
|
});
|
|
218
220
|
this.store.scheduleList = [];
|
|
219
221
|
this.store.map.clear();
|
|
222
|
+
// 同时清空 IndexDB 中的数据
|
|
220
223
|
if (this.dbManager) {
|
|
221
224
|
try {
|
|
222
225
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
223
|
-
|
|
224
|
-
this.logInfo("IndexDB 缓存已清空");
|
|
226
|
+
this.logInfo('IndexDB 缓存已清空');
|
|
225
227
|
} catch (error) {
|
|
226
228
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
227
|
-
console.error(
|
|
228
|
-
this.logError(
|
|
229
|
+
console.error('[Schedule] 清空 IndexDB 缓存失败:', error);
|
|
230
|
+
this.logError('清空 IndexDB 缓存失败', {
|
|
231
|
+
error: errorMessage
|
|
232
|
+
});
|
|
229
233
|
}
|
|
230
234
|
}
|
|
231
|
-
this.logInfo(
|
|
235
|
+
this.logInfo('缓存清空完成');
|
|
232
236
|
}
|
|
237
|
+
|
|
233
238
|
/**
|
|
234
239
|
* 判断日期是否在日程范围内
|
|
235
240
|
* @param date 日期
|
|
@@ -238,123 +243,133 @@ var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
|
|
|
238
243
|
*/
|
|
239
244
|
getDateIsInSchedule(date, scheduleList) {
|
|
240
245
|
const scheduleListData = [];
|
|
241
|
-
scheduleList.forEach(
|
|
242
|
-
if (typeof item ===
|
|
246
|
+
scheduleList.forEach(item => {
|
|
247
|
+
if (typeof item === 'number') {
|
|
243
248
|
scheduleListData.push(...this.getScheduleByIds([item]));
|
|
244
249
|
} else {
|
|
245
250
|
scheduleListData.push(item);
|
|
246
251
|
}
|
|
247
252
|
});
|
|
248
|
-
const result = (0,
|
|
249
|
-
this.logInfo(
|
|
253
|
+
const result = (0, _utils.getDateIsInSchedule)(date, scheduleListData);
|
|
254
|
+
this.logInfo('getDateIsInSchedule: 判断日期是否在日程范围内', {
|
|
250
255
|
date,
|
|
251
256
|
scheduleCount: scheduleListData.length,
|
|
252
257
|
isInSchedule: result
|
|
253
258
|
});
|
|
254
259
|
return result;
|
|
255
260
|
}
|
|
261
|
+
|
|
256
262
|
/**
|
|
257
263
|
* 从 IndexDB 加载日程数据
|
|
258
264
|
* @private
|
|
259
265
|
*/
|
|
260
266
|
async loadScheduleFromIndexDB() {
|
|
261
267
|
if (!this.dbManager) {
|
|
262
|
-
this.logWarning(
|
|
268
|
+
this.logWarning('loadScheduleFromIndexDB: dbManager 不可用');
|
|
263
269
|
return [];
|
|
264
270
|
}
|
|
265
271
|
try {
|
|
272
|
+
// 直接获取所有日程记录
|
|
266
273
|
const scheduleList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
267
|
-
this.logInfo(
|
|
268
|
-
scheduleCount:
|
|
274
|
+
this.logInfo('从 IndexDB 加载日程数据', {
|
|
275
|
+
scheduleCount: scheduleList?.length ?? 0
|
|
269
276
|
});
|
|
270
277
|
return scheduleList || [];
|
|
271
278
|
} catch (error) {
|
|
272
279
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
273
|
-
console.error(
|
|
274
|
-
this.logError(
|
|
280
|
+
console.error('[Schedule] 从 IndexDB 读取数据失败:', error);
|
|
281
|
+
this.logError('从 IndexDB 读取数据失败', {
|
|
282
|
+
error: errorMessage
|
|
283
|
+
});
|
|
275
284
|
return [];
|
|
276
285
|
}
|
|
277
286
|
}
|
|
287
|
+
|
|
278
288
|
/**
|
|
279
289
|
* 保存日程数据到 IndexDB
|
|
280
290
|
* @private
|
|
281
291
|
*/
|
|
282
292
|
async saveScheduleToIndexDB(scheduleList) {
|
|
283
293
|
if (!this.dbManager) {
|
|
284
|
-
this.logWarning(
|
|
294
|
+
this.logWarning('saveScheduleToIndexDB: dbManager 不可用');
|
|
285
295
|
return;
|
|
286
296
|
}
|
|
287
|
-
this.logInfo(
|
|
297
|
+
this.logInfo('开始保存日程数据到 IndexDB', {
|
|
298
|
+
scheduleCount: scheduleList.length
|
|
299
|
+
});
|
|
288
300
|
try {
|
|
301
|
+
// 先清空现有的日程数据
|
|
289
302
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
);
|
|
303
|
+
|
|
304
|
+
// 逐个保存日程(每个日程是独立的记录)
|
|
305
|
+
const savePromises = scheduleList.map(schedule => this.dbManager.add(INDEXDB_STORE_NAME, schedule));
|
|
293
306
|
await Promise.all(savePromises);
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
);
|
|
297
|
-
this.logInfo("日程数据已保存到 IndexDB", { scheduleCount: scheduleList.length });
|
|
307
|
+
this.logInfo('日程数据已保存到 IndexDB', {
|
|
308
|
+
scheduleCount: scheduleList.length
|
|
309
|
+
});
|
|
298
310
|
} catch (error) {
|
|
299
311
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
300
|
-
console.error(
|
|
301
|
-
this.logError(
|
|
312
|
+
console.error('[Schedule] 保存数据到 IndexDB 失败:', error);
|
|
313
|
+
this.logError('保存数据到 IndexDB 失败', {
|
|
302
314
|
scheduleCount: scheduleList.length,
|
|
303
315
|
error: errorMessage
|
|
304
316
|
});
|
|
305
317
|
}
|
|
306
318
|
}
|
|
319
|
+
|
|
307
320
|
/**
|
|
308
321
|
* 预加载模块数据(统一接口)
|
|
309
322
|
* 在模块注册后自动调用
|
|
310
323
|
*/
|
|
311
324
|
async preload() {
|
|
312
|
-
console.log("[Schedule] 开始预加载数据...");
|
|
313
325
|
const startTime = Date.now();
|
|
314
|
-
this.logInfo(
|
|
326
|
+
this.logInfo('开始预加载数据');
|
|
315
327
|
try {
|
|
328
|
+
// 1. 尝试从 IndexDB 加载数据
|
|
316
329
|
const cachedData = await this.loadScheduleFromIndexDB();
|
|
317
330
|
if (cachedData && cachedData.length > 0) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
this.store.scheduleList = (0, import_lodash_es.cloneDeep)(cachedData);
|
|
331
|
+
// 将缓存数据放入 store
|
|
332
|
+
this.store.scheduleList = (0, _lodashEs.cloneDeep)(cachedData);
|
|
333
|
+
// 同步更新 Map 缓存
|
|
322
334
|
this.syncScheduleMap();
|
|
323
335
|
const duration = Date.now() - startTime;
|
|
324
|
-
this.logInfo(
|
|
336
|
+
this.logInfo('预加载完成(从 IndexDB)', {
|
|
325
337
|
scheduleCount: cachedData.length,
|
|
326
338
|
duration: `${duration}ms`,
|
|
327
|
-
source:
|
|
339
|
+
source: 'IndexDB'
|
|
328
340
|
});
|
|
329
341
|
return;
|
|
330
342
|
}
|
|
331
|
-
|
|
332
|
-
this.logInfo("IndexDB 中没有缓存数据,准备从服务器加载");
|
|
343
|
+
this.logInfo('IndexDB 中没有缓存数据,准备从服务器加载');
|
|
333
344
|
} catch (error) {
|
|
334
345
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
335
|
-
console.warn(
|
|
336
|
-
this.logWarning(
|
|
346
|
+
console.warn('[Schedule] 从 IndexDB 加载数据失败:', error);
|
|
347
|
+
this.logWarning('从 IndexDB 加载数据失败,准备从服务器加载', {
|
|
348
|
+
error: errorMessage
|
|
349
|
+
});
|
|
337
350
|
}
|
|
351
|
+
|
|
352
|
+
// 2. 如果 IndexDB 中没有数据,从服务器加载
|
|
338
353
|
const scheduleList = await this.loadAllSchedule();
|
|
354
|
+
|
|
355
|
+
// 3. 将服务器数据保存到 IndexDB 和 store
|
|
339
356
|
if (scheduleList && scheduleList.length > 0) {
|
|
340
357
|
await this.saveScheduleToIndexDB(scheduleList);
|
|
341
|
-
this.store.scheduleList = (0,
|
|
358
|
+
this.store.scheduleList = (0, _lodashEs.cloneDeep)(scheduleList);
|
|
359
|
+
// 同步更新 Map 缓存
|
|
342
360
|
this.syncScheduleMap();
|
|
343
361
|
const duration = Date.now() - startTime;
|
|
344
|
-
this.logInfo(
|
|
362
|
+
this.logInfo('预加载完成(从服务器)', {
|
|
345
363
|
scheduleCount: scheduleList.length,
|
|
346
364
|
duration: `${duration}ms`,
|
|
347
|
-
source:
|
|
365
|
+
source: 'Server'
|
|
348
366
|
});
|
|
349
367
|
} else {
|
|
350
368
|
const duration = Date.now() - startTime;
|
|
351
|
-
this.logWarning(
|
|
369
|
+
this.logWarning('预加载完成但未获取到数据', {
|
|
352
370
|
duration: `${duration}ms`
|
|
353
371
|
});
|
|
354
372
|
}
|
|
355
373
|
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
0 && (module.exports = {
|
|
359
|
-
ScheduleModuleEx
|
|
360
|
-
});
|
|
374
|
+
}
|
|
375
|
+
exports.ScheduleModuleEx = ScheduleModuleEx;
|
|
@@ -1,23 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
15
2
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
module.exports = __toCommonJS(types_exports);
|
|
19
|
-
__reExport(types_exports, require("../../../modules/Schedule/types"), module.exports);
|
|
20
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
21
|
-
0 && (module.exports = {
|
|
22
|
-
...require("../../../modules/Schedule/types")
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
6
|
+
var _types = require("../../../modules/Schedule/types");
|
|
7
|
+
Object.keys(_types).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _types[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|