@pisell/pisellos 0.0.567 → 0.0.568

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/adapter/walletPass/utils.js +0 -3
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +1 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +14 -41
  13. package/dist/modules/Payment/index.js +142 -270
  14. package/dist/modules/Payment/walletpass.js +4 -5
  15. package/dist/modules/Rules/index.js +0 -7
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/plugins/request.js +1 -4
  19. package/dist/plugins/window.js +2 -6
  20. package/dist/server/index.js +88 -121
  21. package/dist/server/modules/menu/index.js +32 -41
  22. package/dist/server/modules/products/index.js +29 -49
  23. package/dist/server/modules/quotation/index.js +29 -38
  24. package/dist/server/modules/resource/index.js +3 -4
  25. package/dist/server/modules/schedule/index.js +32 -40
  26. package/dist/server/utils/product.js +0 -1
  27. package/dist/solution/BookingByStep/index.d.ts +1 -1
  28. package/dist/solution/BookingByStep/index.js +7 -59
  29. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  30. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  31. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  32. package/dist/solution/BookingTicket/index.d.ts +1 -1
  33. package/dist/solution/BookingTicket/index.js +5 -7
  34. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  35. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  36. package/dist/solution/BuyTickets/index.js +9 -12
  37. package/dist/solution/Checkout/index.js +177 -246
  38. package/dist/solution/Checkout/utils/index.js +4 -16
  39. package/dist/solution/RegisterAndLogin/index.js +30 -76
  40. package/dist/solution/ScanOrder/index.js +50 -60
  41. package/dist/solution/ShopDiscount/index.js +2 -7
  42. package/dist/solution/VenueBooking/index.d.ts +5 -0
  43. package/dist/solution/VenueBooking/index.js +364 -327
  44. package/dist/utils/task.js +15 -18
  45. package/dist/utils/watch.js +0 -1
  46. package/lib/apis/picoding.js +2 -0
  47. package/lib/core/index.js +130 -131
  48. package/lib/effects/index.js +46 -57
  49. package/lib/index.js +92 -53
  50. package/lib/model/index.js +14 -21
  51. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  52. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  53. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  54. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  55. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  56. package/lib/model/strategy/adapter/index.js +100 -64
  57. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  58. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  59. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  60. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  61. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  62. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  63. package/lib/model/strategy/adapter/promotion/evaluator.js +381 -231
  64. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  65. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  66. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  67. package/lib/model/strategy/adapter/type.js +4 -16
  68. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  69. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  70. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  71. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  72. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  73. package/lib/model/strategy/adapter/walletPass/utils.js +652 -402
  74. package/lib/model/strategy/engine.js +270 -168
  75. package/lib/model/strategy/index.js +49 -34
  76. package/lib/model/strategy/strategy-example.js +243 -239
  77. package/lib/model/strategy/type.js +100 -40
  78. package/lib/modules/Account/index.js +39 -53
  79. package/lib/modules/Account/types.js +20 -33
  80. package/lib/modules/AccountList/index.js +116 -154
  81. package/lib/modules/AccountList/types.js +30 -31
  82. package/lib/modules/AccountList/utils.js +18 -30
  83. package/lib/modules/BaseModule.js +22 -45
  84. package/lib/modules/Cart/index.js +170 -124
  85. package/lib/modules/Cart/types.js +46 -51
  86. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  87. package/lib/modules/Cart/utils/cartDate.js +56 -61
  88. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  89. package/lib/modules/Cart/utils/cartNote.js +27 -32
  90. package/lib/modules/Cart/utils/cartProduct.js +306 -241
  91. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  92. package/lib/modules/Cart/utils/cartResource.js +72 -78
  93. package/lib/modules/Cart/utils/changePrice.js +26 -62
  94. package/lib/modules/Cart/utils/index.js +106 -48
  95. package/lib/modules/Customer/constants.js +13 -34
  96. package/lib/modules/Customer/index.js +216 -153
  97. package/lib/modules/Customer/types.js +38 -35
  98. package/lib/modules/Date/index.js +116 -115
  99. package/lib/modules/Date/types.js +16 -28
  100. package/lib/modules/Date/utils.js +174 -123
  101. package/lib/modules/Discount/index.js +117 -113
  102. package/lib/modules/Discount/types.js +9 -31
  103. package/lib/modules/Guests/index.js +30 -56
  104. package/lib/modules/Guests/types.js +23 -33
  105. package/lib/modules/Holder/index.js +209 -189
  106. package/lib/modules/Holder/types.js +4 -16
  107. package/lib/modules/Holder/utils.js +20 -49
  108. package/lib/modules/OpenData/index.js +63 -74
  109. package/lib/modules/OpenData/types.js +4 -16
  110. package/lib/modules/OpenData/utils.js +44 -78
  111. package/lib/modules/Order/index.d.ts +1 -1
  112. package/lib/modules/Order/index.js +332 -320
  113. package/lib/modules/Order/types.js +24 -33
  114. package/lib/modules/Order/utils.js +350 -284
  115. package/lib/modules/Payment/cash.js +20 -33
  116. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  117. package/lib/modules/Payment/eftpos.js +16 -30
  118. package/lib/modules/Payment/index.js +566 -432
  119. package/lib/modules/Payment/mx51.js +1 -0
  120. package/lib/modules/Payment/types.js +216 -107
  121. package/lib/modules/Payment/utils.js +50 -47
  122. package/lib/modules/Payment/walletpass.js +221 -203
  123. package/lib/modules/Product/index.js +51 -46
  124. package/lib/modules/Product/types.js +4 -16
  125. package/lib/modules/Product/utils.js +32 -33
  126. package/lib/modules/ProductList/index.js +111 -110
  127. package/lib/modules/ProductList/types.js +9 -31
  128. package/lib/modules/Quotation/index.js +60 -82
  129. package/lib/modules/Quotation/types.js +4 -16
  130. package/lib/modules/Resource/index.js +27 -59
  131. package/lib/modules/Resource/types.js +22 -32
  132. package/lib/modules/Resource/utils.js +30 -38
  133. package/lib/modules/Rules/index.js +1172 -872
  134. package/lib/modules/Rules/types.js +17 -40
  135. package/lib/modules/SalesSummary/index.js +59 -68
  136. package/lib/modules/SalesSummary/types.js +4 -16
  137. package/lib/modules/SalesSummary/utils.js +176 -193
  138. package/lib/modules/ScanOrderLogger/index.js +59 -79
  139. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  140. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  141. package/lib/modules/ScanOrderLogger/types.js +4 -16
  142. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -167
  143. package/lib/modules/Schedule/index.js +97 -107
  144. package/lib/modules/Schedule/type.js +4 -16
  145. package/lib/modules/Schedule/types.js +4 -16
  146. package/lib/modules/Schedule/utils.js +433 -291
  147. package/lib/modules/Step/index.js +40 -52
  148. package/lib/modules/Step/tyeps.js +4 -16
  149. package/lib/modules/Summary/index.js +66 -70
  150. package/lib/modules/Summary/types.js +4 -16
  151. package/lib/modules/Summary/utils.js +782 -429
  152. package/lib/modules/index.js +212 -57
  153. package/lib/plugins/app.js +4 -16
  154. package/lib/plugins/index.js +36 -25
  155. package/lib/plugins/request.js +137 -126
  156. package/lib/plugins/shopStore.js +4 -16
  157. package/lib/plugins/user.js +4 -16
  158. package/lib/plugins/window.js +171 -179
  159. package/lib/server/index.js +882 -623
  160. package/lib/server/modules/index.js +85 -59
  161. package/lib/server/modules/menu/index.js +146 -122
  162. package/lib/server/modules/menu/types.js +18 -31
  163. package/lib/server/modules/order/index.js +195 -231
  164. package/lib/server/modules/order/types.js +107 -32
  165. package/lib/server/modules/order/utils/filterBookings.js +174 -140
  166. package/lib/server/modules/order/utils/filterOrders.js +89 -60
  167. package/lib/server/modules/products/index.js +430 -335
  168. package/lib/server/modules/products/types.js +41 -34
  169. package/lib/server/modules/quotation/index.js +76 -77
  170. package/lib/server/modules/quotation/types.js +21 -31
  171. package/lib/server/modules/resource/index.js +216 -187
  172. package/lib/server/modules/resource/types.js +42 -33
  173. package/lib/server/modules/schedule/index.js +134 -119
  174. package/lib/server/modules/schedule/types.js +14 -21
  175. package/lib/server/modules/schedule/utils.js +334 -163
  176. package/lib/server/types.js +4 -16
  177. package/lib/server/utils/index.js +25 -23
  178. package/lib/server/utils/product.js +196 -139
  179. package/lib/server/utils/schedule.js +34 -41
  180. package/lib/server/utils/time.js +40 -49
  181. package/lib/solution/BookingByStep/index.d.ts +1 -1
  182. package/lib/solution/BookingByStep/index.js +1530 -1343
  183. package/lib/solution/BookingByStep/types.js +40 -99
  184. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  185. package/lib/solution/BookingByStep/utils/products.js +42 -52
  186. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  187. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  188. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  189. package/lib/solution/BookingTicket/index.d.ts +1 -1
  190. package/lib/solution/BookingTicket/index.js +147 -122
  191. package/lib/solution/BookingTicket/types.js +38 -64
  192. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +64 -80
  193. package/lib/solution/BookingTicket/utils/scan/handleScan.js +82 -80
  194. package/lib/solution/BookingTicket/utils/scan/index.js +90 -94
  195. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  196. package/lib/solution/BuyTickets/index.js +67 -70
  197. package/lib/solution/BuyTickets/types.js +22 -38
  198. package/lib/solution/Checkout/index.js +1451 -1158
  199. package/lib/solution/Checkout/types.js +91 -61
  200. package/lib/solution/Checkout/utils/index.js +227 -158
  201. package/lib/solution/PlaceOrder/index.js +55 -0
  202. package/lib/solution/RegisterAndLogin/config.js +493 -460
  203. package/lib/solution/RegisterAndLogin/index.js +633 -630
  204. package/lib/solution/RegisterAndLogin/types.js +189 -76
  205. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  206. package/lib/solution/Sales/index.js +218 -200
  207. package/lib/solution/Sales/types.js +27 -33
  208. package/lib/solution/ScanOrder/index.js +803 -840
  209. package/lib/solution/ScanOrder/types.js +34 -34
  210. package/lib/solution/ScanOrder/utils.js +372 -331
  211. package/lib/solution/ShopDiscount/index.js +230 -236
  212. package/lib/solution/ShopDiscount/types.js +15 -37
  213. package/lib/solution/ShopDiscount/utils.js +309 -172
  214. package/lib/solution/VenueBooking/index.d.ts +5 -0
  215. package/lib/solution/VenueBooking/index.js +886 -929
  216. package/lib/solution/VenueBooking/types.js +20 -40
  217. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  218. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  219. package/lib/solution/VenueBooking/utils/slotMerge.js +88 -106
  220. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  221. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  222. package/lib/solution/VenueBooking/utils.js +130 -67
  223. package/lib/solution/index.js +102 -37
  224. package/lib/store/createStore.js +32 -29
  225. package/lib/types/index.js +4 -16
  226. package/lib/utils/task.js +36 -36
  227. package/lib/utils/watch.js +81 -47
  228. package/package.json +2 -1
@@ -1,265 +1,274 @@
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/modules/Discount/index.ts
30
- var Discount_exports = {};
31
- __export(Discount_exports, {
32
- DiscountModule: () => DiscountModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(Discount_exports);
35
- var import_utils = require("../../solution/ShopDiscount/utils");
36
- var import_BaseModule = require("../BaseModule");
37
- var import_types = require("./types");
38
- var import_decimal = __toESM(require("decimal.js"));
39
- var DiscountModule = class extends import_BaseModule.BaseModule {
6
+ exports.DiscountModule = void 0;
7
+ var _utils = require("../../solution/ShopDiscount/utils");
8
+ var _BaseModule = require("../BaseModule");
9
+ var _types = require("./types");
10
+ var _decimal = _interopRequireDefault(require("decimal.js"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ class DiscountModule extends _BaseModule.BaseModule {
13
+ defaultName = 'discount';
14
+ defaultVersion = '1.0.0';
15
+ request;
16
+ window;
17
+ store;
18
+ cacheId;
19
+ openCache = false;
20
+ fatherModule;
40
21
  constructor(name, version) {
41
22
  super(name, version);
42
- this.defaultName = "discount";
43
- this.defaultVersion = "1.0.0";
44
- this.openCache = false;
45
23
  }
46
24
  async initialize(core, options) {
47
- var _a, _b, _c, _d;
48
25
  this.core = core;
49
- this.store = options == null ? void 0 : options.store;
50
- if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.discountList)) {
51
- this.store.discountList = options == null ? void 0 : options.initialState.discountList;
26
+ this.store = options?.store;
27
+ if (Array.isArray(options?.initialState?.discountList)) {
28
+ this.store.discountList = options?.initialState.discountList;
52
29
  } else {
53
30
  this.store.discountList = [];
54
31
  }
55
- if (Array.isArray((_b = options == null ? void 0 : options.initialState) == null ? void 0 : _b.originalDiscountList)) {
56
- this.store.originalDiscountList = options == null ? void 0 : options.initialState.originalDiscountList;
32
+ if (Array.isArray(options?.initialState?.originalDiscountList)) {
33
+ this.store.originalDiscountList = options?.initialState.originalDiscountList;
57
34
  } else {
58
35
  this.store.originalDiscountList = [];
59
36
  }
60
- if ((_c = options == null ? void 0 : options.otherParams) == null ? void 0 : _c.cacheId) {
37
+ if (options?.otherParams?.cacheId) {
61
38
  this.openCache = options.otherParams.openCache;
62
39
  this.cacheId = options.otherParams.cacheId;
63
40
  }
64
- if ((_d = options == null ? void 0 : options.otherParams) == null ? void 0 : _d.fatherModule) {
41
+ if (options?.otherParams?.fatherModule) {
65
42
  this.fatherModule = options.otherParams.fatherModule;
66
43
  }
67
- this.request = core.getPlugin("request");
68
- this.window = core.getPlugin("window");
44
+
45
+ // 获取依赖的插件
46
+ this.request = core.getPlugin('request');
47
+ this.window = core.getPlugin('window');
69
48
  if (!this.request) {
70
- throw new Error("discount模块需要 request 插件支持");
49
+ throw new Error('discount模块需要 request 插件支持');
71
50
  }
72
51
  if (!this.window) {
73
- throw new Error("discount模块需要 window 插件支持");
52
+ throw new Error('discount模块需要 window 插件支持');
74
53
  }
75
54
  }
76
55
  async setDiscountList(discountList) {
77
56
  this.store.discountList = discountList;
78
- await this.core.effects.emit(
79
- import_types.DiscountHooks.OnDiscountListChange,
80
- discountList
81
- );
57
+ await this.core.effects.emit(_types.DiscountHooks.OnDiscountListChange, discountList);
82
58
  }
83
59
  getDiscountList() {
84
60
  return this.store.discountList;
85
61
  }
62
+
86
63
  // 设置原始优惠券列表
87
64
  async setOriginalDiscountList(originalDiscountList) {
88
65
  this.store.originalDiscountList = originalDiscountList;
89
66
  }
67
+
90
68
  // 获取原始优惠券列表
91
69
  getOriginalDiscountList() {
92
70
  return this.store.originalDiscountList || [];
93
71
  }
94
72
  async loadPrepareConfig(params) {
95
- var _a, _b;
96
- const prepareConfig = await this.request.post(
97
- `/order/prepare/config`,
98
- params
99
- );
100
- const goodPassList = this.filterEnabledDiscountList(
101
- [...((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || [], ...((_b = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _b.discount_card_list) || []]
102
- ) || [];
73
+ const prepareConfig = await this.request.post(`/order/prepare/config`, params);
74
+ const goodPassList = this.filterEnabledDiscountList([...(prepareConfig?.data?.good_pass_list || []), ...(prepareConfig?.data?.discount_card_list || [])]) || [];
75
+
76
+ // this.setDiscountList(goodPassList);
77
+
103
78
  return {
104
79
  discountList: goodPassList,
105
- availableWalletIds: this.extractAvailableWalletIds(prepareConfig == null ? void 0 : prepareConfig.data)
80
+ availableWalletIds: this.extractAvailableWalletIds(prepareConfig?.data)
106
81
  };
107
82
  }
108
83
  extractAvailableWalletIds(data) {
109
- const availableWalletList = Array.isArray(data == null ? void 0 : data.avaiable_wallet_list) ? data.avaiable_wallet_list : Array.isArray(data == null ? void 0 : data.available_wallet_list) ? data.available_wallet_list : [];
110
- const availableWalletPassList = Array.isArray(data == null ? void 0 : data.available_wallet_pass_list) ? data.available_wallet_pass_list : [];
111
- const walletIds = availableWalletList.map((item) => Number(item == null ? void 0 : item.id)).filter((id) => Number.isFinite(id) && id > 0);
112
- const walletPassProductIds = availableWalletPassList.map((item) => Number(item == null ? void 0 : item.product_id)).filter((id) => Number.isFinite(id) && id > 0);
113
- return Array.from(/* @__PURE__ */ new Set([...walletIds, ...walletPassProductIds]));
84
+ const availableWalletList = Array.isArray(data?.avaiable_wallet_list) ? data.avaiable_wallet_list : Array.isArray(data?.available_wallet_list) ? data.available_wallet_list : [];
85
+ const availableWalletPassList = Array.isArray(data?.available_wallet_pass_list) ? data.available_wallet_pass_list : [];
86
+ const walletIds = availableWalletList.map(item => Number(item?.id)).filter(id => Number.isFinite(id) && id > 0);
87
+ const walletPassProductIds = availableWalletPassList.map(item => Number(item?.product_id)).filter(id => Number.isFinite(id) && id > 0);
88
+ return Array.from(new Set([...walletIds, ...walletPassProductIds]));
114
89
  }
115
90
  async batchSearch(code, options) {
116
- const { customerId, orderId } = options || {};
91
+ const {
92
+ customerId,
93
+ orderId
94
+ } = options || {};
117
95
  const result = await this.request.get(`/machinecode/batch-search`, {
118
96
  code,
119
97
  translate_flag: 1,
120
- tags: ["good_pass", "product_discount_card"],
98
+ tags: ['good_pass', 'product_discount_card'],
121
99
  // available: 1,
122
100
  relation_product: 1,
123
- with: ["extensionData", "customScheduleSnapshot", "holder.detail"],
101
+ with: ['extensionData', 'customScheduleSnapshot', 'holder.detail'],
124
102
  order_behavior_count: 1,
125
103
  order_behavior_count_customer_id: customerId || 1,
126
104
  unified_status_info_flag: 1,
127
- ...orderId ? { order_behavior_count_order_id: orderId } : {},
105
+ ...(orderId ? {
106
+ order_behavior_count_order_id: orderId
107
+ } : {}),
128
108
  request_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
129
109
  });
130
- const resultDiscountWithReason = this.filterEnabledDiscountListWithReason((result == null ? void 0 : result.data) || []) || [];
110
+ const resultDiscountWithReason = this.filterEnabledDiscountListWithReason(result?.data || []) || [];
131
111
  return resultDiscountWithReason;
132
112
  }
133
113
  async batchSearchByProductIds(productIds) {
134
114
  const result = await this.request.get(`/machinecode/batch-search`, {
135
115
  ids: productIds,
136
116
  translate_flag: 1,
137
- tags: ["good_pass", "product_discount_card"],
117
+ tags: ['good_pass', 'product_discount_card'],
138
118
  relation_product: 1
139
119
  });
140
- return (result == null ? void 0 : result.data) || [];
120
+ return result?.data || [];
141
121
  }
142
122
  filterEnabledDiscountList(discountList) {
143
- return discountList.filter(
144
- (discount) => discount.limit_status === "enable" && new import_decimal.default((discount == null ? void 0 : discount.par_value) || 0).minus(new import_decimal.default((discount == null ? void 0 : discount.used_par_value) || 0)).greaterThan(0) && this.checkUsageCreditsLimit(discount)
145
- );
123
+ return discountList.filter(discount => discount.limit_status === 'enable' && new _decimal.default(discount?.par_value || 0).minus(new _decimal.default(discount?.used_par_value || 0)).greaterThan(0) && this.checkUsageCreditsLimit(discount));
146
124
  }
125
+
147
126
  // 检查使用次数限制
148
127
  checkUsageCreditsLimit(discount) {
128
+ // 如果没有 extension_data,则不需要限制
149
129
  if (!discount.extension_data || discount.extension_data.length === 0) {
150
130
  return true;
151
131
  }
152
- const usageCreditsData = discount.extension_data.find(
153
- (data) => data.field_key === "usage_credits"
154
- );
132
+
133
+ // 查找 field_key 为 usage_credits 的数据
134
+ const usageCreditsData = discount.extension_data.find(data => data.field_key === 'usage_credits');
135
+
136
+ // 如果没有找到 usage_credits 数据,则不需要限制
155
137
  if (!usageCreditsData) {
156
138
  return true;
157
139
  }
158
140
  const value = usageCreditsData.value;
141
+
142
+ // 检查总次数限制
159
143
  if (value.total_credits && value.total_credits > 0) {
160
144
  if ((discount.total_order_behavior_count || 0) >= value.total_credits) {
161
145
  return false;
162
146
  }
163
147
  }
148
+
149
+ // 检查单用户限制
164
150
  if (value.per_user_limit && value.per_user_limit > 0) {
165
151
  if ((discount.customer_order_behavior_count || 0) >= value.per_user_limit) {
166
152
  return false;
167
153
  }
168
154
  }
155
+
156
+ // 检查单日限制
169
157
  if (value.max_per_day && value.max_per_day > 0) {
170
158
  if ((discount.today_order_behavior_count || 0) >= value.max_per_day) {
171
159
  return false;
172
160
  }
173
161
  }
162
+
163
+ // 检查单周限制
174
164
  if (value.max_per_week && value.max_per_week > 0) {
175
165
  if ((discount.week_order_behavior_count || 0) >= value.max_per_week) {
176
166
  return false;
177
167
  }
178
168
  }
169
+
170
+ // 检查单月限制
179
171
  if (value.max_per_month && value.max_per_month > 0) {
180
172
  if ((discount.month_order_behavior_count || 0) >= value.max_per_month) {
181
173
  return false;
182
174
  }
183
175
  }
176
+
177
+ // 所有检查都通过
184
178
  return true;
185
179
  }
180
+
186
181
  // 过滤启用且可用的优惠券,并返回校验失败原因
187
182
  filterEnabledDiscountListWithReason(discountList) {
188
- let lists = discountList.filter((discount) => discount.limit_status === "enable").filter((discount) => {
189
- const remaining = new import_decimal.default((discount == null ? void 0 : discount.par_value) || 0).minus(new import_decimal.default((discount == null ? void 0 : discount.used_par_value) || 0)).greaterThan(0);
183
+ let lists = discountList.filter(discount => discount.limit_status === 'enable').filter(discount => {
184
+ const remaining = new _decimal.default(discount?.par_value || 0).minus(new _decimal.default(discount?.used_par_value || 0)).greaterThan(0);
190
185
  return remaining;
191
- }).map((discount) => {
186
+ }).map(discount => {
192
187
  const limitFailKey = this.checkUsageCreditsLimitWithFailKey(discount);
193
188
  return {
194
189
  ...discount,
195
190
  usageLimitFailKey: limitFailKey
196
191
  };
197
192
  });
198
- const availableLists = lists.filter((item) => !item.usageLimitFailKey && item.unified_available_status !== 0);
199
- const currentFailDiscount = lists.find((item) => item.usageLimitFailKey);
193
+
194
+ // 可用的列表
195
+ const availableLists = lists.filter(item => !item.usageLimitFailKey && item.unified_available_status !== 0);
196
+ // 不可用数据
197
+ const currentFailDiscount = lists.find(item => item.usageLimitFailKey);
200
198
  return {
201
199
  discountList: availableLists,
202
- unavailableReasonKey: currentFailDiscount == null ? void 0 : currentFailDiscount.usageLimitFailKey
200
+ unavailableReasonKey: currentFailDiscount?.usageLimitFailKey
203
201
  };
204
202
  }
203
+
205
204
  // 检查使用次数限制,并返回校验失败原因
206
205
  checkUsageCreditsLimitWithFailKey(discount) {
207
206
  if (!discount.extension_data || discount.extension_data.length === 0) {
208
207
  return null;
209
208
  }
210
- const usageCreditsData = discount.extension_data.find(
211
- (data) => data.field_key === "usage_credits"
212
- );
209
+ const usageCreditsData = discount.extension_data.find(data => data.field_key === 'usage_credits');
213
210
  if (!usageCreditsData) {
214
211
  return null;
215
212
  }
216
213
  const value = usageCreditsData.value;
214
+
215
+ // 总次数限制
217
216
  if (value.total_credits && value.total_credits > 0) {
218
217
  if ((discount.total_order_behavior_count || 0) >= value.total_credits) {
219
- return "total_credits";
218
+ return 'total_credits';
220
219
  }
221
220
  }
221
+
222
+ // 单用户限制
222
223
  if (value.per_user_limit && value.per_user_limit > 0) {
223
224
  if ((discount.customer_order_behavior_count || 0) >= value.per_user_limit) {
224
- return "per_user_limit";
225
+ return 'per_user_limit';
225
226
  }
226
227
  }
228
+
229
+ // 单日限制
227
230
  if (value.max_per_day && value.max_per_day > 0) {
228
231
  if ((discount.today_order_behavior_count || 0) >= value.max_per_day) {
229
- return "max_per_day";
232
+ return 'max_per_day';
230
233
  }
231
234
  }
235
+
236
+ // 单周限制
232
237
  if (value.max_per_week && value.max_per_week > 0) {
233
238
  if ((discount.week_order_behavior_count || 0) >= value.max_per_week) {
234
- return "max_per_week";
239
+ return 'max_per_week';
235
240
  }
236
241
  }
242
+
243
+ // 单月限制
237
244
  if (value.max_per_month && value.max_per_month > 0) {
238
245
  if ((discount.month_order_behavior_count || 0) >= value.max_per_month) {
239
- return "max_per_month";
246
+ return 'max_per_month';
240
247
  }
241
248
  }
249
+
250
+ // 全部通过
242
251
  return null;
243
252
  }
253
+
244
254
  // 根据productIds去重
245
255
  uniqueByProductId(discountList) {
246
- return (0, import_utils.uniqueById)(discountList, "product_id");
256
+ return (0, _utils.uniqueById)(discountList, 'product_id');
247
257
  }
248
258
  filterDiscountListByProductIds(discountList, productIds) {
249
- return discountList.filter((discount) => {
259
+ return discountList.filter(discount => {
250
260
  const applicableProductIds = discount.applicableProductIds || [];
251
- return applicableProductIds.some((id) => productIds.includes(id));
261
+ return applicableProductIds.some(id => productIds.includes(id));
252
262
  });
253
263
  }
254
264
  calcDiscountApplicableProductTotalPrice(discount) {
255
- if (discount == null ? void 0 : discount.savedAmount) {
256
- return (discount == null ? void 0 : discount.savedAmount) || 0;
265
+ if (discount?.savedAmount) {
266
+ return discount?.savedAmount || 0;
257
267
  }
258
268
  if (discount.appliedProductDetails) {
259
269
  return discount.appliedProductDetails.reduce((total, product) => {
260
- var _a, _b;
261
- const price = new import_decimal.default(((_a = product == null ? void 0 : product.discount) == null ? void 0 : _a.fixed_amount) || 0).mul((product == null ? void 0 : product._num) || 1);
262
- return new import_decimal.default(total).plus(price).add(((_b = product == null ? void 0 : product.metadata) == null ? void 0 : _b.product_discount_difference) || 0).toNumber();
270
+ const price = new _decimal.default(product?.discount?.fixed_amount || 0).mul(product?._num || 1);
271
+ return new _decimal.default(total).plus(price).add(product?.metadata?.product_discount_difference || 0).toNumber();
263
272
  }, 0);
264
273
  }
265
274
  }
@@ -267,12 +276,10 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
267
276
  this.store.discountList = [];
268
277
  this.core.effects.offByModuleDestroy(this.name);
269
278
  await this.core.effects.emit(`${this.name}:onDestroy`, {});
270
- console.log("[Discount] 已销毁");
271
279
  }
272
280
  async clear() {
273
281
  this.store.discountList = [];
274
282
  this.store.originalDiscountList = [];
275
- console.log("[Discount] clear");
276
283
  }
277
284
  storeChange() {
278
285
  if (this.openCache) {
@@ -280,12 +287,9 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
280
287
  cacheId: this.cacheId,
281
288
  fatherModule: this.fatherModule,
282
289
  store: this.store,
283
- cacheKey: ["discountList"]
290
+ cacheKey: ['discountList']
284
291
  });
285
292
  }
286
293
  }
287
- };
288
- // Annotate the CommonJS export names for ESM import in node:
289
- 0 && (module.exports = {
290
- DiscountModule
291
- });
294
+ }
295
+ exports.DiscountModule = DiscountModule;
@@ -1,33 +1,11 @@
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/modules/Discount/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- DiscountHooks: () => DiscountHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var DiscountHooks = /* @__PURE__ */ ((DiscountHooks2) => {
26
- DiscountHooks2["OnDiscountListChange"] = "discount:onDiscountListChange";
27
- DiscountHooks2["OnDestroy"] = "discount:onDestroy";
28
- return DiscountHooks2;
29
- })(DiscountHooks || {});
30
- // Annotate the CommonJS export names for ESM import in node:
31
- 0 && (module.exports = {
32
- DiscountHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
6
+ exports.DiscountHooks = void 0;
7
+ let DiscountHooks = exports.DiscountHooks = /*#__PURE__*/function (DiscountHooks) {
8
+ DiscountHooks["OnDiscountListChange"] = "discount:onDiscountListChange";
9
+ DiscountHooks["OnDestroy"] = "discount:onDestroy";
10
+ return DiscountHooks;
11
+ }({});
@@ -1,42 +1,27 @@
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/modules/Guests/index.ts
20
- var Guests_exports = {};
21
- __export(Guests_exports, {
22
- GuestListModule: () => GuestListModule
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(Guests_exports);
25
- var import_BaseModule = require("../BaseModule");
26
- var import_types = require("./types");
27
- var GuestListModule = class extends import_BaseModule.BaseModule {
6
+ exports.GuestListModule = void 0;
7
+ var _BaseModule = require("../BaseModule");
8
+ var _types = require("./types");
9
+ class GuestListModule extends _BaseModule.BaseModule {
10
+ defaultName = 'guestList';
11
+ defaultVersion = '1.0.0';
12
+ state = {
13
+ list: []
14
+ };
28
15
  constructor(name, version) {
29
16
  super(name, version);
30
- this.defaultName = "guestList";
31
- this.defaultVersion = "1.0.0";
32
- this.state = {
33
- list: []
34
- };
35
17
  }
36
18
  async initialize(core, options) {
37
19
  this.core = core;
38
- if (options == null ? void 0 : options.initialState) {
39
- this.state = { ...this.state, ...options.initialState };
20
+ if (options?.initialState) {
21
+ this.state = {
22
+ ...this.state,
23
+ ...options.initialState
24
+ };
40
25
  }
41
26
  }
42
27
  async addGuest(guest) {
@@ -45,23 +30,18 @@ var GuestListModule = class extends import_BaseModule.BaseModule {
45
30
  await this.core.effects.emit(`${this.name}:onGuestChange`, this.state.list);
46
31
  }
47
32
  async updateGuest(id, updates) {
48
- const index = this.state.list.findIndex((g) => g.id === id);
49
- if (index === -1)
50
- return;
33
+ const index = this.state.list.findIndex(g => g.id === id);
34
+ if (index === -1) return;
51
35
  this.state.list[index] = {
52
36
  ...this.state.list[index],
53
37
  ...updates
54
38
  };
55
- await this.core.effects.emit(
56
- import_types.GuestHooks.OnGuestUpdate,
57
- this.state.list[index]
58
- );
39
+ await this.core.effects.emit(_types.GuestHooks.OnGuestUpdate, this.state.list[index]);
59
40
  await this.core.effects.emit(`${this.name}:onGuestChange`, this.state.list);
60
41
  }
61
42
  async removeGuest(id) {
62
- const index = this.state.list.findIndex((g) => g.id === id);
63
- if (index === -1)
64
- return;
43
+ const index = this.state.list.findIndex(g => g.id === id);
44
+ if (index === -1) return;
65
45
  const [removed] = this.state.list.splice(index, 1);
66
46
  await this.core.effects.emit(`${this.name}:onGuestRemove`, removed);
67
47
  await this.core.effects.emit(`${this.name}:onGuestChange`, this.state.list);
@@ -73,26 +53,20 @@ var GuestListModule = class extends import_BaseModule.BaseModule {
73
53
  return this.state.list.length;
74
54
  }
75
55
  async addItemToGuest(guestId, item) {
76
- const guest = this.state.list.find((g) => g.id === guestId);
77
- if (!guest)
78
- return;
56
+ const guest = this.state.list.find(g => g.id === guestId);
57
+ if (!guest) return;
79
58
  guest.items.push(item);
80
59
  await this.core.effects.emit(`${this.name}:onGuestUpdate`, guest);
81
60
  await this.core.effects.emit(`${this.name}:onGuestChange`, this.state.list);
82
61
  }
83
62
  async removeItemFromGuest(guestId, itemId) {
84
- const guest = this.state.list.find((g) => g.id === guestId);
85
- if (!guest)
86
- return;
87
- const index = guest.items.findIndex((i) => i.id === itemId);
88
- if (index === -1)
89
- return;
63
+ const guest = this.state.list.find(g => g.id === guestId);
64
+ if (!guest) return;
65
+ const index = guest.items.findIndex(i => i.id === itemId);
66
+ if (index === -1) return;
90
67
  guest.items.splice(index, 1);
91
68
  await this.core.effects.emit(`${this.name}:onGuestUpdate`, guest);
92
69
  await this.core.effects.emit(`${this.name}:onGuestChange`, this.state.list);
93
70
  }
94
- };
95
- // Annotate the CommonJS export names for ESM import in node:
96
- 0 && (module.exports = {
97
- GuestListModule
98
- });
71
+ }
72
+ exports.GuestListModule = GuestListModule;
@@ -1,35 +1,25 @@
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/modules/Guests/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- GuestHooks: () => GuestHooks
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var GuestHooks = /* @__PURE__ */ ((GuestHooks2) => {
26
- GuestHooks2["OnGuestAdd"] = "guest:onGuestAdd";
27
- GuestHooks2["OnGuestUpdate"] = "guest:onGuestUpdate";
28
- GuestHooks2["OnGuestRemove"] = "guest:onGuestRemove";
29
- GuestHooks2["OnGuestChange"] = "guest:onGuestChange";
30
- return GuestHooks2;
31
- })(GuestHooks || {});
32
- // Annotate the CommonJS export names for ESM import in node:
33
- 0 && (module.exports = {
34
- GuestHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
35
5
  });
6
+ exports.GuestHooks = void 0;
7
+ let GuestHooks = exports.GuestHooks = /*#__PURE__*/function (GuestHooks) {
8
+ GuestHooks["OnGuestAdd"] = "guest:onGuestAdd";
9
+ GuestHooks["OnGuestUpdate"] = "guest:onGuestUpdate";
10
+ GuestHooks["OnGuestRemove"] = "guest:onGuestRemove";
11
+ GuestHooks["OnGuestChange"] = "guest:onGuestChange";
12
+ return GuestHooks;
13
+ }({});
14
+ /**
15
+ * 预约人选择的商品/服务
16
+ */
17
+ /**
18
+ * 预约人信息
19
+ */
20
+ /**
21
+ * 预约人列表状态
22
+ */
23
+ /**
24
+ * 预约人列表模块 API
25
+ */