@pisell/pisellos 2.3.73 → 2.3.75

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 (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  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 +2 -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 +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -10,6 +10,7 @@ export declare class FloorPlanModule extends BaseModule implements Module {
10
10
  private store;
11
11
  private request;
12
12
  private logger;
13
+ private dbManager;
13
14
  private floorPlanDataSource;
14
15
  private pendingSyncMessages;
15
16
  private syncTimer?;
@@ -28,6 +29,9 @@ export declare class FloorPlanModule extends BaseModule implements Module {
28
29
  private mergeItems;
29
30
  private removeByIds;
30
31
  private loadListFromServer;
32
+ private loadListFromSQLite;
33
+ private saveListToSQLite;
34
+ private refreshListFromServer;
31
35
  fetchByIdFromServer(id: number | string): Promise<FloorPlanItem | null>;
32
36
  fetchByCodeFromServer(code: string): Promise<FloorPlanItem | null>;
33
37
  preload(): Promise<void>;
@@ -29,6 +29,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
29
29
  import { BaseModule } from "../../../modules/BaseModule";
30
30
  import { FloorPlanHooks } from "./types";
31
31
  var FLOOR_PLAN_SYNC_DEBOUNCE_MS = 3000;
32
+ var FLOOR_PLAN_STORE_NAME = 'floor_plans';
32
33
 
33
34
  /**
34
35
  * 平面图模块:预加载列表、pubsub 同步、供 OS Server 路由读本地 store
@@ -45,6 +46,7 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
45
46
  _defineProperty(_assertThisInitialized(_this), "store", void 0);
46
47
  _defineProperty(_assertThisInitialized(_this), "request", void 0);
47
48
  _defineProperty(_assertThisInitialized(_this), "logger", void 0);
49
+ _defineProperty(_assertThisInitialized(_this), "dbManager", void 0);
48
50
  _defineProperty(_assertThisInitialized(_this), "floorPlanDataSource", void 0);
49
51
  _defineProperty(_assertThisInitialized(_this), "pendingSyncMessages", []);
50
52
  _defineProperty(_assertThisInitialized(_this), "syncTimer", void 0);
@@ -75,6 +77,7 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
75
77
  if (appPlugin) {
76
78
  app = appPlugin.getApp();
77
79
  this.logger = app.logger;
80
+ this.dbManager = app.sqlite || app.dbManager;
78
81
  }
79
82
  this.initFloorPlanDataSource();
80
83
  this.setupFloorPlanSync();
@@ -261,34 +264,154 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
261
264
  return loadListFromServer;
262
265
  }()
263
266
  }, {
264
- key: "fetchByIdFromServer",
267
+ key: "loadListFromSQLite",
265
268
  value: function () {
266
- var _fetchByIdFromServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(id) {
267
- var res, body, data;
269
+ var _loadListFromSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
270
+ var list;
268
271
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
269
272
  while (1) switch (_context3.prev = _context3.next) {
270
273
  case 0:
271
- _context3.prev = 0;
272
- _context3.next = 3;
274
+ if (this.dbManager) {
275
+ _context3.next = 2;
276
+ break;
277
+ }
278
+ return _context3.abrupt("return", []);
279
+ case 2:
280
+ _context3.prev = 2;
281
+ _context3.next = 5;
282
+ return this.dbManager.getAll(FLOOR_PLAN_STORE_NAME);
283
+ case 5:
284
+ list = _context3.sent;
285
+ return _context3.abrupt("return", Array.isArray(list) ? list : []);
286
+ case 9:
287
+ _context3.prev = 9;
288
+ _context3.t0 = _context3["catch"](2);
289
+ this.logWarning('从 SQLite 读取平面图失败', {
290
+ error: _context3.t0 instanceof Error ? _context3.t0.message : String(_context3.t0)
291
+ });
292
+ return _context3.abrupt("return", []);
293
+ case 13:
294
+ case "end":
295
+ return _context3.stop();
296
+ }
297
+ }, _callee3, this, [[2, 9]]);
298
+ }));
299
+ function loadListFromSQLite() {
300
+ return _loadListFromSQLite.apply(this, arguments);
301
+ }
302
+ return loadListFromSQLite;
303
+ }()
304
+ }, {
305
+ key: "saveListToSQLite",
306
+ value: function () {
307
+ var _saveListToSQLite = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(list) {
308
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
309
+ while (1) switch (_context4.prev = _context4.next) {
310
+ case 0:
311
+ if (this.dbManager) {
312
+ _context4.next = 2;
313
+ break;
314
+ }
315
+ return _context4.abrupt("return");
316
+ case 2:
317
+ _context4.prev = 2;
318
+ _context4.next = 5;
319
+ return this.dbManager.clear(FLOOR_PLAN_STORE_NAME);
320
+ case 5:
321
+ if (!(list.length > 0)) {
322
+ _context4.next = 8;
323
+ break;
324
+ }
325
+ _context4.next = 8;
326
+ return this.dbManager.bulkAdd(FLOOR_PLAN_STORE_NAME, list);
327
+ case 8:
328
+ _context4.next = 13;
329
+ break;
330
+ case 10:
331
+ _context4.prev = 10;
332
+ _context4.t0 = _context4["catch"](2);
333
+ this.logWarning('保存平面图到 SQLite 失败', {
334
+ count: list.length,
335
+ error: _context4.t0 instanceof Error ? _context4.t0.message : String(_context4.t0)
336
+ });
337
+ case 13:
338
+ case "end":
339
+ return _context4.stop();
340
+ }
341
+ }, _callee4, this, [[2, 10]]);
342
+ }));
343
+ function saveListToSQLite(_x3) {
344
+ return _saveListToSQLite.apply(this, arguments);
345
+ }
346
+ return saveListToSQLite;
347
+ }()
348
+ }, {
349
+ key: "refreshListFromServer",
350
+ value: function () {
351
+ var _refreshListFromServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
352
+ var list;
353
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
354
+ while (1) switch (_context5.prev = _context5.next) {
355
+ case 0:
356
+ _context5.next = 2;
357
+ return this.loadListFromServer();
358
+ case 2:
359
+ list = _context5.sent;
360
+ if (!(list.length === 0)) {
361
+ _context5.next = 6;
362
+ break;
363
+ }
364
+ this.logWarning('远端平面图刷新完成但列表为空');
365
+ return _context5.abrupt("return");
366
+ case 6:
367
+ this.replaceStore(list);
368
+ _context5.next = 9;
369
+ return this.saveListToSQLite(list);
370
+ case 9:
371
+ this.core.effects.emit(FloorPlanHooks.onFloorPlansChanged, this.getSortedList());
372
+ this.logInfo('远端平面图刷新完成', {
373
+ count: list.length
374
+ });
375
+ case 11:
376
+ case "end":
377
+ return _context5.stop();
378
+ }
379
+ }, _callee5, this);
380
+ }));
381
+ function refreshListFromServer() {
382
+ return _refreshListFromServer.apply(this, arguments);
383
+ }
384
+ return refreshListFromServer;
385
+ }()
386
+ }, {
387
+ key: "fetchByIdFromServer",
388
+ value: function () {
389
+ var _fetchByIdFromServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(id) {
390
+ var res, body, data;
391
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
392
+ while (1) switch (_context6.prev = _context6.next) {
393
+ case 0:
394
+ _context6.prev = 0;
395
+ _context6.next = 3;
273
396
  return this.request.get("/schedule/floor-plan/".concat(id), {}, {
274
397
  isShopApi: true
275
398
  });
276
399
  case 3:
277
- res = _context3.sent;
400
+ res = _context6.sent;
278
401
  body = res;
279
402
  data = (body === null || body === void 0 ? void 0 : body.data) !== undefined ? body.data : body;
280
- return _context3.abrupt("return", data && _typeof(data) === 'object' ? data : null);
403
+ return _context6.abrupt("return", data && _typeof(data) === 'object' ? data : null);
281
404
  case 9:
282
- _context3.prev = 9;
283
- _context3.t0 = _context3["catch"](0);
284
- return _context3.abrupt("return", null);
405
+ _context6.prev = 9;
406
+ _context6.t0 = _context6["catch"](0);
407
+ return _context6.abrupt("return", null);
285
408
  case 12:
286
409
  case "end":
287
- return _context3.stop();
410
+ return _context6.stop();
288
411
  }
289
- }, _callee3, this, [[0, 9]]);
412
+ }, _callee6, this, [[0, 9]]);
290
413
  }));
291
- function fetchByIdFromServer(_x3) {
414
+ function fetchByIdFromServer(_x4) {
292
415
  return _fetchByIdFromServer.apply(this, arguments);
293
416
  }
294
417
  return fetchByIdFromServer;
@@ -296,33 +419,33 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
296
419
  }, {
297
420
  key: "fetchByCodeFromServer",
298
421
  value: function () {
299
- var _fetchByCodeFromServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(code) {
422
+ var _fetchByCodeFromServer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(code) {
300
423
  var enc, res, body, data;
301
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
302
- while (1) switch (_context4.prev = _context4.next) {
424
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
425
+ while (1) switch (_context7.prev = _context7.next) {
303
426
  case 0:
304
- _context4.prev = 0;
427
+ _context7.prev = 0;
305
428
  enc = encodeURIComponent(code);
306
- _context4.next = 4;
429
+ _context7.next = 4;
307
430
  return this.request.get("/schedule/floor-plan/code/".concat(enc), {}, {
308
431
  isShopApi: true
309
432
  });
310
433
  case 4:
311
- res = _context4.sent;
434
+ res = _context7.sent;
312
435
  body = res;
313
436
  data = (body === null || body === void 0 ? void 0 : body.data) !== undefined ? body.data : body;
314
- return _context4.abrupt("return", data && _typeof(data) === 'object' ? data : null);
437
+ return _context7.abrupt("return", data && _typeof(data) === 'object' ? data : null);
315
438
  case 10:
316
- _context4.prev = 10;
317
- _context4.t0 = _context4["catch"](0);
318
- return _context4.abrupt("return", null);
439
+ _context7.prev = 10;
440
+ _context7.t0 = _context7["catch"](0);
441
+ return _context7.abrupt("return", null);
319
442
  case 13:
320
443
  case "end":
321
- return _context4.stop();
444
+ return _context7.stop();
322
445
  }
323
- }, _callee4, this, [[0, 10]]);
446
+ }, _callee7, this, [[0, 10]]);
324
447
  }));
325
- function fetchByCodeFromServer(_x4) {
448
+ function fetchByCodeFromServer(_x5) {
326
449
  return _fetchByCodeFromServer.apply(this, arguments);
327
450
  }
328
451
  return fetchByCodeFromServer;
@@ -330,30 +453,42 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
330
453
  }, {
331
454
  key: "preload",
332
455
  value: function () {
333
- var _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
334
- var list;
335
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
336
- while (1) switch (_context5.prev = _context5.next) {
456
+ var _preload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
457
+ var _this3 = this;
458
+ var cachedList;
459
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
460
+ while (1) switch (_context8.prev = _context8.next) {
337
461
  case 0:
338
462
  this.logInfo('开始预加载平面图列表');
339
- _context5.next = 3;
340
- return this.loadListFromServer();
463
+ _context8.next = 3;
464
+ return this.loadListFromSQLite();
341
465
  case 3:
342
- list = _context5.sent;
343
- if (list.length > 0) {
344
- this.replaceStore(list);
345
- this.core.effects.emit(FloorPlanHooks.onFloorPlansChanged, this.getSortedList());
346
- this.logInfo('预加载完成', {
347
- count: list.length
348
- });
349
- } else {
350
- this.logWarning('预加载完成但列表为空');
466
+ cachedList = _context8.sent;
467
+ if (!(cachedList.length > 0)) {
468
+ _context8.next = 10;
469
+ break;
351
470
  }
352
- case 5:
471
+ this.replaceStore(cachedList);
472
+ this.core.effects.emit(FloorPlanHooks.onFloorPlansChanged, this.getSortedList());
473
+ this.logInfo('预加载完成(SQLite)', {
474
+ count: cachedList.length
475
+ });
476
+
477
+ // 二次启动立即使用本地平面图,远端刷新完成后自动更新 store 与订阅者。
478
+ void this.refreshListFromServer().catch(function (error) {
479
+ _this3.logWarning('后台刷新平面图失败,继续使用本地数据', {
480
+ error: error instanceof Error ? error.message : String(error)
481
+ });
482
+ });
483
+ return _context8.abrupt("return");
484
+ case 10:
485
+ _context8.next = 12;
486
+ return this.refreshListFromServer();
487
+ case 12:
353
488
  case "end":
354
- return _context5.stop();
489
+ return _context8.stop();
355
490
  }
356
- }, _callee5, this);
491
+ }, _callee8, this);
357
492
  }));
358
493
  function preload() {
359
494
  return _preload.apply(this, arguments);
@@ -375,12 +510,12 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
375
510
  }, {
376
511
  key: "setupFloorPlanSync",
377
512
  value: function setupFloorPlanSync() {
378
- var _this3 = this;
513
+ var _this4 = this;
379
514
  if (!this.floorPlanDataSource) return;
380
515
  var flush = function flush() {
381
- if (_this3.syncTimer) clearTimeout(_this3.syncTimer);
382
- _this3.syncTimer = setTimeout(function () {
383
- _this3.processFloorPlanSyncMessages();
516
+ if (_this4.syncTimer) clearTimeout(_this4.syncTimer);
517
+ _this4.syncTimer = setTimeout(function () {
518
+ _this4.processFloorPlanSyncMessages();
384
519
  }, FLOOR_PLAN_SYNC_DEBOUNCE_MS);
385
520
  };
386
521
  this.floorPlanDataSource.run({
@@ -388,12 +523,12 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
388
523
  callback: function callback(res) {
389
524
  var data = (res === null || res === void 0 ? void 0 : res.data) || res;
390
525
  if (!data || data.module !== 'floor_plan') return;
391
- _this3.pendingSyncMessages.push(_objectSpread({}, data));
526
+ _this4.pendingSyncMessages.push(_objectSpread({}, data));
392
527
  flush();
393
528
  }
394
529
  }
395
530
  }).catch(function (err) {
396
- _this3.logError('setupFloorPlanSync: DataSource run 出错', {
531
+ _this4.logError('setupFloorPlanSync: DataSource run 出错', {
397
532
  error: err instanceof Error ? err.message : String(err)
398
533
  });
399
534
  });
@@ -402,18 +537,18 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
402
537
  }, {
403
538
  key: "processFloorPlanSyncMessages",
404
539
  value: function () {
405
- var _processFloorPlanSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
540
+ var _processFloorPlanSyncMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
406
541
  var messages, changed, deleteIds, bodyItems, needFullList, partialIds, _iterator3, _step3, _msg$ids2, msg, _msg$ids, body, hasBody, uniqueDeletes, list, fetched, _iterator4, _step4, id, one;
407
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
408
- while (1) switch (_context6.prev = _context6.next) {
542
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
543
+ while (1) switch (_context9.prev = _context9.next) {
409
544
  case 0:
410
545
  messages = _toConsumableArray(this.pendingSyncMessages);
411
546
  this.pendingSyncMessages = [];
412
547
  if (!(messages.length === 0)) {
413
- _context6.next = 4;
548
+ _context9.next = 4;
414
549
  break;
415
550
  }
416
- return _context6.abrupt("return");
551
+ return _context9.abrupt("return");
417
552
  case 4:
418
553
  this.logInfo('processFloorPlanSyncMessages 开始', {
419
554
  count: messages.length
@@ -424,16 +559,16 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
424
559
  needFullList = false;
425
560
  partialIds = new Set();
426
561
  _iterator3 = _createForOfIteratorHelper(messages);
427
- _context6.prev = 11;
562
+ _context9.prev = 11;
428
563
  _iterator3.s();
429
564
  case 13:
430
565
  if ((_step3 = _iterator3.n()).done) {
431
- _context6.next = 29;
566
+ _context9.next = 29;
432
567
  break;
433
568
  }
434
569
  msg = _step3.value;
435
570
  if (!(msg.operation === 'delete' || msg.action === 'delete')) {
436
- _context6.next = 18;
571
+ _context9.next = 18;
437
572
  break;
438
573
  }
439
574
  if ((_msg$ids = msg.ids) !== null && _msg$ids !== void 0 && _msg$ids.length) {
@@ -441,23 +576,23 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
441
576
  } else if (msg.id != null) {
442
577
  deleteIds.push(msg.id);
443
578
  }
444
- return _context6.abrupt("continue", 27);
579
+ return _context9.abrupt("continue", 27);
445
580
  case 18:
446
581
  body = msg.body;
447
582
  hasBody = body && _typeof(body) === 'object' && Object.keys(body).length > 0 && body.id != null;
448
583
  if (!hasBody) {
449
- _context6.next = 23;
584
+ _context9.next = 23;
450
585
  break;
451
586
  }
452
587
  bodyItems.push(body);
453
- return _context6.abrupt("continue", 27);
588
+ return _context9.abrupt("continue", 27);
454
589
  case 23:
455
590
  if (!(msg.ids && msg.ids.length > 1)) {
456
- _context6.next = 26;
591
+ _context9.next = 26;
457
592
  break;
458
593
  }
459
594
  needFullList = true;
460
- return _context6.abrupt("continue", 27);
595
+ return _context9.abrupt("continue", 27);
461
596
  case 26:
462
597
  if (((_msg$ids2 = msg.ids) === null || _msg$ids2 === void 0 ? void 0 : _msg$ids2.length) === 1) {
463
598
  partialIds.add(msg.ids[0]);
@@ -465,19 +600,19 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
465
600
  partialIds.add(msg.id);
466
601
  }
467
602
  case 27:
468
- _context6.next = 13;
603
+ _context9.next = 13;
469
604
  break;
470
605
  case 29:
471
- _context6.next = 34;
606
+ _context9.next = 34;
472
607
  break;
473
608
  case 31:
474
- _context6.prev = 31;
475
- _context6.t0 = _context6["catch"](11);
476
- _iterator3.e(_context6.t0);
609
+ _context9.prev = 31;
610
+ _context9.t0 = _context9["catch"](11);
611
+ _iterator3.e(_context9.t0);
477
612
  case 34:
478
- _context6.prev = 34;
613
+ _context9.prev = 34;
479
614
  _iterator3.f();
480
- return _context6.finish(34);
615
+ return _context9.finish(34);
481
616
  case 37:
482
617
  uniqueDeletes = _toConsumableArray(new Set(deleteIds));
483
618
  if (uniqueDeletes.length > 0) {
@@ -489,66 +624,71 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
489
624
  changed = true;
490
625
  }
491
626
  if (!needFullList) {
492
- _context6.next = 48;
627
+ _context9.next = 48;
493
628
  break;
494
629
  }
495
- _context6.next = 43;
630
+ _context9.next = 43;
496
631
  return this.loadListFromServer();
497
632
  case 43:
498
- list = _context6.sent;
633
+ list = _context9.sent;
499
634
  this.replaceStore(list);
500
635
  changed = true;
501
- _context6.next = 70;
636
+ _context9.next = 70;
502
637
  break;
503
638
  case 48:
504
639
  if (!(partialIds.size > 0)) {
505
- _context6.next = 70;
640
+ _context9.next = 70;
506
641
  break;
507
642
  }
508
643
  fetched = [];
509
644
  _iterator4 = _createForOfIteratorHelper(partialIds);
510
- _context6.prev = 51;
645
+ _context9.prev = 51;
511
646
  _iterator4.s();
512
647
  case 53:
513
648
  if ((_step4 = _iterator4.n()).done) {
514
- _context6.next = 61;
649
+ _context9.next = 61;
515
650
  break;
516
651
  }
517
652
  id = _step4.value;
518
- _context6.next = 57;
653
+ _context9.next = 57;
519
654
  return this.fetchByIdFromServer(id);
520
655
  case 57:
521
- one = _context6.sent;
656
+ one = _context9.sent;
522
657
  if (one) fetched.push(one);
523
658
  case 59:
524
- _context6.next = 53;
659
+ _context9.next = 53;
525
660
  break;
526
661
  case 61:
527
- _context6.next = 66;
662
+ _context9.next = 66;
528
663
  break;
529
664
  case 63:
530
- _context6.prev = 63;
531
- _context6.t1 = _context6["catch"](51);
532
- _iterator4.e(_context6.t1);
665
+ _context9.prev = 63;
666
+ _context9.t1 = _context9["catch"](51);
667
+ _iterator4.e(_context9.t1);
533
668
  case 66:
534
- _context6.prev = 66;
669
+ _context9.prev = 66;
535
670
  _iterator4.f();
536
- return _context6.finish(66);
671
+ return _context9.finish(66);
537
672
  case 69:
538
673
  if (fetched.length > 0) {
539
674
  this.mergeItems(fetched);
540
675
  changed = true;
541
676
  }
542
677
  case 70:
543
- if (changed) {
544
- this.core.effects.emit(FloorPlanHooks.onFloorPlansChanged, this.getSortedList());
545
- this.core.effects.emit(FloorPlanHooks.onFloorPlanSyncCompleted, null);
678
+ if (!changed) {
679
+ _context9.next = 75;
680
+ break;
546
681
  }
547
- case 71:
682
+ _context9.next = 73;
683
+ return this.saveListToSQLite(this.store.list);
684
+ case 73:
685
+ this.core.effects.emit(FloorPlanHooks.onFloorPlansChanged, this.getSortedList());
686
+ this.core.effects.emit(FloorPlanHooks.onFloorPlanSyncCompleted, null);
687
+ case 75:
548
688
  case "end":
549
- return _context6.stop();
689
+ return _context9.stop();
550
690
  }
551
- }, _callee6, this, [[11, 31, 34, 37], [51, 63, 66, 69]]);
691
+ }, _callee9, this, [[11, 31, 34, 37], [51, 63, 66, 69]]);
552
692
  }));
553
693
  function processFloorPlanSyncMessages() {
554
694
  return _processFloorPlanSyncMessages.apply(this, arguments);
@@ -558,18 +698,20 @@ export var FloorPlanModule = /*#__PURE__*/function (_BaseModule) {
558
698
  }, {
559
699
  key: "clear",
560
700
  value: function () {
561
- var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
562
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
563
- while (1) switch (_context7.prev = _context7.next) {
701
+ var _clear = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
702
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
703
+ while (1) switch (_context10.prev = _context10.next) {
564
704
  case 0:
565
705
  this.store.list = [];
566
706
  this.store.map.clear();
567
707
  this.store.codeMap.clear();
568
- case 3:
708
+ _context10.next = 5;
709
+ return this.saveListToSQLite([]);
710
+ case 5:
569
711
  case "end":
570
- return _context7.stop();
712
+ return _context10.stop();
571
713
  }
572
- }, _callee7, this);
714
+ }, _callee10, this);
573
715
  }));
574
716
  function clear() {
575
717
  return _clear.apply(this, arguments);