@pisell/pisellos 2.2.162 → 2.2.164

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 (116) hide show
  1. package/dist/modules/BookingContext/index.d.ts +37 -0
  2. package/dist/modules/BookingContext/index.js +436 -0
  3. package/dist/modules/BookingContext/types.d.ts +102 -0
  4. package/dist/modules/BookingContext/types.js +51 -0
  5. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  6. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +157 -0
  7. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  8. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +107 -0
  9. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +65 -0
  10. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +191 -0
  11. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  12. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  13. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  14. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  15. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  16. package/dist/modules/BookingContext/utils/index.js +11 -0
  17. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  18. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  19. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  20. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  21. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  22. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  23. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  24. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  25. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  26. package/dist/modules/BookingContext/utils/resources.js +486 -0
  27. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  28. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  29. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  30. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  31. package/dist/modules/Customer/index.js +23 -22
  32. package/dist/modules/Discount/index.js +4 -3
  33. package/dist/modules/Order/index.d.ts +17 -6
  34. package/dist/modules/Order/index.js +474 -287
  35. package/dist/modules/Order/types.d.ts +32 -12
  36. package/dist/modules/Order/utils.js +9 -8
  37. package/dist/modules/SalesSummary/index.js +4 -2
  38. package/dist/modules/index.d.ts +1 -0
  39. package/dist/modules/index.js +2 -1
  40. package/dist/solution/BaseSales/index.d.ts +38 -7
  41. package/dist/solution/BaseSales/index.js +797 -310
  42. package/dist/solution/BaseSales/types.d.ts +48 -1
  43. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +7 -0
  44. package/dist/solution/BaseSales/utils/quotationPrice.js +159 -0
  45. package/dist/solution/BookingByStep/index.d.ts +2 -2
  46. package/dist/solution/BookingTicket/index.d.ts +121 -1
  47. package/dist/solution/BookingTicket/index.js +401 -72
  48. package/dist/solution/BookingTicket/types.d.ts +2 -0
  49. package/dist/solution/BookingTicket/types.js +3 -0
  50. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +111 -0
  51. package/dist/solution/BookingTicket/utils/addProductDecision.js +326 -0
  52. package/dist/solution/ScanOrder/index.d.ts +9 -3
  53. package/dist/solution/ScanOrder/index.js +231 -128
  54. package/dist/solution/VenueBooking/index.d.ts +4 -2
  55. package/dist/solution/VenueBooking/index.js +103 -55
  56. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +4 -0
  57. package/dist/solution/VenueBooking/utils/slotMerge.js +10 -0
  58. package/lib/model/strategy/adapter/promotion/index.js +0 -49
  59. package/lib/modules/BookingContext/index.d.ts +37 -0
  60. package/lib/modules/BookingContext/index.js +297 -0
  61. package/lib/modules/BookingContext/types.d.ts +102 -0
  62. package/lib/modules/BookingContext/types.js +34 -0
  63. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  64. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +174 -0
  65. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  66. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +115 -0
  67. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +65 -0
  68. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +177 -0
  69. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  70. package/lib/modules/BookingContext/utils/flexible.js +80 -0
  71. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  72. package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
  73. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  74. package/lib/modules/BookingContext/utils/index.js +43 -0
  75. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  76. package/lib/modules/BookingContext/utils/noResource.js +90 -0
  77. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  78. package/lib/modules/BookingContext/utils/productExtend.js +283 -0
  79. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  80. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  81. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  82. package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
  83. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  84. package/lib/modules/BookingContext/utils/resources.js +377 -0
  85. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  86. package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
  87. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  88. package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
  89. package/lib/modules/Customer/index.js +8 -8
  90. package/lib/modules/Discount/index.js +5 -1
  91. package/lib/modules/Order/index.d.ts +17 -6
  92. package/lib/modules/Order/index.js +164 -68
  93. package/lib/modules/Order/types.d.ts +32 -12
  94. package/lib/modules/Order/utils.js +8 -6
  95. package/lib/modules/SalesSummary/index.js +4 -2
  96. package/lib/modules/index.d.ts +1 -0
  97. package/lib/modules/index.js +3 -1
  98. package/lib/solution/BaseSales/index.d.ts +38 -7
  99. package/lib/solution/BaseSales/index.js +304 -14
  100. package/lib/solution/BaseSales/types.d.ts +48 -1
  101. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +7 -0
  102. package/lib/solution/BaseSales/utils/quotationPrice.js +201 -0
  103. package/lib/solution/BookingByStep/index.d.ts +2 -2
  104. package/lib/solution/BookingTicket/index.d.ts +121 -1
  105. package/lib/solution/BookingTicket/index.js +207 -2
  106. package/lib/solution/BookingTicket/types.d.ts +2 -0
  107. package/lib/solution/BookingTicket/types.js +6 -0
  108. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +111 -0
  109. package/lib/solution/BookingTicket/utils/addProductDecision.js +300 -0
  110. package/lib/solution/ScanOrder/index.d.ts +9 -3
  111. package/lib/solution/ScanOrder/index.js +147 -66
  112. package/lib/solution/VenueBooking/index.d.ts +4 -2
  113. package/lib/solution/VenueBooking/index.js +50 -14
  114. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +4 -0
  115. package/lib/solution/VenueBooking/utils/slotMerge.js +10 -0
  116. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { Module, ModuleOptions, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
3
  import { VenueBookingAddLogParams, VenueBookingSlotConfig, VenueDateSummaryItem, VenueSlotSelection, VenueTimeSlotGrid } from './types';
4
4
  import type { ScanOrderOrderProduct, ScanOrderOrderProductIdentity } from '../ScanOrder/types';
5
- import type { UpdateProductInOrderParams } from '../../modules/Order/types';
5
+ import type { UpdateOrderProductParams } from '../../modules/Order/types';
6
6
  import type { OpenDataAvailabilityResult } from '../../modules/OpenData';
7
7
  import type { ProductData } from '../../modules/Product/types';
8
8
  import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
@@ -41,6 +41,8 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
41
41
  private loadOpenDataConfigInFlight;
42
42
  private static readonly OPEN_DATA_CACHE_TTL;
43
43
  private getLoggerContext;
44
+ private safeStringify;
45
+ private pickErrorMessage;
44
46
  private serializeError;
45
47
  private addVenueBookingLog;
46
48
  private logMethodStart;
@@ -166,7 +168,7 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
166
168
  getSummary(): Promise<import("../../modules/Order/types").OrderSummary>;
167
169
  submitOrder<T = any>(): Promise<T>;
168
170
  addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<import("../../modules/Order/types").OrderProduct[]>;
169
- updateProductInOrder(params: UpdateProductInOrderParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
171
+ updateOrderProduct(params: UpdateOrderProductParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
170
172
  removeProductFromOrder(identity: ScanOrderOrderProductIdentity): Promise<import("../../modules/Order/types").OrderProduct[]>;
171
173
  getProductList(): Promise<ProductData[]>;
172
174
  private loadOpenDataConfig;
@@ -44,7 +44,7 @@ import { ItemRuleEvaluator } from "../../model/strategy/adapter/itemRule";
44
44
  import { extractResourceIds, buildResourceProductMap } from "./utils/resource";
45
45
  import { buildTimeSlotGrid, isBusinessHoursCrossDay, generateTimeLabels } from "./utils/timeSlot";
46
46
  import { buildDateRangeSummary } from "./utils/dateSummary";
47
- import { mergeConsecutiveSlots, expandMergedSlotToIndividual, buildVenueIdentityKey, buildVenueBookingEntry, buildPriceBreakdown } from "./utils/slotMerge";
47
+ import { mergeConsecutiveSlots, expandMergedSlotToIndividual, buildVenueIdentityKey, buildVenueBookingEntry, buildVenueResourceMetadata, buildPriceBreakdown } from "./utils/slotMerge";
48
48
  import { composeLinePrice, createUuidV4, sumOptionUnitPrice } from "../../modules/Order/utils";
49
49
  import { OrderModule } from "../../modules/Order";
50
50
  import { RegisterAndLoginHooks } from "../RegisterAndLogin/types";
@@ -112,6 +112,26 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
112
112
  moduleName: 'venueBooking'
113
113
  };
114
114
  }
115
+ }, {
116
+ key: "safeStringify",
117
+ value: function safeStringify(value) {
118
+ try {
119
+ return JSON.stringify(value);
120
+ } catch (_unused) {
121
+ return undefined;
122
+ }
123
+ }
124
+ }, {
125
+ key: "pickErrorMessage",
126
+ value: function pickErrorMessage(error) {
127
+ var _error$data, _error$response, _error$error;
128
+ var candidates = [error.message, (_error$data = error.data) === null || _error$data === void 0 ? void 0 : _error$data.message, (_error$response = error.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 ? void 0 : _error$response.message, (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message];
129
+ for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {
130
+ var candidate = _candidates[_i];
131
+ if (typeof candidate === 'string' && candidate.trim()) return candidate;
132
+ }
133
+ return undefined;
134
+ }
115
135
  }, {
116
136
  key: "serializeError",
117
137
  value: function serializeError(error) {
@@ -122,6 +142,21 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
122
142
  stack: error.stack
123
143
  };
124
144
  }
145
+ if (error && _typeof(error) === 'object') {
146
+ var raw = error;
147
+ var message = this.pickErrorMessage(raw) || this.safeStringify(raw) || String(error);
148
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, typeof raw.name === 'string' ? {
149
+ name: raw.name
150
+ } : {}), {}, {
151
+ message: message
152
+ }, 'code' in raw ? {
153
+ code: raw.code
154
+ } : {}), 'status' in raw ? {
155
+ status: raw.status
156
+ } : {}), this.safeStringify(raw) ? {
157
+ raw: this.safeStringify(raw)
158
+ } : {});
159
+ }
125
160
  return {
126
161
  message: String(error)
127
162
  };
@@ -246,8 +281,8 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
246
281
  value: function resolveCustomerIdFromLoginPayload(payload) {
247
282
  var _payload$user, _payload$user2, _payload$user3, _payload$user4, _payload$account, _payload$account2, _payload$account3, _payload$_origin;
248
283
  var candidates = [payload === null || payload === void 0 ? void 0 : payload.customerId, payload === null || payload === void 0 ? void 0 : payload.customer_id, payload === null || payload === void 0 ? void 0 : payload.id, payload === null || payload === void 0 || (_payload$user = payload.user) === null || _payload$user === void 0 ? void 0 : _payload$user.customerId, payload === null || payload === void 0 || (_payload$user2 = payload.user) === null || _payload$user2 === void 0 ? void 0 : _payload$user2.customer_id, payload === null || payload === void 0 || (_payload$user3 = payload.user) === null || _payload$user3 === void 0 ? void 0 : _payload$user3.id, payload === null || payload === void 0 || (_payload$user4 = payload.user) === null || _payload$user4 === void 0 || (_payload$user4 = _payload$user4._origin) === null || _payload$user4 === void 0 ? void 0 : _payload$user4.customer_id, payload === null || payload === void 0 || (_payload$account = payload.account) === null || _payload$account === void 0 ? void 0 : _payload$account.customerId, payload === null || payload === void 0 || (_payload$account2 = payload.account) === null || _payload$account2 === void 0 ? void 0 : _payload$account2.customer_id, payload === null || payload === void 0 || (_payload$account3 = payload.account) === null || _payload$account3 === void 0 ? void 0 : _payload$account3.id, payload === null || payload === void 0 || (_payload$_origin = payload._origin) === null || _payload$_origin === void 0 ? void 0 : _payload$_origin.customer_id];
249
- for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {
250
- var candidate = _candidates[_i];
284
+ for (var _i2 = 0, _candidates2 = candidates; _i2 < _candidates2.length; _i2++) {
285
+ var candidate = _candidates2[_i2];
251
286
  var customerId = this.normalizeCustomerId(candidate);
252
287
  if (customerId) return customerId;
253
288
  }
@@ -499,12 +534,14 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
499
534
  var _this4$store$order, _this4$otherParams, _this4$otherParams2, _this4$otherParams3, _this4$otherParams4;
500
535
  _this4.store[step] = targetModule;
501
536
  var initialState = step === 'salesSummary' ? {
502
- // TODO(Order types): VenueBooking should read OrderState.summary instead of tempOrder.summary.
503
537
  summary: ((_this4$store$order = _this4.store.order) === null || _this4$store$order === void 0 || (_this4$store$order = _this4$store$order.getTempOrder()) === null || _this4$store$order === void 0 ? void 0 : _this4$store$order.summary) || createEmptySummary()
504
538
  } : {};
505
539
  var loggerProvider = ((_this4$otherParams = _this4.otherParams) === null || _this4$otherParams === void 0 ? void 0 : _this4$otherParams.loggerProvider) || 'feishu';
506
540
  var loggerConfig = ((_this4$otherParams2 = _this4.otherParams) === null || _this4$otherParams2 === void 0 ? void 0 : _this4$otherParams2.loggerConfig) || {
507
- feishu: {}
541
+ feishu: {
542
+ webhook: 'https://open.feishu.cn/open-apis/bot/v2/hook/8f069b14-9d39-4728-8f78-b56f393bfde8',
543
+ errorHook: 'https://open.feishu.cn/open-apis/bot/v2/hook/bdefae5e-f233-4705-8688-946887d9543d'
544
+ }
508
545
  };
509
546
  _this4.core.registerModule(targetModule, {
510
547
  initialState: initialState,
@@ -829,24 +866,28 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
829
866
  }
830
867
  throw new Error('addonProducts 模块未初始化');
831
868
  case 6:
869
+ _context11.next = 8;
870
+ return this.loadOpenDataConfig();
871
+ case 8:
832
872
  associatedMenus = ((_this$otherParams7 = this.otherParams) === null || _this$otherParams7 === void 0 || (_this$otherParams7 = _this$otherParams7.openData) === null || _this$otherParams7 === void 0 ? void 0 : _this$otherParams7['menu.associated_menus']) || [];
833
873
  if (associatedMenus.length) {
834
- _context11.next = 9;
874
+ _context11.next = 12;
835
875
  break;
836
876
  }
877
+ this.logMethodError('loadAllProducts', new Error('未获取到餐牌配置(menu.associated_menus),请检查 OpenData 配置'));
837
878
  throw new Error('未获取到餐牌配置(menu.associated_menus),请检查 OpenData 配置');
838
- case 9:
879
+ case 12:
839
880
  menuListIds = associatedMenus.map(function (n) {
840
881
  return Number(n.value);
841
882
  });
842
- _context11.next = 12;
883
+ _context11.next = 15;
843
884
  return this.store.venueProducts.loadProducts({
844
885
  menu_list_ids: menuListIds,
845
886
  cacheId: this.cacheId,
846
887
  schedule_date: dayjs().format('YYYY-MM-DD'),
847
888
  schedule_datetime: dayjs().format('YYYY-MM-DD HH:mm:ss')
848
889
  });
849
- case 12:
890
+ case 15:
850
891
  allProducts = _context11.sent;
851
892
  list = Array.isArray(allProducts) ? allProducts : [];
852
893
  venueList = list.filter(function (p) {
@@ -874,16 +915,16 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
874
915
  venueProducts: venueList,
875
916
  addonProducts: addonList
876
917
  });
877
- case 25:
878
- _context11.prev = 25;
918
+ case 28:
919
+ _context11.prev = 28;
879
920
  _context11.t0 = _context11["catch"](1);
880
921
  this.logMethodError('loadAllProducts', _context11.t0);
881
922
  throw _context11.t0;
882
- case 29:
923
+ case 32:
883
924
  case "end":
884
925
  return _context11.stop();
885
926
  }
886
- }, _callee11, this, [[1, 25]]);
927
+ }, _callee11, this, [[1, 28]]);
887
928
  }));
888
929
  function _doLoadAllProducts() {
889
930
  return _doLoadAllProducts2.apply(this, arguments);
@@ -995,7 +1036,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
995
1036
  key: "fetchResourceAvailability",
996
1037
  value: function () {
997
1038
  var _fetchResourceAvailability = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15(params) {
998
- var venueProducts, resourceIds, config, crossDay, effectiveEndDate, res, rawData, _iterator2, _step2, item, _i2, _rawData, _item, mappings, _iterator3, _step3, mapping;
1039
+ var venueProducts, resourceIds, config, crossDay, effectiveEndDate, res, rawData, _iterator2, _step2, item, _i3, _rawData, _item, mappings, _iterator3, _step3, mapping;
999
1040
  return _regeneratorRuntime().wrap(function _callee15$(_context15) {
1000
1041
  while (1) switch (_context15.prev = _context15.next) {
1001
1042
  case 0:
@@ -1063,13 +1104,13 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1063
1104
  }
1064
1105
  }
1065
1106
  this.store.rawResourceData = rawData;
1066
- _i2 = 0, _rawData = rawData;
1107
+ _i3 = 0, _rawData = rawData;
1067
1108
  case 24:
1068
- if (!(_i2 < _rawData.length)) {
1109
+ if (!(_i3 < _rawData.length)) {
1069
1110
  _context15.next = 34;
1070
1111
  break;
1071
1112
  }
1072
- _item = _rawData[_i2];
1113
+ _item = _rawData[_i3];
1073
1114
  mappings = this.resourceProductMap.get(_item.resourceId);
1074
1115
  if (mappings) {
1075
1116
  _context15.next = 29;
@@ -1090,7 +1131,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1090
1131
  _iterator3.f();
1091
1132
  }
1092
1133
  case 31:
1093
- _i2++;
1134
+ _i3++;
1094
1135
  _context15.next = 24;
1095
1136
  break;
1096
1137
  case 34:
@@ -1628,7 +1669,10 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1628
1669
  form_id: (_rawResource$form_id = rawResource === null || rawResource === void 0 ? void 0 : rawResource.form_id) !== null && _rawResource$form_id !== void 0 ? _rawResource$form_id : mapping.formId,
1629
1670
  relation_id: resourceId,
1630
1671
  capacity: 1,
1631
- metadata: {}
1672
+ metadata: buildVenueResourceMetadata({
1673
+ mapping: mapping,
1674
+ rawResource: rawResource
1675
+ })
1632
1676
  };
1633
1677
  if (childRawResources && childRawResources.length) {
1634
1678
  resourceEntry.children = childRawResources.map(function (child) {
@@ -2182,7 +2226,6 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2182
2226
  });
2183
2227
  case 50:
2184
2228
  this.store.order.persistTempOrder();
2185
- // TODO(Order types): VenueBooking should read OrderState.summary instead of tempOrder.summary.
2186
2229
  finalSummary = ((_this$store$order$get = this.store.order.getTempOrder()) === null || _this$store$order$get === void 0 ? void 0 : _this$store$order$get.summary) || null;
2187
2230
  finalProduct = ((_this$store$order$get2 = this.store.order.getTempOrder()) === null || _this$store$order$get2 === void 0 || (_this$store$order$get2 = _this$store$order$get2.products) === null || _this$store$order$get2 === void 0 ? void 0 : _this$store$order$get2[0]) || null;
2188
2231
  this.logMethodSuccess('setDiscountSelected', params);
@@ -2405,14 +2448,14 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2405
2448
  return addProductToOrder;
2406
2449
  }()
2407
2450
  }, {
2408
- key: "updateProductInOrder",
2451
+ key: "updateOrderProduct",
2409
2452
  value: function () {
2410
- var _updateProductInOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26(params) {
2453
+ var _updateOrderProduct = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26(params) {
2411
2454
  var products;
2412
2455
  return _regeneratorRuntime().wrap(function _callee26$(_context26) {
2413
2456
  while (1) switch (_context26.prev = _context26.next) {
2414
2457
  case 0:
2415
- this.logMethodStart('updateProductInOrder', {
2458
+ this.logMethodStart('updateOrderProduct', {
2416
2459
  product_id: params.product_id,
2417
2460
  product_variant_id: params.product_variant_id
2418
2461
  });
@@ -2424,7 +2467,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2424
2467
  throw new Error('order 模块未初始化');
2425
2468
  case 4:
2426
2469
  _context26.next = 6;
2427
- return this.store.order.updateProductInOrder(params);
2470
+ return this.store.order.updateOrderProduct(params);
2428
2471
  case 6:
2429
2472
  products = _context26.sent;
2430
2473
  _context26.next = 9;
@@ -2433,14 +2476,14 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2433
2476
  _context26.next = 11;
2434
2477
  return this.refreshCartValidationPassed();
2435
2478
  case 11:
2436
- this.logMethodSuccess('updateProductInOrder', {
2479
+ this.logMethodSuccess('updateOrderProduct', {
2437
2480
  productCount: products.length
2438
2481
  });
2439
2482
  return _context26.abrupt("return", products);
2440
2483
  case 15:
2441
2484
  _context26.prev = 15;
2442
2485
  _context26.t0 = _context26["catch"](1);
2443
- this.logMethodError('updateProductInOrder', _context26.t0);
2486
+ this.logMethodError('updateOrderProduct', _context26.t0);
2444
2487
  throw _context26.t0;
2445
2488
  case 19:
2446
2489
  case "end":
@@ -2448,10 +2491,10 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2448
2491
  }
2449
2492
  }, _callee26, this, [[1, 15]]);
2450
2493
  }));
2451
- function updateProductInOrder(_x17) {
2452
- return _updateProductInOrder.apply(this, arguments);
2494
+ function updateOrderProduct(_x17) {
2495
+ return _updateOrderProduct.apply(this, arguments);
2453
2496
  }
2454
- return updateProductInOrder;
2497
+ return updateOrderProduct;
2455
2498
  }()
2456
2499
  }, {
2457
2500
  key: "removeProductFromOrder",
@@ -2498,7 +2541,6 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2498
2541
  }
2499
2542
  return _context27.abrupt("continue", 20);
2500
2543
  case 18:
2501
- // TODO(Order types): VenueBooking should use metadata.unique_identification_number only.
2502
2544
  if (product.identity_key) venueProductUids.add(String(product.identity_key));
2503
2545
  if ((_product$metadata7 = product.metadata) !== null && _product$metadata7 !== void 0 && _product$metadata7.booking_uid) {
2504
2546
  venueBookingUids.add(String(product.metadata.booking_uid));
@@ -2593,8 +2635,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2593
2635
  key: "loadOpenDataConfig",
2594
2636
  value: function () {
2595
2637
  var _loadOpenDataConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {
2596
- var _this11 = this;
2597
- var lastFetchedAt, cachedData;
2638
+ var lastFetchedAt, cachedData, openDataConfig;
2598
2639
  return _regeneratorRuntime().wrap(function _callee29$(_context29) {
2599
2640
  while (1) switch (_context29.prev = _context29.next) {
2600
2641
  case 0:
@@ -2614,27 +2655,35 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2614
2655
  return _context29.abrupt("return", cachedData);
2615
2656
  case 7:
2616
2657
  if (!this.loadOpenDataConfigInFlight) {
2617
- _context29.next = 9;
2658
+ _context29.next = 11;
2618
2659
  break;
2619
2660
  }
2620
- return _context29.abrupt("return", this.loadOpenDataConfigInFlight);
2621
- case 9:
2661
+ _context29.next = 10;
2662
+ return this.loadOpenDataConfigInFlight;
2663
+ case 10:
2664
+ return _context29.abrupt("return", _context29.sent);
2665
+ case 11:
2622
2666
  this.loadOpenDataConfigInFlight = this.store.openData.fetchOpenData({
2623
2667
  scope: 'board',
2624
2668
  target: 'venue_booking+online_store',
2625
2669
  section_code: [].concat(OPEN_DATA_SECTION_CODES)
2626
- }).then(function (openDataConfig) {
2627
- _this11.otherParams.openData = openDataConfig;
2628
- return openDataConfig;
2629
- }).finally(function () {
2630
- _this11.loadOpenDataConfigInFlight = null;
2631
2670
  });
2632
- return _context29.abrupt("return", this.loadOpenDataConfigInFlight);
2633
- case 11:
2671
+ _context29.prev = 12;
2672
+ _context29.next = 15;
2673
+ return this.loadOpenDataConfigInFlight;
2674
+ case 15:
2675
+ openDataConfig = _context29.sent;
2676
+ this.otherParams.openData = openDataConfig;
2677
+ return _context29.abrupt("return", openDataConfig);
2678
+ case 18:
2679
+ _context29.prev = 18;
2680
+ this.loadOpenDataConfigInFlight = null;
2681
+ return _context29.finish(18);
2682
+ case 21:
2634
2683
  case "end":
2635
2684
  return _context29.stop();
2636
2685
  }
2637
- }, _callee29, this);
2686
+ }, _callee29, this, [[12,, 18, 21]]);
2638
2687
  }));
2639
2688
  function loadOpenDataConfig() {
2640
2689
  return _loadOpenDataConfig.apply(this, arguments);
@@ -2780,8 +2829,8 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2780
2829
  var key = buildProductKey(productId, normalizedVariantId);
2781
2830
  if (!sourceMap.has(key)) sourceMap.set(key, node);
2782
2831
  }
2783
- for (var _i3 = 0, _Object$values = Object.values(node); _i3 < _Object$values.length; _i3++) {
2784
- var childValue = _Object$values[_i3];
2832
+ for (var _i4 = 0, _Object$values = Object.values(node); _i4 < _Object$values.length; _i4++) {
2833
+ var childValue = _Object$values[_i4];
2785
2834
  if (childValue && _typeof(childValue) === 'object') collectFromValue(childValue);
2786
2835
  }
2787
2836
  };
@@ -2814,7 +2863,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2814
2863
  key: "ensureItemRuleConfigsLoaded",
2815
2864
  value: function () {
2816
2865
  var _ensureItemRuleConfigsLoaded = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {
2817
- var _this12 = this;
2866
+ var _this11 = this;
2818
2867
  return _regeneratorRuntime().wrap(function _callee34$(_context34) {
2819
2868
  while (1) switch (_context34.prev = _context34.next) {
2820
2869
  case 0:
@@ -2835,19 +2884,19 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2835
2884
  return _regeneratorRuntime().wrap(function _callee33$(_context33) {
2836
2885
  while (1) switch (_context33.prev = _context33.next) {
2837
2886
  case 0:
2838
- runtimeConfig = _this12.getItemRuleRuntimeConfig();
2887
+ runtimeConfig = _this11.getItemRuleRuntimeConfig();
2839
2888
  staticConfigs = normalizeItemRuleStrategies(runtimeConfig.strategyConfigs);
2840
2889
  if (!(staticConfigs.length > 0)) {
2841
2890
  _context33.next = 6;
2842
2891
  break;
2843
2892
  }
2844
- _this12.itemRuleConfigs = staticConfigs;
2845
- _this12.itemRuleEvaluator.setStrategyConfigs(staticConfigs);
2846
- return _context33.abrupt("return", _this12.itemRuleConfigs);
2893
+ _this11.itemRuleConfigs = staticConfigs;
2894
+ _this11.itemRuleEvaluator.setStrategyConfigs(staticConfigs);
2895
+ return _context33.abrupt("return", _this11.itemRuleConfigs);
2847
2896
  case 6:
2848
- _this12.itemRuleConfigs = [];
2849
- _this12.itemRuleEvaluator.setStrategyConfigs([]);
2850
- return _context33.abrupt("return", _this12.itemRuleConfigs);
2897
+ _this11.itemRuleConfigs = [];
2898
+ _this11.itemRuleEvaluator.setStrategyConfigs([]);
2899
+ return _context33.abrupt("return", _this11.itemRuleConfigs);
2851
2900
  case 9:
2852
2901
  case "end":
2853
2902
  return _context33.stop();
@@ -3028,7 +3077,6 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3028
3077
  item_rule_prefill: true,
3029
3078
  item_rule_id: prefillItem.ruleId
3030
3079
  }),
3031
- // TODO(Order types): migrate VenueBooking prefill origin runtime into tempOrder._extend.
3032
3080
  _origin: sourceItem ? _objectSpread(_objectSpread({}, targetProduct._origin || {}), sourceItem) : targetProduct._origin
3033
3081
  });
3034
3082
  if (delta > 0 || Boolean(sourceItem && (!targetProduct._origin || ((_origin2 = targetProduct._origin) === null || _origin2 === void 0 ? void 0 : _origin2.price) !== (sourceItem === null || sourceItem === void 0 ? void 0 : sourceItem.price)))) {
@@ -3309,7 +3357,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3309
3357
  var raw = this.window.sessionStorage.getItem(key) || '{}';
3310
3358
  var parsed = JSON.parse(raw);
3311
3359
  return parsed && _typeof(parsed) === 'object' ? parsed : {};
3312
- } catch (_unused2) {
3360
+ } catch (_unused3) {
3313
3361
  return {};
3314
3362
  }
3315
3363
  }
@@ -12,6 +12,10 @@ export declare function buildPriceBreakdown(params: {
12
12
  }) => number;
13
13
  };
14
14
  }): PriceBreakdownEntry[];
15
+ export declare function buildVenueResourceMetadata(params: {
16
+ mapping: ResourceProductMapping;
17
+ rawResource: VenueResourceRawData | undefined;
18
+ }): Record<string, any>;
15
19
  export interface BuildVenueBookingParams {
16
20
  group: MergedSlotGroup;
17
21
  resourceId: number | string;
@@ -89,6 +89,16 @@ export function buildPriceBreakdown(params) {
89
89
  }
90
90
  return entries;
91
91
  }
92
+ export function buildVenueResourceMetadata(params) {
93
+ var _rawResource$form_nam, _ref, _rawResource$main_fie, _rawResource$combined;
94
+ var mapping = params.mapping,
95
+ rawResource = params.rawResource;
96
+ return {
97
+ form_name: (_rawResource$form_nam = rawResource === null || rawResource === void 0 ? void 0 : rawResource.form_name) !== null && _rawResource$form_nam !== void 0 ? _rawResource$form_nam : '',
98
+ resource_name: (_ref = (_rawResource$main_fie = rawResource === null || rawResource === void 0 ? void 0 : rawResource.main_field) !== null && _rawResource$main_fie !== void 0 ? _rawResource$main_fie : mapping.resourceName) !== null && _ref !== void 0 ? _ref : '',
99
+ combined_resource: (_rawResource$combined = rawResource === null || rawResource === void 0 ? void 0 : rawResource.combined_resource) !== null && _rawResource$combined !== void 0 ? _rawResource$combined : null
100
+ };
101
+ }
92
102
  export function buildVenueBookingEntry(params) {
93
103
  var _rawResource$form_id;
94
104
  var group = params.group,
@@ -1,49 +0,0 @@
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);
28
-
29
- // src/model/strategy/adapter/promotion/index.ts
30
- var promotion_exports = {};
31
- __export(promotion_exports, {
32
- BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
33
- PromotionAdapter: () => import_adapter.PromotionAdapter,
34
- PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
35
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
36
- default: () => import_adapter2.default
37
- });
38
- module.exports = __toCommonJS(promotion_exports);
39
- var import_evaluator = require("./evaluator");
40
- var import_adapter = require("./adapter");
41
- var import_adapter2 = __toESM(require("./adapter"));
42
- var import_examples = require("./examples");
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- BUY_X_GET_Y_FREE_STRATEGY,
46
- PromotionAdapter,
47
- PromotionEvaluator,
48
- X_ITEMS_FOR_Y_PRICE_STRATEGY
49
- });
@@ -0,0 +1,37 @@
1
+ import { Module, ModuleOptions, PisellCore } from '../../types';
2
+ import { BaseModule } from '../BaseModule';
3
+ import { BookingContextConfig, BookingContextDateInput, BookingContextModuleAPI, BookingContextResource, BookingContextResourceMap, BookingContextState, InitBookingContextParams, LoadBookingConfigParams, LoadBookingResourcesParams } from './types';
4
+ export * from './types';
5
+ export * from './utils';
6
+ /** 稳定序列化 config 查询参数,用于判断是否与上次 loadBookingConfig 一致。 */
7
+ export declare function buildBookingConfigQueryKey(params?: LoadBookingConfigParams): string;
8
+ /** 稳定序列化资源列表查询(date + bookingIds),用于跳过重复 loadResources。 */
9
+ export declare function buildBookingResourcesQueryKey(params?: LoadBookingResourcesParams): string;
10
+ export declare class BookingContextModule extends BaseModule implements Module, BookingContextModuleAPI {
11
+ protected defaultName: string;
12
+ protected defaultVersion: string;
13
+ private request;
14
+ private store;
15
+ /** 上次成功 loadBookingConfig 的 query key;命中则不再请求。 */
16
+ private lastConfigQueryKey;
17
+ /** 上次成功 loadResources 的 query key(date|bookingIds);命中则不再请求。 */
18
+ private lastResourcesQueryKey;
19
+ constructor(name?: string, version?: string);
20
+ initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
21
+ loadBookingConfig(params?: LoadBookingConfigParams): Promise<BookingContextConfig | null>;
22
+ loadResources(params?: LoadBookingResourcesParams): Promise<BookingContextResource[]>;
23
+ /**
24
+ * store 内是否已具备与本次 init 入参等价的 config / resources(不再打接口)。
25
+ */
26
+ isBookingContextReady(params?: InitBookingContextParams): boolean;
27
+ initBookingContext(params?: InitBookingContextParams): Promise<BookingContextState>;
28
+ setBookingConfig(config: BookingContextConfig | null): void;
29
+ getBookingConfig(): BookingContextConfig | null;
30
+ setResources(resources: BookingContextResource[] | null | undefined): void;
31
+ getResourcesOrigin(): BookingContextResource[];
32
+ getResourcesOriginMap(): BookingContextResourceMap;
33
+ setDate(date: BookingContextDateInput): void;
34
+ getDate(): string | null;
35
+ getState(): BookingContextState;
36
+ clear(): void;
37
+ }