@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.
Files changed (228) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/adapter/walletPass/utils.js +0 -3
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +1 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +14 -41
  13. package/dist/modules/Payment/index.js +142 -270
  14. package/dist/modules/Payment/walletpass.js +4 -5
  15. package/dist/modules/Rules/index.js +0 -7
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/plugins/request.js +1 -4
  19. package/dist/plugins/window.js +2 -6
  20. package/dist/server/index.js +88 -121
  21. package/dist/server/modules/menu/index.js +32 -41
  22. package/dist/server/modules/products/index.js +29 -49
  23. package/dist/server/modules/quotation/index.js +29 -38
  24. package/dist/server/modules/resource/index.js +3 -4
  25. package/dist/server/modules/schedule/index.js +32 -40
  26. package/dist/server/utils/product.js +0 -1
  27. package/dist/solution/BookingByStep/index.d.ts +1 -1
  28. package/dist/solution/BookingByStep/index.js +7 -59
  29. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  30. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  31. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  32. package/dist/solution/BookingTicket/index.d.ts +1 -1
  33. package/dist/solution/BookingTicket/index.js +5 -7
  34. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  35. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  36. package/dist/solution/BuyTickets/index.js +9 -12
  37. package/dist/solution/Checkout/index.js +177 -246
  38. package/dist/solution/Checkout/utils/index.js +4 -16
  39. package/dist/solution/RegisterAndLogin/index.js +30 -76
  40. package/dist/solution/ScanOrder/index.js +50 -60
  41. package/dist/solution/ShopDiscount/index.js +2 -7
  42. package/dist/solution/VenueBooking/index.d.ts +5 -0
  43. package/dist/solution/VenueBooking/index.js +364 -327
  44. package/dist/utils/task.js +15 -18
  45. package/dist/utils/watch.js +0 -1
  46. package/lib/apis/picoding.js +2 -0
  47. package/lib/core/index.js +130 -131
  48. package/lib/effects/index.js +46 -57
  49. package/lib/index.js +92 -53
  50. package/lib/model/index.js +14 -21
  51. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  52. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  53. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  54. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  55. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  56. package/lib/model/strategy/adapter/index.js +100 -64
  57. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  58. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  59. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  60. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  61. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  62. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  63. package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
  64. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  65. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  66. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  67. package/lib/model/strategy/adapter/type.js +4 -16
  68. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  69. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  70. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  71. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  72. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  73. package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
  74. package/lib/model/strategy/engine.js +270 -168
  75. package/lib/model/strategy/index.js +49 -34
  76. package/lib/model/strategy/strategy-example.js +243 -239
  77. package/lib/model/strategy/type.js +100 -40
  78. package/lib/modules/Account/index.js +39 -53
  79. package/lib/modules/Account/types.js +20 -33
  80. package/lib/modules/AccountList/index.js +116 -154
  81. package/lib/modules/AccountList/types.js +30 -31
  82. package/lib/modules/AccountList/utils.js +18 -30
  83. package/lib/modules/BaseModule.js +22 -45
  84. package/lib/modules/Cart/index.js +170 -124
  85. package/lib/modules/Cart/types.js +46 -51
  86. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  87. package/lib/modules/Cart/utils/cartDate.js +56 -61
  88. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  89. package/lib/modules/Cart/utils/cartNote.js +27 -32
  90. package/lib/modules/Cart/utils/cartProduct.js +306 -241
  91. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  92. package/lib/modules/Cart/utils/cartResource.js +72 -78
  93. package/lib/modules/Cart/utils/changePrice.js +26 -62
  94. package/lib/modules/Cart/utils/index.js +106 -48
  95. package/lib/modules/Customer/constants.js +13 -34
  96. package/lib/modules/Customer/index.js +216 -153
  97. package/lib/modules/Customer/types.js +38 -35
  98. package/lib/modules/Date/index.js +116 -115
  99. package/lib/modules/Date/types.js +16 -28
  100. package/lib/modules/Date/utils.js +174 -123
  101. package/lib/modules/Discount/index.js +117 -113
  102. package/lib/modules/Discount/types.js +9 -31
  103. package/lib/modules/Guests/index.js +30 -56
  104. package/lib/modules/Guests/types.js +23 -33
  105. package/lib/modules/Holder/index.js +209 -189
  106. package/lib/modules/Holder/types.js +4 -16
  107. package/lib/modules/Holder/utils.js +20 -49
  108. package/lib/modules/OpenData/index.js +63 -74
  109. package/lib/modules/OpenData/types.js +4 -16
  110. package/lib/modules/OpenData/utils.js +44 -78
  111. package/lib/modules/Order/index.d.ts +1 -1
  112. package/lib/modules/Order/index.js +332 -320
  113. package/lib/modules/Order/types.js +24 -33
  114. package/lib/modules/Order/utils.js +350 -284
  115. package/lib/modules/Payment/cash.js +20 -33
  116. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  117. package/lib/modules/Payment/eftpos.js +16 -30
  118. package/lib/modules/Payment/index.js +566 -432
  119. package/lib/modules/Payment/mx51.js +1 -0
  120. package/lib/modules/Payment/types.js +216 -107
  121. package/lib/modules/Payment/utils.js +50 -47
  122. package/lib/modules/Payment/walletpass.js +221 -203
  123. package/lib/modules/Product/index.js +51 -46
  124. package/lib/modules/Product/types.js +4 -16
  125. package/lib/modules/Product/utils.js +32 -33
  126. package/lib/modules/ProductList/index.js +111 -110
  127. package/lib/modules/ProductList/types.js +9 -31
  128. package/lib/modules/Quotation/index.js +60 -82
  129. package/lib/modules/Quotation/types.js +4 -16
  130. package/lib/modules/Resource/index.js +27 -59
  131. package/lib/modules/Resource/types.js +22 -32
  132. package/lib/modules/Resource/utils.js +30 -38
  133. package/lib/modules/Rules/index.js +1172 -872
  134. package/lib/modules/Rules/types.js +17 -40
  135. package/lib/modules/SalesSummary/index.js +59 -68
  136. package/lib/modules/SalesSummary/types.js +4 -16
  137. package/lib/modules/SalesSummary/utils.js +176 -193
  138. package/lib/modules/ScanOrderLogger/index.js +59 -79
  139. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  140. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  141. package/lib/modules/ScanOrderLogger/types.js +4 -16
  142. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
  143. package/lib/modules/Schedule/index.js +97 -107
  144. package/lib/modules/Schedule/type.js +4 -16
  145. package/lib/modules/Schedule/types.js +4 -16
  146. package/lib/modules/Schedule/utils.js +433 -291
  147. package/lib/modules/Step/index.js +40 -52
  148. package/lib/modules/Step/tyeps.js +4 -16
  149. package/lib/modules/Summary/index.js +66 -70
  150. package/lib/modules/Summary/types.js +4 -16
  151. package/lib/modules/Summary/utils.js +782 -429
  152. package/lib/modules/index.js +212 -57
  153. package/lib/plugins/app.js +4 -16
  154. package/lib/plugins/index.js +36 -25
  155. package/lib/plugins/request.js +137 -126
  156. package/lib/plugins/shopStore.js +4 -16
  157. package/lib/plugins/user.js +4 -16
  158. package/lib/plugins/window.js +171 -179
  159. package/lib/server/index.js +882 -623
  160. package/lib/server/modules/index.js +85 -59
  161. package/lib/server/modules/menu/index.js +146 -122
  162. package/lib/server/modules/menu/types.js +18 -31
  163. package/lib/server/modules/order/index.js +195 -231
  164. package/lib/server/modules/order/types.js +107 -32
  165. package/lib/server/modules/order/utils/filterBookings.js +174 -140
  166. package/lib/server/modules/order/utils/filterOrders.js +89 -60
  167. package/lib/server/modules/products/index.js +430 -335
  168. package/lib/server/modules/products/types.js +41 -34
  169. package/lib/server/modules/quotation/index.js +76 -77
  170. package/lib/server/modules/quotation/types.js +21 -31
  171. package/lib/server/modules/resource/index.js +216 -187
  172. package/lib/server/modules/resource/types.js +42 -33
  173. package/lib/server/modules/schedule/index.js +134 -119
  174. package/lib/server/modules/schedule/types.js +14 -21
  175. package/lib/server/modules/schedule/utils.js +334 -163
  176. package/lib/server/types.js +4 -16
  177. package/lib/server/utils/index.js +25 -23
  178. package/lib/server/utils/product.js +196 -139
  179. package/lib/server/utils/schedule.js +34 -41
  180. package/lib/server/utils/time.js +40 -49
  181. package/lib/solution/BookingByStep/index.d.ts +1 -1
  182. package/lib/solution/BookingByStep/index.js +1530 -1343
  183. package/lib/solution/BookingByStep/types.js +40 -99
  184. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  185. package/lib/solution/BookingByStep/utils/products.js +42 -52
  186. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  187. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  188. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  189. package/lib/solution/BookingTicket/index.d.ts +1 -1
  190. package/lib/solution/BookingTicket/index.js +147 -122
  191. package/lib/solution/BookingTicket/types.js +38 -64
  192. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
  193. package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
  194. package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
  195. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  196. package/lib/solution/BuyTickets/index.js +67 -70
  197. package/lib/solution/BuyTickets/types.js +22 -38
  198. package/lib/solution/Checkout/index.js +1451 -1158
  199. package/lib/solution/Checkout/types.js +91 -61
  200. package/lib/solution/Checkout/utils/index.js +227 -158
  201. package/lib/solution/PlaceOrder/index.js +55 -0
  202. package/lib/solution/RegisterAndLogin/config.js +493 -460
  203. package/lib/solution/RegisterAndLogin/index.js +633 -630
  204. package/lib/solution/RegisterAndLogin/types.js +189 -76
  205. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  206. package/lib/solution/Sales/index.js +218 -200
  207. package/lib/solution/Sales/types.js +27 -33
  208. package/lib/solution/ScanOrder/index.js +803 -840
  209. package/lib/solution/ScanOrder/types.js +34 -34
  210. package/lib/solution/ScanOrder/utils.js +372 -331
  211. package/lib/solution/ShopDiscount/index.js +230 -236
  212. package/lib/solution/ShopDiscount/types.js +15 -37
  213. package/lib/solution/ShopDiscount/utils.js +309 -172
  214. package/lib/solution/VenueBooking/index.d.ts +5 -0
  215. package/lib/solution/VenueBooking/index.js +886 -929
  216. package/lib/solution/VenueBooking/types.js +20 -40
  217. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  218. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  219. package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
  220. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  221. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  222. package/lib/solution/VenueBooking/utils.js +130 -67
  223. package/lib/solution/index.js +102 -37
  224. package/lib/store/createStore.js +32 -29
  225. package/lib/types/index.js +4 -16
  226. package/lib/utils/task.js +36 -36
  227. package/lib/utils/watch.js +81 -47
  228. package/package.json +2 -1
@@ -1,35 +1,44 @@
1
- var __defProp = Object.defineProperty;
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
- // src/server/modules/resource/types.ts
20
- var types_exports = {};
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
- var __create = Object.create;
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
- // src/server/modules/schedule/index.ts
30
- var schedule_exports = {};
31
- __export(schedule_exports, {
32
- ScheduleModuleEx: () => ScheduleModuleEx
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(schedule_exports);
35
- var import_lodash_es = require("lodash-es");
36
- var import_BaseModule = require("../../../modules/BaseModule");
37
- var import_dayjs = __toESM(require("dayjs"));
38
- var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
39
- var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
40
- var import_utils = require("../../../solution/ShopDiscount/utils");
41
- import_dayjs.default.extend(import_isSameOrBefore.default);
42
- import_dayjs.default.extend(import_isSameOrAfter.default);
43
- var INDEXDB_STORE_NAME = "schedule";
44
- var ScheduleModuleEx = class extends import_BaseModule.BaseModule {
45
- // LoggerManager 实例
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: "info",
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: "warning",
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: "error",
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
- this.request = core.getPlugin("request");
96
+
97
+ // 获取依赖的插件
98
+ this.request = core.getPlugin('request');
106
99
  if (!this.request) {
107
- throw new Error("ScheduleModule 需要 request 插件支持");
100
+ throw new Error('ScheduleModule 需要 request 插件支持');
108
101
  }
109
- this.store = options == null ? void 0 : options.store;
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 = /* @__PURE__ */ new Map();
109
+ this.store.map = new Map();
116
110
  }
117
- const appPlugin = core.getPlugin("app");
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.log("[Schedule] IndexDB Manager 已初始化");
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
- var _a;
139
- this.logInfo("开始从服务器加载日程列表");
133
+ this.logInfo('开始从服务器加载日程列表');
140
134
  const startTime = Date.now();
141
135
  try {
142
- const scheduleList = await this.request.get(
143
- `/schedule`,
144
- { num: 999 },
145
- { cache: void 0 }
146
- );
147
- const list = ((_a = scheduleList.data) == null ? void 0 : _a.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("getScheduleByIds: 未提供有效的 ids", { idsCount: 0 });
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("getScheduleByIds: 查询完成", {
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
- console.log("[Schedule] IndexDB 缓存已清空");
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("[Schedule] 清空 IndexDB 缓存失败:", error);
228
- this.logError("清空 IndexDB 缓存失败", { error: errorMessage });
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((item) => {
242
- if (typeof item === "number") {
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, import_utils.getDateIsInSchedule)(date, scheduleListData);
249
- this.logInfo("getDateIsInSchedule: 判断日期是否在日程范围内", {
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("loadScheduleFromIndexDB: dbManager 不可用");
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("从 IndexDB 加载日程数据", {
268
- scheduleCount: (scheduleList == null ? void 0 : scheduleList.length) ?? 0
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("[Schedule] 从 IndexDB 读取数据失败:", error);
274
- this.logError("从 IndexDB 读取数据失败", { error: errorMessage });
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("saveScheduleToIndexDB: dbManager 不可用");
294
+ this.logWarning('saveScheduleToIndexDB: dbManager 不可用');
285
295
  return;
286
296
  }
287
- this.logInfo("开始保存日程数据到 IndexDB", { scheduleCount: scheduleList.length });
297
+ this.logInfo('开始保存日程数据到 IndexDB', {
298
+ scheduleCount: scheduleList.length
299
+ });
288
300
  try {
301
+ // 先清空现有的日程数据
289
302
  await this.dbManager.clear(INDEXDB_STORE_NAME);
290
- const savePromises = scheduleList.map(
291
- (schedule) => this.dbManager.add(INDEXDB_STORE_NAME, schedule)
292
- );
303
+
304
+ // 逐个保存日程(每个日程是独立的记录)
305
+ const savePromises = scheduleList.map(schedule => this.dbManager.add(INDEXDB_STORE_NAME, schedule));
293
306
  await Promise.all(savePromises);
294
- console.log(
295
- `[Schedule] 已将 ${scheduleList.length} 条日程数据保存到 IndexDB`
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("[Schedule] 保存数据到 IndexDB 失败:", error);
301
- this.logError("保存数据到 IndexDB 失败", {
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
- console.log(
319
- `[Schedule] 从 IndexDB 加载了 ${cachedData.length} 条日程数据`
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("预加载完成(从 IndexDB)", {
336
+ this.logInfo('预加载完成(从 IndexDB)', {
325
337
  scheduleCount: cachedData.length,
326
338
  duration: `${duration}ms`,
327
- source: "IndexDB"
339
+ source: 'IndexDB'
328
340
  });
329
341
  return;
330
342
  }
331
- console.log("[Schedule] IndexDB 中没有缓存数据,从服务器加载...");
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("[Schedule] 从 IndexDB 加载数据失败:", error);
336
- this.logWarning("从 IndexDB 加载数据失败,准备从服务器加载", { error: errorMessage });
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, import_lodash_es.cloneDeep)(scheduleList);
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: "Server"
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
- // Annotate the CommonJS export names for ESM import in node:
358
- 0 && (module.exports = {
359
- ScheduleModuleEx
360
- });
374
+ }
375
+ exports.ScheduleModuleEx = ScheduleModuleEx;
@@ -1,23 +1,16 @@
1
- var __defProp = Object.defineProperty;
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
- // src/server/modules/schedule/types.ts
17
- var types_exports = {};
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
+ });