@pisell/pisellos 0.0.566 → 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 (230) 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/SalesSummary/utils.js +4 -2
  17. package/dist/modules/Schedule/utils.js +0 -1
  18. package/dist/modules/Step/index.js +0 -1
  19. package/dist/modules/Summary/utils.js +2 -2
  20. package/dist/plugins/request.js +1 -4
  21. package/dist/plugins/window.js +2 -6
  22. package/dist/server/index.js +88 -121
  23. package/dist/server/modules/menu/index.js +32 -41
  24. package/dist/server/modules/products/index.js +29 -49
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +32 -40
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BookingByStep/index.d.ts +1 -1
  30. package/dist/solution/BookingByStep/index.js +7 -59
  31. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  32. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  33. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  34. package/dist/solution/BookingTicket/index.d.ts +1 -1
  35. package/dist/solution/BookingTicket/index.js +5 -7
  36. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  37. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  38. package/dist/solution/BuyTickets/index.js +9 -12
  39. package/dist/solution/Checkout/index.js +177 -246
  40. package/dist/solution/Checkout/utils/index.js +4 -16
  41. package/dist/solution/RegisterAndLogin/index.js +30 -76
  42. package/dist/solution/ScanOrder/index.js +50 -60
  43. package/dist/solution/ShopDiscount/index.js +2 -7
  44. package/dist/solution/VenueBooking/index.d.ts +5 -0
  45. package/dist/solution/VenueBooking/index.js +364 -327
  46. package/dist/utils/task.js +15 -18
  47. package/dist/utils/watch.js +0 -1
  48. package/lib/apis/picoding.js +2 -0
  49. package/lib/core/index.js +130 -131
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +92 -53
  52. package/lib/model/index.js +14 -21
  53. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  54. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  55. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  56. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  57. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  58. package/lib/model/strategy/adapter/index.js +100 -64
  59. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  60. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  61. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  62. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  63. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  64. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
  66. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  71. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  72. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  73. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  74. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  75. package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
  76. package/lib/model/strategy/engine.js +270 -168
  77. package/lib/model/strategy/index.js +49 -34
  78. package/lib/model/strategy/strategy-example.js +243 -239
  79. package/lib/model/strategy/type.js +100 -40
  80. package/lib/modules/Account/index.js +39 -53
  81. package/lib/modules/Account/types.js +20 -33
  82. package/lib/modules/AccountList/index.js +116 -154
  83. package/lib/modules/AccountList/types.js +30 -31
  84. package/lib/modules/AccountList/utils.js +18 -30
  85. package/lib/modules/BaseModule.js +22 -45
  86. package/lib/modules/Cart/index.js +170 -124
  87. package/lib/modules/Cart/types.js +46 -51
  88. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  89. package/lib/modules/Cart/utils/cartDate.js +56 -61
  90. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  91. package/lib/modules/Cart/utils/cartNote.js +27 -32
  92. package/lib/modules/Cart/utils/cartProduct.js +306 -241
  93. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  94. package/lib/modules/Cart/utils/cartResource.js +72 -78
  95. package/lib/modules/Cart/utils/changePrice.js +26 -62
  96. package/lib/modules/Cart/utils/index.js +106 -48
  97. package/lib/modules/Customer/constants.js +13 -34
  98. package/lib/modules/Customer/index.js +216 -153
  99. package/lib/modules/Customer/types.js +38 -35
  100. package/lib/modules/Date/index.js +116 -115
  101. package/lib/modules/Date/types.js +16 -28
  102. package/lib/modules/Date/utils.js +174 -123
  103. package/lib/modules/Discount/index.js +117 -113
  104. package/lib/modules/Discount/types.js +9 -31
  105. package/lib/modules/Guests/index.js +30 -56
  106. package/lib/modules/Guests/types.js +23 -33
  107. package/lib/modules/Holder/index.js +209 -189
  108. package/lib/modules/Holder/types.js +4 -16
  109. package/lib/modules/Holder/utils.js +20 -49
  110. package/lib/modules/OpenData/index.js +63 -74
  111. package/lib/modules/OpenData/types.js +4 -16
  112. package/lib/modules/OpenData/utils.js +44 -78
  113. package/lib/modules/Order/index.d.ts +1 -1
  114. package/lib/modules/Order/index.js +332 -320
  115. package/lib/modules/Order/types.js +24 -33
  116. package/lib/modules/Order/utils.js +350 -284
  117. package/lib/modules/Payment/cash.js +20 -33
  118. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  119. package/lib/modules/Payment/eftpos.js +16 -30
  120. package/lib/modules/Payment/index.js +566 -432
  121. package/lib/modules/Payment/mx51.js +1 -0
  122. package/lib/modules/Payment/types.js +216 -107
  123. package/lib/modules/Payment/utils.js +50 -47
  124. package/lib/modules/Payment/walletpass.js +221 -203
  125. package/lib/modules/Product/index.js +51 -46
  126. package/lib/modules/Product/types.js +4 -16
  127. package/lib/modules/Product/utils.js +32 -33
  128. package/lib/modules/ProductList/index.js +111 -110
  129. package/lib/modules/ProductList/types.js +9 -31
  130. package/lib/modules/Quotation/index.js +60 -82
  131. package/lib/modules/Quotation/types.js +4 -16
  132. package/lib/modules/Resource/index.js +27 -59
  133. package/lib/modules/Resource/types.js +22 -32
  134. package/lib/modules/Resource/utils.js +30 -38
  135. package/lib/modules/Rules/index.js +1172 -872
  136. package/lib/modules/Rules/types.js +17 -40
  137. package/lib/modules/SalesSummary/index.js +59 -68
  138. package/lib/modules/SalesSummary/types.js +4 -16
  139. package/lib/modules/SalesSummary/utils.js +178 -193
  140. package/lib/modules/ScanOrderLogger/index.js +59 -79
  141. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  142. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  143. package/lib/modules/ScanOrderLogger/types.js +4 -16
  144. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
  145. package/lib/modules/Schedule/index.js +97 -107
  146. package/lib/modules/Schedule/type.js +4 -16
  147. package/lib/modules/Schedule/types.js +4 -16
  148. package/lib/modules/Schedule/utils.js +433 -291
  149. package/lib/modules/Step/index.js +40 -52
  150. package/lib/modules/Step/tyeps.js +4 -16
  151. package/lib/modules/Summary/index.js +66 -70
  152. package/lib/modules/Summary/types.js +4 -16
  153. package/lib/modules/Summary/utils.js +782 -429
  154. package/lib/modules/index.js +212 -57
  155. package/lib/plugins/app.js +4 -16
  156. package/lib/plugins/index.js +36 -25
  157. package/lib/plugins/request.js +137 -126
  158. package/lib/plugins/shopStore.js +4 -16
  159. package/lib/plugins/user.js +4 -16
  160. package/lib/plugins/window.js +171 -179
  161. package/lib/server/index.js +882 -623
  162. package/lib/server/modules/index.js +85 -59
  163. package/lib/server/modules/menu/index.js +146 -122
  164. package/lib/server/modules/menu/types.js +18 -31
  165. package/lib/server/modules/order/index.js +195 -231
  166. package/lib/server/modules/order/types.js +107 -32
  167. package/lib/server/modules/order/utils/filterBookings.js +174 -140
  168. package/lib/server/modules/order/utils/filterOrders.js +89 -60
  169. package/lib/server/modules/products/index.js +430 -335
  170. package/lib/server/modules/products/types.js +41 -34
  171. package/lib/server/modules/quotation/index.js +76 -77
  172. package/lib/server/modules/quotation/types.js +21 -31
  173. package/lib/server/modules/resource/index.js +216 -187
  174. package/lib/server/modules/resource/types.js +42 -33
  175. package/lib/server/modules/schedule/index.js +134 -119
  176. package/lib/server/modules/schedule/types.js +14 -21
  177. package/lib/server/modules/schedule/utils.js +334 -163
  178. package/lib/server/types.js +4 -16
  179. package/lib/server/utils/index.js +25 -23
  180. package/lib/server/utils/product.js +196 -139
  181. package/lib/server/utils/schedule.js +34 -41
  182. package/lib/server/utils/time.js +40 -49
  183. package/lib/solution/BookingByStep/index.d.ts +1 -1
  184. package/lib/solution/BookingByStep/index.js +1530 -1343
  185. package/lib/solution/BookingByStep/types.js +40 -99
  186. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  187. package/lib/solution/BookingByStep/utils/products.js +42 -52
  188. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  189. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  190. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  191. package/lib/solution/BookingTicket/index.d.ts +1 -1
  192. package/lib/solution/BookingTicket/index.js +147 -122
  193. package/lib/solution/BookingTicket/types.js +38 -64
  194. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
  195. package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
  196. package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
  197. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  198. package/lib/solution/BuyTickets/index.js +67 -70
  199. package/lib/solution/BuyTickets/types.js +22 -38
  200. package/lib/solution/Checkout/index.js +1451 -1158
  201. package/lib/solution/Checkout/types.js +91 -61
  202. package/lib/solution/Checkout/utils/index.js +227 -158
  203. package/lib/solution/PlaceOrder/index.js +55 -0
  204. package/lib/solution/RegisterAndLogin/config.js +493 -460
  205. package/lib/solution/RegisterAndLogin/index.js +633 -630
  206. package/lib/solution/RegisterAndLogin/types.js +189 -76
  207. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  208. package/lib/solution/Sales/index.js +218 -200
  209. package/lib/solution/Sales/types.js +27 -33
  210. package/lib/solution/ScanOrder/index.js +803 -840
  211. package/lib/solution/ScanOrder/types.js +34 -34
  212. package/lib/solution/ScanOrder/utils.js +372 -331
  213. package/lib/solution/ShopDiscount/index.js +230 -236
  214. package/lib/solution/ShopDiscount/types.js +15 -37
  215. package/lib/solution/ShopDiscount/utils.js +309 -172
  216. package/lib/solution/VenueBooking/index.d.ts +5 -0
  217. package/lib/solution/VenueBooking/index.js +886 -929
  218. package/lib/solution/VenueBooking/types.js +20 -40
  219. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  220. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  221. package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
  222. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  223. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  224. package/lib/solution/VenueBooking/utils.js +130 -67
  225. package/lib/solution/index.js +102 -37
  226. package/lib/store/createStore.js +32 -29
  227. package/lib/types/index.js +4 -16
  228. package/lib/utils/task.js +36 -36
  229. package/lib/utils/watch.js +81 -47
  230. 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
+ });