@pisell/pisellos 2.3.74 → 2.3.76

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 (283) 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.d.ts +1 -1
  11. package/dist/modules/Order/index.js +75 -91
  12. package/dist/modules/Order/types.d.ts +3 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/plugins/request.js +1 -4
  19. package/dist/plugins/window.js +2 -6
  20. package/dist/server/index.js +97 -129
  21. package/dist/server/modules/menu/index.js +32 -41
  22. package/dist/server/modules/order/index.js +2 -4
  23. package/dist/server/modules/products/index.js +24 -42
  24. package/dist/server/modules/quotation/index.js +29 -38
  25. package/dist/server/modules/resource/index.js +3 -4
  26. package/dist/server/modules/schedule/index.js +27 -35
  27. package/dist/server/utils/product.js +0 -1
  28. package/dist/solution/BaseSales/index.js +100 -72
  29. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  30. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  31. package/dist/solution/BookingByStep/index.js +7 -59
  32. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  33. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  34. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  35. package/dist/solution/BookingTicket/index.js +0 -2
  36. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  37. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  38. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  39. package/dist/solution/BuyTickets/index.js +9 -12
  40. package/dist/solution/Checkout/index.js +177 -252
  41. package/dist/solution/Checkout/utils/index.js +4 -16
  42. package/dist/solution/RegisterAndLogin/index.js +30 -76
  43. package/dist/solution/ScanOrder/index.js +50 -60
  44. package/dist/solution/ShopDiscount/index.js +2 -7
  45. package/dist/solution/VenueBooking/index.js +45 -55
  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 +134 -134
  50. package/lib/effects/index.js +46 -57
  51. package/lib/index.js +82 -49
  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 +91 -69
  65. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  66. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  67. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  68. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  69. package/lib/model/strategy/adapter/type.js +4 -16
  70. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  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 +588 -378
  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 +23 -42
  86. package/lib/modules/BookingContext/index.js +158 -136
  87. package/lib/modules/BookingContext/types.js +46 -32
  88. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  89. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  90. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  91. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  92. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  93. package/lib/modules/BookingContext/utils/index.js +124 -41
  94. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  95. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  96. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  97. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  98. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  99. package/lib/modules/BookingContext/utils/resources.js +209 -167
  100. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  101. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  102. package/lib/modules/Cart/index.js +170 -124
  103. package/lib/modules/Cart/types.js +46 -51
  104. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  105. package/lib/modules/Cart/utils/cartDate.js +56 -61
  106. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  107. package/lib/modules/Cart/utils/cartNote.js +27 -32
  108. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  109. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  110. package/lib/modules/Cart/utils/cartResource.js +70 -78
  111. package/lib/modules/Cart/utils/changePrice.js +22 -50
  112. package/lib/modules/Cart/utils/index.js +106 -48
  113. package/lib/modules/Customer/constants.js +13 -34
  114. package/lib/modules/Customer/index.js +235 -172
  115. package/lib/modules/Customer/types.js +38 -35
  116. package/lib/modules/Date/index.js +116 -115
  117. package/lib/modules/Date/types.js +16 -28
  118. package/lib/modules/Date/utils.js +174 -123
  119. package/lib/modules/Discount/index.js +122 -127
  120. package/lib/modules/Discount/types.js +9 -31
  121. package/lib/modules/Guests/index.js +30 -56
  122. package/lib/modules/Guests/types.js +23 -33
  123. package/lib/modules/Holder/index.js +209 -189
  124. package/lib/modules/Holder/types.js +4 -16
  125. package/lib/modules/Holder/utils.js +20 -49
  126. package/lib/modules/OpenData/index.js +70 -76
  127. package/lib/modules/OpenData/types.js +4 -16
  128. package/lib/modules/OpenData/utils.js +44 -78
  129. package/lib/modules/Order/index.d.ts +1 -1
  130. package/lib/modules/Order/index.js +1733 -2121
  131. package/lib/modules/Order/payment-utils.js +77 -120
  132. package/lib/modules/Order/types.d.ts +3 -1
  133. package/lib/modules/Order/types.js +88 -35
  134. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  135. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  136. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  137. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  138. package/lib/modules/Order/utils.js +814 -647
  139. package/lib/modules/Payment/cash.js +20 -33
  140. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  141. package/lib/modules/Payment/eftpos.js +16 -30
  142. package/lib/modules/Payment/index.js +532 -399
  143. package/lib/modules/Payment/mx51.js +1 -0
  144. package/lib/modules/Payment/types.js +230 -108
  145. package/lib/modules/Payment/utils.js +52 -51
  146. package/lib/modules/Payment/walletpass.js +485 -660
  147. package/lib/modules/Product/index.js +51 -46
  148. package/lib/modules/Product/types.js +4 -16
  149. package/lib/modules/Product/utils.js +32 -33
  150. package/lib/modules/ProductList/index.js +113 -123
  151. package/lib/modules/ProductList/types.js +9 -31
  152. package/lib/modules/Quotation/index.js +81 -118
  153. package/lib/modules/Quotation/types.js +4 -16
  154. package/lib/modules/Resource/index.js +27 -59
  155. package/lib/modules/Resource/types.js +22 -32
  156. package/lib/modules/Resource/utils.js +30 -38
  157. package/lib/modules/ResourcePlanner/index.js +25 -23
  158. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  159. package/lib/modules/ResourcePlanner/planner.js +589 -770
  160. package/lib/modules/ResourcePlanner/types.js +10 -29
  161. package/lib/modules/Rules/index.js +1218 -959
  162. package/lib/modules/Rules/types.js +17 -40
  163. package/lib/modules/SalesSummary/index.js +85 -90
  164. package/lib/modules/SalesSummary/types.js +4 -16
  165. package/lib/modules/SalesSummary/utils.js +355 -430
  166. package/lib/modules/ScanOrderLogger/index.js +59 -79
  167. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  168. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  169. package/lib/modules/ScanOrderLogger/types.js +4 -16
  170. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  171. package/lib/modules/Schedule/index.js +100 -114
  172. package/lib/modules/Schedule/type.js +4 -16
  173. package/lib/modules/Schedule/types.js +4 -16
  174. package/lib/modules/Schedule/utils.js +433 -291
  175. package/lib/modules/Step/index.js +40 -52
  176. package/lib/modules/Step/tyeps.js +4 -16
  177. package/lib/modules/Summary/index.js +66 -71
  178. package/lib/modules/Summary/types.js +4 -16
  179. package/lib/modules/Summary/utils.js +773 -418
  180. package/lib/modules/SurchargeList/index.js +46 -60
  181. package/lib/modules/SurchargeList/types.js +4 -16
  182. package/lib/modules/index.js +245 -63
  183. package/lib/plugins/app.js +4 -16
  184. package/lib/plugins/index.js +36 -25
  185. package/lib/plugins/request.js +137 -126
  186. package/lib/plugins/shopStore.js +4 -16
  187. package/lib/plugins/user.js +4 -16
  188. package/lib/plugins/window.js +171 -179
  189. package/lib/server/index.js +3050 -2665
  190. package/lib/server/modules/floor-plan/index.js +118 -134
  191. package/lib/server/modules/floor-plan/types.js +15 -30
  192. package/lib/server/modules/index.js +106 -68
  193. package/lib/server/modules/menu/index.js +142 -122
  194. package/lib/server/modules/menu/types.js +18 -31
  195. package/lib/server/modules/order/index.js +784 -1002
  196. package/lib/server/modules/order/types.js +122 -33
  197. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  198. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  199. package/lib/server/modules/payment/index.js +59 -83
  200. package/lib/server/modules/payment/types.js +4 -16
  201. package/lib/server/modules/products/index.js +583 -471
  202. package/lib/server/modules/products/types.js +44 -34
  203. package/lib/server/modules/quotation/index.js +137 -172
  204. package/lib/server/modules/quotation/types.js +21 -31
  205. package/lib/server/modules/resource/index.js +220 -186
  206. package/lib/server/modules/resource/types.js +42 -33
  207. package/lib/server/modules/schedule/index.js +135 -123
  208. package/lib/server/modules/schedule/types.js +14 -21
  209. package/lib/server/modules/schedule/utils.js +334 -163
  210. package/lib/server/types.js +4 -16
  211. package/lib/server/utils/index.js +25 -23
  212. package/lib/server/utils/product.js +196 -139
  213. package/lib/server/utils/schedule.js +34 -41
  214. package/lib/server/utils/small-ticket.js +479 -456
  215. package/lib/server/utils/time.js +40 -49
  216. package/lib/solution/BaseSales/index.js +1220 -1412
  217. package/lib/solution/BaseSales/types.js +42 -38
  218. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  219. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  220. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  221. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  222. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  223. package/lib/solution/BaseSales/utils.js +158 -143
  224. package/lib/solution/BookingByStep/index.js +1527 -1340
  225. package/lib/solution/BookingByStep/types.js +40 -99
  226. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  227. package/lib/solution/BookingByStep/utils/products.js +42 -52
  228. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  229. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  230. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  231. package/lib/solution/BookingTicket/index.js +607 -522
  232. package/lib/solution/BookingTicket/types.js +99 -77
  233. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  234. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  235. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  236. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  237. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  238. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  239. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  240. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  241. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  242. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  243. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  244. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  245. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  246. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  247. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  248. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  249. package/lib/solution/BuyTickets/index.js +67 -70
  250. package/lib/solution/BuyTickets/types.js +22 -38
  251. package/lib/solution/Checkout/index.js +1451 -1158
  252. package/lib/solution/Checkout/types.js +91 -61
  253. package/lib/solution/Checkout/utils/index.js +228 -156
  254. package/lib/solution/PlaceOrder/index.js +55 -0
  255. package/lib/solution/RegisterAndLogin/config.js +493 -460
  256. package/lib/solution/RegisterAndLogin/index.js +633 -630
  257. package/lib/solution/RegisterAndLogin/types.js +189 -76
  258. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  259. package/lib/solution/Sales/index.js +328 -324
  260. package/lib/solution/Sales/types.js +27 -33
  261. package/lib/solution/ScanOrder/index.js +832 -864
  262. package/lib/solution/ScanOrder/types.js +33 -34
  263. package/lib/solution/ScanOrder/utils.js +409 -374
  264. package/lib/solution/ShopDiscount/index.js +226 -232
  265. package/lib/solution/ShopDiscount/types.js +15 -37
  266. package/lib/solution/ShopDiscount/utils.js +300 -172
  267. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  268. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  269. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  270. package/lib/solution/VenueBooking/index.js +811 -879
  271. package/lib/solution/VenueBooking/types.js +19 -39
  272. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  273. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  274. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  275. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  276. package/lib/solution/VenueBooking/utils.js +130 -67
  277. package/lib/solution/index.js +124 -41
  278. package/lib/store/createStore.js +32 -29
  279. package/lib/types/index.js +4 -16
  280. package/lib/utils/payment-number.js +26 -46
  281. package/lib/utils/task.js +36 -36
  282. package/lib/utils/watch.js +81 -47
  283. 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
+ }({});