@pisell/pisellos 2.3.74 → 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 (276) hide show
  1. package/dist/core/index.js +6 -10
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.js +36 -64
  11. package/dist/modules/Payment/index.js +97 -162
  12. package/dist/modules/Rules/index.js +1 -4
  13. package/dist/modules/Schedule/index.js +0 -1
  14. package/dist/modules/Schedule/utils.js +0 -1
  15. package/dist/modules/Step/index.js +0 -1
  16. package/dist/plugins/request.js +1 -4
  17. package/dist/plugins/window.js +2 -6
  18. package/dist/server/index.js +97 -129
  19. package/dist/server/modules/menu/index.js +32 -41
  20. package/dist/server/modules/order/index.js +2 -4
  21. package/dist/server/modules/products/index.js +24 -42
  22. package/dist/server/modules/quotation/index.js +29 -38
  23. package/dist/server/modules/resource/index.js +3 -4
  24. package/dist/server/modules/schedule/index.js +27 -35
  25. package/dist/server/utils/product.js +0 -1
  26. package/dist/solution/BaseSales/index.js +38 -41
  27. package/dist/solution/BookingByStep/index.js +7 -59
  28. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  29. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  30. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  31. package/dist/solution/BookingTicket/index.js +0 -2
  32. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  33. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  34. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  35. package/dist/solution/BuyTickets/index.js +9 -12
  36. package/dist/solution/Checkout/index.js +177 -252
  37. package/dist/solution/Checkout/utils/index.js +4 -16
  38. package/dist/solution/RegisterAndLogin/index.js +30 -76
  39. package/dist/solution/ScanOrder/index.js +50 -60
  40. package/dist/solution/ShopDiscount/index.js +2 -7
  41. package/dist/solution/VenueBooking/index.js +45 -55
  42. package/dist/utils/task.js +15 -18
  43. package/dist/utils/watch.js +0 -1
  44. package/lib/apis/picoding.js +2 -0
  45. package/lib/core/index.js +134 -134
  46. package/lib/effects/index.js +46 -57
  47. package/lib/index.js +82 -49
  48. package/lib/model/index.js +14 -21
  49. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  50. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  51. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  52. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  53. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  54. package/lib/model/strategy/adapter/index.js +100 -64
  55. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  56. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  57. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  58. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  59. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  60. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  61. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  62. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  63. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  64. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  65. package/lib/model/strategy/adapter/type.js +4 -16
  66. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  67. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  68. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  69. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  70. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  72. package/lib/model/strategy/engine.js +270 -168
  73. package/lib/model/strategy/index.js +49 -34
  74. package/lib/model/strategy/strategy-example.js +243 -239
  75. package/lib/model/strategy/type.js +100 -40
  76. package/lib/modules/Account/index.js +39 -53
  77. package/lib/modules/Account/types.js +20 -33
  78. package/lib/modules/AccountList/index.js +116 -154
  79. package/lib/modules/AccountList/types.js +30 -31
  80. package/lib/modules/AccountList/utils.js +18 -30
  81. package/lib/modules/BaseModule.js +23 -42
  82. package/lib/modules/BookingContext/index.js +158 -136
  83. package/lib/modules/BookingContext/types.js +46 -32
  84. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  85. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  86. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  87. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  88. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  89. package/lib/modules/BookingContext/utils/index.js +124 -41
  90. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  91. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  92. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  93. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  94. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  95. package/lib/modules/BookingContext/utils/resources.js +209 -167
  96. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  97. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  98. package/lib/modules/Cart/index.js +170 -124
  99. package/lib/modules/Cart/types.js +46 -51
  100. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  101. package/lib/modules/Cart/utils/cartDate.js +56 -61
  102. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  103. package/lib/modules/Cart/utils/cartNote.js +27 -32
  104. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  105. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  106. package/lib/modules/Cart/utils/cartResource.js +70 -78
  107. package/lib/modules/Cart/utils/changePrice.js +22 -50
  108. package/lib/modules/Cart/utils/index.js +106 -48
  109. package/lib/modules/Customer/constants.js +13 -34
  110. package/lib/modules/Customer/index.js +235 -172
  111. package/lib/modules/Customer/types.js +38 -35
  112. package/lib/modules/Date/index.js +116 -115
  113. package/lib/modules/Date/types.js +16 -28
  114. package/lib/modules/Date/utils.js +174 -123
  115. package/lib/modules/Discount/index.js +122 -127
  116. package/lib/modules/Discount/types.js +9 -31
  117. package/lib/modules/Guests/index.js +30 -56
  118. package/lib/modules/Guests/types.js +23 -33
  119. package/lib/modules/Holder/index.js +209 -189
  120. package/lib/modules/Holder/types.js +4 -16
  121. package/lib/modules/Holder/utils.js +20 -49
  122. package/lib/modules/OpenData/index.js +70 -76
  123. package/lib/modules/OpenData/types.js +4 -16
  124. package/lib/modules/OpenData/utils.js +44 -78
  125. package/lib/modules/Order/index.js +1713 -2118
  126. package/lib/modules/Order/payment-utils.js +77 -120
  127. package/lib/modules/Order/types.js +88 -35
  128. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  129. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  130. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  131. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  132. package/lib/modules/Order/utils.js +814 -647
  133. package/lib/modules/Payment/cash.js +20 -33
  134. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  135. package/lib/modules/Payment/eftpos.js +16 -30
  136. package/lib/modules/Payment/index.js +532 -399
  137. package/lib/modules/Payment/mx51.js +1 -0
  138. package/lib/modules/Payment/types.js +230 -108
  139. package/lib/modules/Payment/utils.js +52 -51
  140. package/lib/modules/Payment/walletpass.js +485 -660
  141. package/lib/modules/Product/index.js +51 -46
  142. package/lib/modules/Product/types.js +4 -16
  143. package/lib/modules/Product/utils.js +32 -33
  144. package/lib/modules/ProductList/index.js +113 -123
  145. package/lib/modules/ProductList/types.js +9 -31
  146. package/lib/modules/Quotation/index.js +81 -118
  147. package/lib/modules/Quotation/types.js +4 -16
  148. package/lib/modules/Resource/index.js +27 -59
  149. package/lib/modules/Resource/types.js +22 -32
  150. package/lib/modules/Resource/utils.js +30 -38
  151. package/lib/modules/ResourcePlanner/index.js +25 -23
  152. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  153. package/lib/modules/ResourcePlanner/planner.js +589 -770
  154. package/lib/modules/ResourcePlanner/types.js +10 -29
  155. package/lib/modules/Rules/index.js +1218 -959
  156. package/lib/modules/Rules/types.js +17 -40
  157. package/lib/modules/SalesSummary/index.js +85 -90
  158. package/lib/modules/SalesSummary/types.js +4 -16
  159. package/lib/modules/SalesSummary/utils.js +355 -430
  160. package/lib/modules/ScanOrderLogger/index.js +59 -79
  161. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  162. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  163. package/lib/modules/ScanOrderLogger/types.js +4 -16
  164. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  165. package/lib/modules/Schedule/index.js +100 -114
  166. package/lib/modules/Schedule/type.js +4 -16
  167. package/lib/modules/Schedule/types.js +4 -16
  168. package/lib/modules/Schedule/utils.js +433 -291
  169. package/lib/modules/Step/index.js +40 -52
  170. package/lib/modules/Step/tyeps.js +4 -16
  171. package/lib/modules/Summary/index.js +66 -71
  172. package/lib/modules/Summary/types.js +4 -16
  173. package/lib/modules/Summary/utils.js +773 -418
  174. package/lib/modules/SurchargeList/index.js +46 -60
  175. package/lib/modules/SurchargeList/types.js +4 -16
  176. package/lib/modules/index.js +245 -63
  177. package/lib/plugins/app.js +4 -16
  178. package/lib/plugins/index.js +36 -25
  179. package/lib/plugins/request.js +137 -126
  180. package/lib/plugins/shopStore.js +4 -16
  181. package/lib/plugins/user.js +4 -16
  182. package/lib/plugins/window.js +171 -179
  183. package/lib/server/index.js +3050 -2665
  184. package/lib/server/modules/floor-plan/index.js +118 -134
  185. package/lib/server/modules/floor-plan/types.js +15 -30
  186. package/lib/server/modules/index.js +106 -68
  187. package/lib/server/modules/menu/index.js +142 -122
  188. package/lib/server/modules/menu/types.js +18 -31
  189. package/lib/server/modules/order/index.js +784 -1002
  190. package/lib/server/modules/order/types.js +122 -33
  191. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  192. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  193. package/lib/server/modules/payment/index.js +59 -83
  194. package/lib/server/modules/payment/types.js +4 -16
  195. package/lib/server/modules/products/index.js +583 -471
  196. package/lib/server/modules/products/types.js +44 -34
  197. package/lib/server/modules/quotation/index.js +137 -172
  198. package/lib/server/modules/quotation/types.js +21 -31
  199. package/lib/server/modules/resource/index.js +220 -186
  200. package/lib/server/modules/resource/types.js +42 -33
  201. package/lib/server/modules/schedule/index.js +135 -123
  202. package/lib/server/modules/schedule/types.js +14 -21
  203. package/lib/server/modules/schedule/utils.js +334 -163
  204. package/lib/server/types.js +4 -16
  205. package/lib/server/utils/index.js +25 -23
  206. package/lib/server/utils/product.js +196 -139
  207. package/lib/server/utils/schedule.js +34 -41
  208. package/lib/server/utils/small-ticket.js +479 -456
  209. package/lib/server/utils/time.js +40 -49
  210. package/lib/solution/BaseSales/index.js +1186 -1410
  211. package/lib/solution/BaseSales/types.js +42 -38
  212. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  213. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  214. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  215. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  216. package/lib/solution/BaseSales/utils.js +158 -143
  217. package/lib/solution/BookingByStep/index.js +1527 -1340
  218. package/lib/solution/BookingByStep/types.js +40 -99
  219. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  220. package/lib/solution/BookingByStep/utils/products.js +42 -52
  221. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  222. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  223. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  224. package/lib/solution/BookingTicket/index.js +607 -522
  225. package/lib/solution/BookingTicket/types.js +99 -77
  226. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  227. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  228. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  229. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  230. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  231. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  232. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  233. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  234. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  235. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  236. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  237. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  238. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  239. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  240. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  241. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  242. package/lib/solution/BuyTickets/index.js +67 -70
  243. package/lib/solution/BuyTickets/types.js +22 -38
  244. package/lib/solution/Checkout/index.js +1451 -1158
  245. package/lib/solution/Checkout/types.js +91 -61
  246. package/lib/solution/Checkout/utils/index.js +228 -156
  247. package/lib/solution/PlaceOrder/index.js +55 -0
  248. package/lib/solution/RegisterAndLogin/config.js +493 -460
  249. package/lib/solution/RegisterAndLogin/index.js +633 -630
  250. package/lib/solution/RegisterAndLogin/types.js +189 -76
  251. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  252. package/lib/solution/Sales/index.js +328 -324
  253. package/lib/solution/Sales/types.js +27 -33
  254. package/lib/solution/ScanOrder/index.js +832 -864
  255. package/lib/solution/ScanOrder/types.js +33 -34
  256. package/lib/solution/ScanOrder/utils.js +409 -374
  257. package/lib/solution/ShopDiscount/index.js +226 -232
  258. package/lib/solution/ShopDiscount/types.js +15 -37
  259. package/lib/solution/ShopDiscount/utils.js +300 -172
  260. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  261. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  262. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  263. package/lib/solution/VenueBooking/index.js +811 -879
  264. package/lib/solution/VenueBooking/types.js +19 -39
  265. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  266. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  267. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  268. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  269. package/lib/solution/VenueBooking/utils.js +130 -67
  270. package/lib/solution/index.js +124 -41
  271. package/lib/store/createStore.js +32 -29
  272. package/lib/types/index.js +4 -16
  273. package/lib/utils/payment-number.js +26 -46
  274. package/lib/utils/task.js +36 -36
  275. package/lib/utils/watch.js +81 -47
  276. package/package.json +2 -1
@@ -1,36 +1,46 @@
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/products/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- ProductsHooks: () => ProductsHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var ProductsHooks = /* @__PURE__ */ ((ProductsHooks2) => {
26
- ProductsHooks2["onProductsLoaded"] = "products:onProductsLoaded";
27
- ProductsHooks2["onProductsChanged"] = "products:onProductsChanged";
28
- ProductsHooks2["onProductSelected"] = "products:onProductSelected";
29
- ProductsHooks2["onProductsPriceApplied"] = "products:onProductsPriceApplied";
30
- ProductsHooks2["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
31
- return ProductsHooks2;
32
- })(ProductsHooks || {});
33
- // Annotate the CommonJS export names for ESM import in node:
34
- 0 && (module.exports = {
35
- ProductsHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
36
5
  });
6
+ exports.ProductsHooks = void 0;
7
+ /**
8
+ * Products 模块状态
9
+ */
10
+ /**
11
+ * 商品格式化后数据
12
+ */
13
+ /**
14
+ * 商品轻量查询范围
15
+ */
16
+ /**
17
+ * 加载报价单商品价格参数
18
+ */
19
+ /**
20
+ * 加载报价单商品价格返回数据
21
+ */
22
+ /**
23
+ * 加载报价单商品价格返回数据
24
+ */
25
+ /**
26
+ * Products 模块状态
27
+ */
28
+ /**
29
+ * Products 模块钩子
30
+ */
31
+ let ProductsHooks = exports.ProductsHooks = /*#__PURE__*/function (ProductsHooks) {
32
+ ProductsHooks["onProductsLoaded"] = "products:onProductsLoaded";
33
+ ProductsHooks["onProductsChanged"] = "products:onProductsChanged";
34
+ ProductsHooks["onProductSelected"] = "products:onProductSelected";
35
+ ProductsHooks["onProductsPriceApplied"] = "products:onProductsPriceApplied";
36
+ ProductsHooks["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
37
+ return ProductsHooks;
38
+ }({});
39
+ /** pubsub 商品同步消息结构 */
40
+ /**
41
+ * 商品格式化器上下文
42
+ */
43
+ /**
44
+ * 商品格式化器类型
45
+ * 用于对商品数据进行处理和格式化(包括价格应用、字段扩展等)
46
+ */
@@ -1,109 +1,97 @@
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/quotation/index.ts
30
- var quotation_exports = {};
31
- __export(quotation_exports, {
32
- QuotationModule: () => QuotationModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(quotation_exports);
35
- var import_lodash_es = require("lodash-es");
36
- var import_dayjs = __toESM(require("dayjs"));
37
- var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
38
- var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
39
- var import_BaseModule = require("../../../modules/BaseModule");
40
- var import_types = require("./types");
41
- var import_getDateIsInSchedule = require("../../../modules/Schedule/getDateIsInSchedule");
42
- import_dayjs.default.extend(import_isSameOrBefore.default);
43
- import_dayjs.default.extend(import_isSameOrAfter.default);
44
- var INDEXDB_STORE_NAME = "quotation";
45
- var QuotationModule = class extends import_BaseModule.BaseModule {
6
+ exports.QuotationModule = void 0;
7
+ var _lodashEs = require("lodash-es");
8
+ var _dayjs = _interopRequireDefault(require("dayjs"));
9
+ var _isSameOrBefore = _interopRequireDefault(require("dayjs/plugin/isSameOrBefore"));
10
+ var _isSameOrAfter = _interopRequireDefault(require("dayjs/plugin/isSameOrAfter"));
11
+ var _BaseModule = require("../../../modules/BaseModule");
12
+ var _types = require("./types");
13
+ var _getDateIsInSchedule = require("../../../modules/Schedule/getDateIsInSchedule");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ _dayjs.default.extend(_isSameOrBefore.default);
16
+ _dayjs.default.extend(_isSameOrAfter.default);
17
+
18
+ /**
19
+ * IndexDB 存储名称
20
+ */
21
+ const INDEXDB_STORE_NAME = 'quotation';
22
+
23
+ /**
24
+ * 报价单模块 - 用于管理报价单数据和计算商品价格
25
+ */
26
+ class QuotationModule extends _BaseModule.BaseModule {
27
+ defaultName = 'quotation';
28
+ defaultVersion = '1.0.0';
29
+ request;
30
+ store;
31
+ dbManager; // IndexDBManager 实例
32
+ scheduleResolver;
46
33
  constructor(name, version) {
47
34
  super(name, version);
48
- this.defaultName = "quotation";
49
- this.defaultVersion = "1.0.0";
50
35
  }
51
36
  async initialize(core, options) {
52
- var _a;
53
37
  this.core = core;
54
- this.store = options == null ? void 0 : options.store;
55
- if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.quotationList)) {
56
- this.store.quotationList = options == null ? void 0 : options.initialState.quotationList;
57
- this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
38
+ this.store = options?.store;
39
+ if (Array.isArray(options?.initialState?.quotationList)) {
40
+ this.store.quotationList = options?.initialState.quotationList;
41
+ this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
58
42
  } else {
59
43
  this.store.quotationList = [];
60
44
  }
61
- this.request = core.getPlugin("request");
45
+
46
+ // 获取依赖的插件
47
+ this.request = core.getPlugin('request');
62
48
  if (!this.request) {
63
- throw new Error("QuotationModule 需要 request 插件支持");
49
+ throw new Error('QuotationModule 需要 request 插件支持');
64
50
  }
65
- const appPlugin = core.getPlugin("app");
51
+
52
+ // 获取并存储 dbManager
53
+ const appPlugin = core.getPlugin('app');
66
54
  if (appPlugin) {
67
55
  const app = appPlugin.getApp();
68
56
  this.dbManager = app.dbManager;
69
- if (this.dbManager) {
70
- console.log("[Quotation] IndexDB Manager 已初始化");
71
- } else {
72
- console.warn("[Quotation] IndexDB Manager 未找到");
57
+ if (this.dbManager) {} else {
58
+ console.warn('[Quotation] IndexDB Manager 未找到');
73
59
  }
74
60
  }
75
61
  }
62
+
76
63
  /**
77
64
  * 加载报价单列表(从服务器)
78
65
  * TODO: 接口地址待定
79
66
  */
80
67
  async loadQuotationList() {
81
- var _a;
82
68
  try {
83
- const response = await this.request.get(
84
- `/quotation`,
85
- {
86
- num: 999,
87
- skip: 1,
88
- status: "published"
89
- }
90
- );
91
- const quotationList = ((_a = response.data) == null ? void 0 : _a.list) || [];
69
+ // TODO: 替换为实际的接口地址
70
+ const response = await this.request.get(`/quotation`, {
71
+ num: 999,
72
+ skip: 1,
73
+ status: 'published'
74
+ });
75
+ const quotationList = response.data?.list || [];
76
+
77
+ // 保存到 IndexDB
92
78
  await this.saveQuotationToIndexDB(quotationList);
93
79
  await this.setQuotationList(quotationList);
94
80
  return quotationList;
95
81
  } catch (error) {
96
- console.error("[Quotation] 加载报价单数据失败:", error);
82
+ console.error('[Quotation] 加载报价单数据失败:', error);
97
83
  return [];
98
84
  }
99
85
  }
86
+
100
87
  /**
101
88
  * 设置报价单列表
102
89
  */
103
90
  async setQuotationList(quotationList) {
104
91
  this.store.quotationList = quotationList;
105
- await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, quotationList);
92
+ await this.core.effects.emit(_types.QuotationHooks.onQuotationLoaded, quotationList);
106
93
  }
94
+
107
95
  /**
108
96
  * 获取报价单列表
109
97
  */
@@ -111,52 +99,45 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
111
99
  return this.store.quotationList;
112
100
  }
113
101
  async loadQuotations(params) {
114
- var _a;
115
102
  if (Array.isArray(this.store.quotationList) && this.store.quotationList.length > 0) {
116
- this.store.quotationList.sort(
117
- (a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0)
118
- );
103
+ this.store.quotationList.sort((a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0));
119
104
  return;
120
105
  }
121
106
  const query = {};
122
- if (params == null ? void 0 : params.channel)
123
- query.channel = params.channel;
124
- if ((params == null ? void 0 : params.channel) === "online_store")
125
- query.channel = "online-store";
126
- const res = await this.request.get(
127
- "/quotation/available",
128
- query,
129
- { useCache: false, osServer: true }
130
- );
131
- const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
107
+ if (params?.channel) query.channel = params.channel;
108
+ if (params?.channel === 'online_store') query.channel = 'online-store';
109
+ const res = await this.request.get('/quotation/available', query, {
110
+ useCache: false,
111
+ osServer: true
112
+ });
113
+ const list = res?.data?.list || res?.list || [];
132
114
  list.sort((a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0));
133
115
  this.store.quotationList = list;
134
- await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, this.store.quotationList);
116
+ await this.core.effects.emit(_types.QuotationHooks.onQuotationLoaded, this.store.quotationList);
135
117
  }
136
118
  setScheduleResolver(resolver) {
137
119
  this.scheduleResolver = resolver;
138
120
  }
139
121
  getPriceForProduct(params) {
140
- var _a;
141
- return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.price) ?? null;
122
+ return this.getQuotationMatchForProduct(params)?.price ?? null;
142
123
  }
143
124
  getQuotationMatchForProduct(params) {
144
- const { productId, variantId, datetime, channel, customer_id } = params;
125
+ const {
126
+ productId,
127
+ variantId,
128
+ datetime,
129
+ channel,
130
+ customer_id
131
+ } = params;
145
132
  for (const quotation of this.store.quotationList) {
146
- if (!this.isQuotationVisibleForChannel(quotation, channel))
147
- continue;
148
- if (!this.isQuotationVisibleForCustomer(quotation, customer_id))
149
- continue;
150
- if (!this.isQuotationActiveAt(quotation, datetime))
151
- continue;
133
+ if (!this.isQuotationVisibleForChannel(quotation, channel)) continue;
134
+ if (!this.isQuotationVisibleForCustomer(quotation, customer_id)) continue;
135
+ if (!this.isQuotationActiveAt(quotation, datetime)) continue;
152
136
  const match = this.findProductData(quotation, productId, variantId);
153
- if (!match)
154
- continue;
137
+ if (!match) continue;
155
138
  const value = match.value ?? match.final_price ?? match.discount_value;
156
- if (Number(value) === 0)
157
- continue;
158
- if (value === void 0 || value === null || value === "")
159
- continue;
139
+ if (Number(value) === 0) continue;
140
+ if (value === undefined || value === null || value === '') continue;
160
141
  return {
161
142
  price: String(value),
162
143
  quotationShelfId: Number(quotation.id) || 0
@@ -165,28 +146,25 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
165
146
  return null;
166
147
  }
167
148
  getQuotationShelfId(params) {
168
- var _a;
169
- return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.quotationShelfId) ?? 0;
149
+ return this.getQuotationMatchForProduct(params)?.quotationShelfId ?? 0;
170
150
  }
171
151
  getQuotationCustomerScopeInfo() {
172
- const customerById = /* @__PURE__ */ new Map();
173
- const quotationScopes = this.store.quotationList.filter((quotation) => Array.isArray(quotation == null ? void 0 : quotation.customer) && quotation.customer.length > 0).map((quotation) => {
152
+ const customerById = new Map();
153
+ const quotationScopes = this.store.quotationList.filter(quotation => Array.isArray(quotation?.customer) && quotation.customer.length > 0).map(quotation => {
174
154
  const customerIds = [];
175
155
  const customers = [];
176
- const localSeen = /* @__PURE__ */ new Set();
177
- (quotation.customer || []).forEach((customer) => {
178
- const customerId = this.normalizeCustomerId(customer == null ? void 0 : customer.id);
179
- if (!customerId || localSeen.has(customerId))
180
- return;
156
+ const localSeen = new Set();
157
+ (quotation.customer || []).forEach(customer => {
158
+ const customerId = this.normalizeCustomerId(customer?.id);
159
+ if (!customerId || localSeen.has(customerId)) return;
181
160
  localSeen.add(customerId);
182
161
  customerIds.push(customerId);
183
162
  customers.push(customer);
184
- if (!customerById.has(customerId))
185
- customerById.set(customerId, customer);
163
+ if (!customerById.has(customerId)) customerById.set(customerId, customer);
186
164
  });
187
165
  return {
188
166
  quotationId: Number(quotation.id),
189
- quotationName: String(quotation.name || ""),
167
+ quotationName: String(quotation.name || ''),
190
168
  customerIds,
191
169
  customers
192
170
  };
@@ -206,88 +184,72 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
206
184
  */
207
185
  async clear() {
208
186
  this.store.quotationList = [];
187
+
188
+ // 同时清空 IndexDB 中的数据
209
189
  if (this.dbManager) {
210
190
  try {
211
191
  await this.dbManager.clear(INDEXDB_STORE_NAME);
212
- console.log("[Quotation] IndexDB 缓存已清空");
213
192
  } catch (error) {
214
- console.error("[Quotation] 清空 IndexDB 缓存失败:", error);
193
+ console.error('[Quotation] 清空 IndexDB 缓存失败:', error);
215
194
  }
216
195
  }
217
- console.log("[Quotation] 缓存已清空");
218
196
  }
219
197
  normalizeCustomerId(customerId) {
220
- if (customerId === void 0 || customerId === null || customerId === "")
221
- return null;
198
+ if (customerId === undefined || customerId === null || customerId === '') return null;
222
199
  return String(customerId);
223
200
  }
224
201
  hasValidCustomerId(customerId) {
225
- if (customerId === void 0 || customerId === null || customerId === "")
226
- return false;
202
+ if (customerId === undefined || customerId === null || customerId === '') return false;
227
203
  return Number(customerId) > 0;
228
204
  }
229
205
  isQuotationVisibleForCustomer(quotation, customerId) {
230
206
  const customers = quotation.customer || [];
231
- if (!Array.isArray(customers) || customers.length === 0)
232
- return true;
233
- if (!this.hasValidCustomerId(customerId))
234
- return false;
235
- return customers.some((customer) => String(customer.id) === String(customerId));
207
+ if (!Array.isArray(customers) || customers.length === 0) return true;
208
+ if (!this.hasValidCustomerId(customerId)) return false;
209
+ return customers.some(customer => String(customer.id) === String(customerId));
236
210
  }
237
211
  isQuotationVisibleForChannel(quotation, channel) {
238
- if (!channel)
239
- return true;
240
- const normalizedChannel = channel === "online_store" ? "online-store" : channel;
212
+ if (!channel) return true;
213
+ const normalizedChannel = channel === 'online_store' ? 'online-store' : channel;
241
214
  const channels = quotation.channel;
242
- if (!Array.isArray(channels) || channels.length === 0)
243
- return true;
244
- return channels.some((item) => String(item) === normalizedChannel);
215
+ if (!Array.isArray(channels) || channels.length === 0) return true;
216
+ return channels.some(item => String(item) === normalizedChannel);
245
217
  }
246
218
  isQuotationActiveAt(quotation, datetime) {
247
219
  const quotationSchedules = Array.isArray(quotation.schedule) ? quotation.schedule : [];
248
220
  const scheduleIds = Array.isArray(quotation.schedule_ids) ? quotation.schedule_ids : [];
249
- if (!quotationSchedules.length && !scheduleIds.length)
250
- return false;
221
+ if (!quotationSchedules.length && !scheduleIds.length) return false;
251
222
  const scheduleItems = [];
252
- quotationSchedules.forEach((schedule) => {
253
- var _a;
254
- const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, schedule.id);
223
+ quotationSchedules.forEach(schedule => {
224
+ const full = this.scheduleResolver?.(schedule.id);
255
225
  if (full) {
256
226
  scheduleItems.push(full);
257
227
  return;
258
228
  }
259
- if (this.scheduleResolver)
260
- return;
229
+ if (this.scheduleResolver) return;
261
230
  scheduleItems.push({
262
231
  ...schedule,
263
- repeat_type: schedule.repeat_type || "none",
232
+ repeat_type: schedule.repeat_type || 'none',
264
233
  repeat_rule: schedule.repeat_rule || null,
265
234
  time_slot: schedule.time_slot || []
266
235
  });
267
236
  });
268
- scheduleIds.forEach((id) => {
269
- var _a;
270
- const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, id);
271
- if (full)
272
- scheduleItems.push(full);
237
+ scheduleIds.forEach(id => {
238
+ const full = this.scheduleResolver?.(id);
239
+ if (full) scheduleItems.push(full);
273
240
  });
274
- if (!scheduleItems.length)
275
- return false;
276
- return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
241
+ if (!scheduleItems.length) return false;
242
+ return (0, _getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
277
243
  }
278
244
  findProductData(quotation, productId, variantId) {
279
245
  const productData = Array.isArray(quotation.product_data) ? quotation.product_data : Array.isArray(quotation.product_prices) ? quotation.product_prices : [];
280
246
  if (variantId && variantId !== 0) {
281
- const variantMatch = productData.find(
282
- (item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === variantId
283
- );
284
- if (variantMatch)
285
- return variantMatch;
247
+ const variantMatch = productData.find(item => Number(item.product_id) === productId && Number(item.variant_id || 0) === variantId);
248
+ if (variantMatch) return variantMatch;
286
249
  }
287
- return productData.find(
288
- (item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === 0
289
- );
250
+ return productData.find(item => Number(item.product_id) === productId && Number(item.variant_id || 0) === 0);
290
251
  }
252
+
291
253
  /**
292
254
  * 从 IndexDB 加载报价单数据
293
255
  * @private
@@ -297,13 +259,15 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
297
259
  return [];
298
260
  }
299
261
  try {
262
+ // 直接获取所有报价单记录
300
263
  const quotationList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
301
264
  return quotationList || [];
302
265
  } catch (error) {
303
- console.error("[Quotation] 从 IndexDB 读取数据失败:", error);
266
+ console.error('[Quotation] 从 IndexDB 读取数据失败:', error);
304
267
  return [];
305
268
  }
306
269
  }
270
+
307
271
  /**
308
272
  * 保存报价单数据到 IndexDB
309
273
  * @private
@@ -313,43 +277,44 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
313
277
  return;
314
278
  }
315
279
  try {
280
+ // 先清空现有的报价单数据
316
281
  await this.dbManager.clear(INDEXDB_STORE_NAME);
317
- const savePromises = quotationList.map(
318
- (quotation) => this.dbManager.add(INDEXDB_STORE_NAME, quotation)
319
- );
282
+
283
+ // 逐个保存报价单(每个报价单是独立的记录)
284
+ const savePromises = quotationList.map(quotation => this.dbManager.add(INDEXDB_STORE_NAME, quotation));
320
285
  await Promise.all(savePromises);
321
- console.log(`[Quotation] 已将 ${quotationList.length} 条报价单数据保存到 IndexDB`);
322
286
  } catch (error) {
323
- console.error("[Quotation] 保存数据到 IndexDB 失败:", error);
287
+ console.error('[Quotation] 保存数据到 IndexDB 失败:', error);
324
288
  }
325
289
  }
290
+
326
291
  /**
327
292
  * 预加载模块数据(统一接口)
328
293
  * 在模块注册后自动调用
329
294
  */
330
295
  async preload() {
331
- console.log("[Quotation] 开始预加载数据...");
332
296
  try {
297
+ // 1. 尝试从 IndexDB 加载数据
333
298
  const cachedData = await this.loadQuotationFromIndexDB();
334
299
  if (cachedData && cachedData.length > 0) {
335
- console.log(`[Quotation] IndexDB 加载了 ${cachedData.length} 条报价单数据`);
336
- this.store.quotationList = (0, import_lodash_es.cloneDeep)(cachedData);
337
- this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
300
+ // 将缓存数据放入 store
301
+ this.store.quotationList = (0, _lodashEs.cloneDeep)(cachedData);
302
+ this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
338
303
  return;
339
304
  }
340
- console.log("[Quotation] IndexDB 中没有缓存数据,从服务器加载...");
341
305
  } catch (error) {
342
- console.warn("[Quotation] 从 IndexDB 加载数据失败:", error);
306
+ console.warn('[Quotation] 从 IndexDB 加载数据失败:', error);
343
307
  }
308
+
309
+ // 2. 如果 IndexDB 中没有数据,从服务器加载
344
310
  const quotationList = await this.loadQuotationList();
311
+
312
+ // 3. 将服务器数据保存到 IndexDB 和 store
345
313
  if (quotationList && quotationList.length > 0) {
346
314
  await this.saveQuotationToIndexDB(quotationList);
347
- this.store.quotationList = (0, import_lodash_es.cloneDeep)(quotationList);
348
- this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
315
+ this.store.quotationList = (0, _lodashEs.cloneDeep)(quotationList);
316
+ this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
349
317
  }
350
318
  }
351
- };
352
- // Annotate the CommonJS export names for ESM import in node:
353
- 0 && (module.exports = {
354
- QuotationModule
355
- });
319
+ }
320
+ exports.QuotationModule = QuotationModule;
@@ -1,33 +1,23 @@
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/quotation/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- QuotationHooks: () => QuotationHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var QuotationHooks = /* @__PURE__ */ ((QuotationHooks2) => {
26
- QuotationHooks2["onQuotationLoaded"] = "quotation:onQuotationLoaded";
27
- QuotationHooks2["onQuotationChanged"] = "quotation:onQuotationChanged";
28
- return QuotationHooks2;
29
- })(QuotationHooks || {});
30
- // Annotate the CommonJS export names for ESM import in node:
31
- 0 && (module.exports = {
32
- QuotationHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
6
+ exports.QuotationHooks = void 0;
7
+ /**
8
+ * 报价单模块状态
9
+ */
10
+ /**
11
+ * 报价单数据结构
12
+ */
13
+ /**
14
+ * 报价单商品价格配置
15
+ */
16
+ /**
17
+ * 报价单模块钩子
18
+ */
19
+ let QuotationHooks = exports.QuotationHooks = /*#__PURE__*/function (QuotationHooks) {
20
+ QuotationHooks["onQuotationLoaded"] = "quotation:onQuotationLoaded";
21
+ QuotationHooks["onQuotationChanged"] = "quotation:onQuotationChanged";
22
+ return QuotationHooks;
23
+ }({});