@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.
- package/dist/core/index.js +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +134 -134
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +88 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +81 -118
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +25 -23
- package/lib/modules/ResourcePlanner/localClock.js +54 -119
- package/lib/modules/ResourcePlanner/planner.js +589 -770
- package/lib/modules/ResourcePlanner/types.js +10 -29
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3050 -2665
- package/lib/server/modules/floor-plan/index.js +118 -134
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +142 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +784 -1002
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +583 -471
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +220 -186
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1220 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +607 -522
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
- package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
- package/lib/solution/UnifiedBookingSales/types.js +10 -32
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,143 +1,120 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
__export(buildCacheItemFromOrderLine_exports, {
|
|
32
|
-
buildCacheItemFromOrderLine: () => buildCacheItemFromOrderLine
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
33
5
|
});
|
|
34
|
-
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
6
|
+
exports.buildCacheItemFromOrderLine = buildCacheItemFromOrderLine;
|
|
7
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
8
|
+
var _utils = require("../../Order/utils");
|
|
9
|
+
var _manualProductDiscount = require("../../Order/utils/manualProductDiscount");
|
|
10
|
+
var _orderLineDisplay = require("./orderLineDisplay");
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
12
|
function safeFormat(value, fmt) {
|
|
40
|
-
if (value ===
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (!d.isValid())
|
|
44
|
-
return void 0;
|
|
13
|
+
if (value === undefined || value === null) return undefined;
|
|
14
|
+
const d = (0, _dayjs.default)(value);
|
|
15
|
+
if (!d.isValid()) return undefined;
|
|
45
16
|
return d.format(fmt);
|
|
46
17
|
}
|
|
47
18
|
function normalizeTimeString(value) {
|
|
48
|
-
if (value ===
|
|
49
|
-
|
|
50
|
-
if (typeof value === "string") {
|
|
19
|
+
if (value === undefined || value === null) return undefined;
|
|
20
|
+
if (typeof value === 'string') {
|
|
51
21
|
const t = value.trim();
|
|
52
22
|
const hhmmFromHhmmss = t.match(/^(\d{1,2}:\d{2}):\d{2}$/);
|
|
53
|
-
if (hhmmFromHhmmss)
|
|
54
|
-
|
|
55
|
-
if (/^\d{1,2}:\d{2}$/.test(t))
|
|
56
|
-
return t;
|
|
23
|
+
if (hhmmFromHhmmss) return hhmmFromHhmmss[1];
|
|
24
|
+
if (/^\d{1,2}:\d{2}$/.test(t)) return t;
|
|
57
25
|
}
|
|
58
|
-
const d = (0,
|
|
59
|
-
if (d.isValid())
|
|
60
|
-
|
|
61
|
-
return void 0;
|
|
26
|
+
const d = (0, _dayjs.default)(value);
|
|
27
|
+
if (d.isValid()) return d.format('HH:mm');
|
|
28
|
+
return undefined;
|
|
62
29
|
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* bookings[].resources[] → cacheItem._extend.resource(与 cacheItemToBookingInput.flattenResources 互逆)。
|
|
33
|
+
*/
|
|
63
34
|
function unflattenResourceMap(resources) {
|
|
64
35
|
const map = {};
|
|
65
|
-
if (!Array.isArray(resources))
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (formId === void 0 || formId === null)
|
|
70
|
-
return;
|
|
36
|
+
if (!Array.isArray(resources)) return map;
|
|
37
|
+
resources.forEach(r => {
|
|
38
|
+
const formId = r?.form_id;
|
|
39
|
+
if (formId === undefined || formId === null) return;
|
|
71
40
|
const key = String(formId);
|
|
72
|
-
if (!map[key])
|
|
73
|
-
map[key] = [];
|
|
41
|
+
if (!map[key]) map[key] = [];
|
|
74
42
|
map[key].push({
|
|
75
43
|
form_id: formId,
|
|
76
44
|
relation_id: r.relation_id,
|
|
77
|
-
relation_type: r.relation_type ||
|
|
78
|
-
like_status: r.like_status ||
|
|
79
|
-
metadata: r.metadata ? {
|
|
45
|
+
relation_type: r.relation_type || 'form',
|
|
46
|
+
like_status: r.like_status || 'common',
|
|
47
|
+
metadata: r.metadata ? {
|
|
48
|
+
...r.metadata
|
|
49
|
+
} : undefined,
|
|
80
50
|
children: r.children
|
|
81
51
|
});
|
|
82
52
|
});
|
|
83
53
|
return map;
|
|
84
54
|
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 从 booking.metadata.capacity 还原 `_extend.capacity`(与 info2 ticketBooking getCapacity 对齐)。
|
|
58
|
+
* 勿用 resources[].relation_id 反推人数维度 id。
|
|
59
|
+
*/
|
|
85
60
|
function resolveCapacityFromBooking(booking) {
|
|
86
|
-
|
|
87
|
-
const metaCap = (_a = booking.metadata) == null ? void 0 : _a.capacity;
|
|
61
|
+
const metaCap = booking.metadata?.capacity;
|
|
88
62
|
if (Array.isArray(metaCap) && metaCap.length > 0) {
|
|
89
|
-
return metaCap.map(
|
|
90
|
-
if (!item || typeof item !==
|
|
91
|
-
|
|
92
|
-
if (item.id === void 0 || item.id === null)
|
|
93
|
-
return null;
|
|
63
|
+
return metaCap.map(item => {
|
|
64
|
+
if (!item || typeof item !== 'object') return null;
|
|
65
|
+
if (item.id === undefined || item.id === null) return null;
|
|
94
66
|
const row = {
|
|
95
67
|
id: item.id,
|
|
96
68
|
value: Number(item.value ?? 0)
|
|
97
69
|
};
|
|
98
|
-
if (item.name !==
|
|
99
|
-
row.name = item.name;
|
|
70
|
+
if (item.name !== undefined) row.name = item.name;
|
|
100
71
|
return row;
|
|
101
|
-
}).filter(
|
|
72
|
+
}).filter(item => item != null);
|
|
102
73
|
}
|
|
103
|
-
if (typeof metaCap ===
|
|
104
|
-
return [{
|
|
74
|
+
if (typeof metaCap === 'number' && Number.isFinite(metaCap)) {
|
|
75
|
+
return [{
|
|
76
|
+
id: 0,
|
|
77
|
+
value: metaCap,
|
|
78
|
+
name: ''
|
|
79
|
+
}];
|
|
105
80
|
}
|
|
106
81
|
return [];
|
|
107
82
|
}
|
|
108
83
|
function resolveDurationForExtend(booking) {
|
|
109
84
|
const duration = booking.duration;
|
|
110
|
-
if (booking.sub_type ===
|
|
85
|
+
if (booking.sub_type === 'days' || booking.is_all === 1) {
|
|
111
86
|
return duration;
|
|
112
87
|
}
|
|
113
|
-
if (typeof duration ===
|
|
88
|
+
if (typeof duration === 'number' && Number.isFinite(duration)) {
|
|
114
89
|
return duration;
|
|
115
90
|
}
|
|
116
91
|
return duration;
|
|
117
92
|
}
|
|
93
|
+
|
|
94
|
+
/** booking.duration → catalog 顶层 duration 结构(供 isNormalProductByDurationSchedule 识别)。 */
|
|
118
95
|
function resolveTopLevelDuration(booking, sourceProduct) {
|
|
119
|
-
if (
|
|
96
|
+
if (sourceProduct?.duration !== undefined) {
|
|
120
97
|
return sourceProduct.duration;
|
|
121
98
|
}
|
|
122
99
|
const raw = booking.duration;
|
|
123
|
-
if (raw == null || raw ===
|
|
124
|
-
|
|
125
|
-
if (typeof raw === "object" && raw.type) {
|
|
100
|
+
if (raw == null || raw === '') return undefined;
|
|
101
|
+
if (typeof raw === 'object' && raw.type) {
|
|
126
102
|
return raw;
|
|
127
103
|
}
|
|
128
|
-
const subType = booking.sub_type ===
|
|
104
|
+
const subType = booking.sub_type === 'days' ? 'days' : 'minutes';
|
|
129
105
|
const value = Number(raw);
|
|
130
|
-
if (!Number.isFinite(value) || value <= 0)
|
|
131
|
-
|
|
132
|
-
|
|
106
|
+
if (!Number.isFinite(value) || value <= 0) return undefined;
|
|
107
|
+
return {
|
|
108
|
+
type: subType,
|
|
109
|
+
value
|
|
110
|
+
};
|
|
133
111
|
}
|
|
134
112
|
function resolveProductTitle(product, booking, sourceProduct) {
|
|
135
|
-
var _a, _b;
|
|
136
113
|
const metadata = product.metadata || {};
|
|
137
|
-
return
|
|
114
|
+
return sourceProduct?.title ?? sourceProduct?.name ?? metadata.product_title ?? metadata.product_name ?? booking?.product?.title ?? booking?.detail?.product_title ?? '';
|
|
138
115
|
}
|
|
139
116
|
function resolveProductCover(product, booking, sourceProduct) {
|
|
140
|
-
return
|
|
117
|
+
return sourceProduct?.cover ?? product.product_cover ?? '';
|
|
141
118
|
}
|
|
142
119
|
function resolveMainProductPrice(product, fallback) {
|
|
143
120
|
const metadata = product.metadata || {};
|
|
@@ -146,7 +123,7 @@ function resolveMainProductPrice(product, fallback) {
|
|
|
146
123
|
return Number.isFinite(parsed) ? parsed : fallback;
|
|
147
124
|
}
|
|
148
125
|
function mapOrderBundleToOtherBundle(bundle) {
|
|
149
|
-
return bundle.map(
|
|
126
|
+
return bundle.map(item => {
|
|
150
127
|
return {
|
|
151
128
|
...item,
|
|
152
129
|
// 后端历史订单可能没有 original_price;此时 price 是折前毛价,
|
|
@@ -155,15 +132,22 @@ function mapOrderBundleToOtherBundle(bundle) {
|
|
|
155
132
|
};
|
|
156
133
|
});
|
|
157
134
|
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* catalog 缺 product_resource 时,从 booking.resources 反推最小 product_resource 结构,
|
|
138
|
+
* 供 getResourceByIds / formatResources 渲染资源编辑 UI。
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* synthesizeProductResourceFromBooking({ resources: [{ form_id: 35, relation_id: 41077 }] });
|
|
142
|
+
*/
|
|
158
143
|
function synthesizeProductResourceFromBooking(booking) {
|
|
159
|
-
const rows = booking
|
|
160
|
-
if (!Array.isArray(rows) || rows.length === 0)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
if (formId == null || formId === "" || !Number.isFinite(relationId) || relationId <= 0) {
|
|
144
|
+
const rows = booking?.resources;
|
|
145
|
+
if (!Array.isArray(rows) || rows.length === 0) return undefined;
|
|
146
|
+
const relationIdsByForm = new Map();
|
|
147
|
+
rows.forEach(row => {
|
|
148
|
+
const formId = row?.form_id;
|
|
149
|
+
const relationId = Number(row?.relation_id);
|
|
150
|
+
if (formId == null || formId === '' || !Number.isFinite(relationId) || relationId <= 0) {
|
|
167
151
|
return;
|
|
168
152
|
}
|
|
169
153
|
const list = relationIdsByForm.get(formId) ?? [];
|
|
@@ -172,50 +156,57 @@ function synthesizeProductResourceFromBooking(booking) {
|
|
|
172
156
|
}
|
|
173
157
|
relationIdsByForm.set(formId, list);
|
|
174
158
|
});
|
|
175
|
-
if (relationIdsByForm.size === 0)
|
|
176
|
-
return void 0;
|
|
159
|
+
if (relationIdsByForm.size === 0) return undefined;
|
|
177
160
|
return {
|
|
178
161
|
resources: Array.from(relationIdsByForm.entries()).map(([formId, relationIds]) => ({
|
|
179
162
|
id: formId,
|
|
180
163
|
status: 1,
|
|
181
|
-
type:
|
|
182
|
-
code:
|
|
164
|
+
type: 'form',
|
|
165
|
+
code: '',
|
|
183
166
|
optional_resource: relationIds,
|
|
184
167
|
default_resource: []
|
|
185
168
|
}))
|
|
186
169
|
};
|
|
187
170
|
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* 从已加车的 order line + booking 反查 editService 所需的 cacheItem。
|
|
174
|
+
*
|
|
175
|
+
* 与 `buildCacheItemFromCartDetail` / `buildCacheItemFromDetail` 正向拼装互逆(在 getProductExtend 之前调用)。
|
|
176
|
+
* 调用方须传入与该行关联的 booking(通常 bookings[].product_uid === product.metadata.unique_identification_number)。
|
|
177
|
+
*/
|
|
188
178
|
function buildCacheItemFromOrderLine(input) {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
179
|
+
const {
|
|
180
|
+
product,
|
|
181
|
+
booking,
|
|
182
|
+
sourceProduct
|
|
183
|
+
} = input;
|
|
184
|
+
const resolvedId = product.product_id ?? sourceProduct?.id;
|
|
192
185
|
const selling = Number(product.selling_price ?? 0);
|
|
193
186
|
const original = Number(product.original_price ?? selling);
|
|
194
187
|
const mainProductPrice = resolveMainProductPrice(product, selling);
|
|
195
|
-
const startDate = safeFormat(booking.start_date,
|
|
196
|
-
const endDate = safeFormat(booking.end_date,
|
|
188
|
+
const startDate = safeFormat(booking.start_date, 'YYYY-MM-DD');
|
|
189
|
+
const endDate = safeFormat(booking.end_date, 'YYYY-MM-DD');
|
|
197
190
|
const startTime = normalizeTimeString(booking.start_time);
|
|
198
191
|
const endTime = normalizeTimeString(booking.end_time);
|
|
199
192
|
const resource = unflattenResourceMap(booking.resources);
|
|
200
193
|
const capacity = resolveCapacityFromBooking(booking);
|
|
201
|
-
const holderId =
|
|
194
|
+
const holderId = booking.metadata?.holder_id ?? booking.holder_id;
|
|
202
195
|
const productTitle = resolveProductTitle(product, booking, sourceProduct);
|
|
203
196
|
const productCover = resolveProductCover(product, booking, sourceProduct);
|
|
204
|
-
const productOptionString = (0,
|
|
197
|
+
const productOptionString = (0, _orderLineDisplay.buildProductOptionStringFromOrderLine)(product);
|
|
205
198
|
const hasBundle = Array.isArray(product.product_bundle) && product.product_bundle.length > 0;
|
|
206
|
-
const bundleEdit = product.bundle_edit ?? (hasBundle ? 0 :
|
|
199
|
+
const bundleEdit = product.bundle_edit ?? (hasBundle ? 0 : undefined);
|
|
207
200
|
const other = {
|
|
208
201
|
product_variant_id: product.product_variant_id ?? 0,
|
|
209
|
-
option: (0,
|
|
210
|
-
bundle: mapOrderBundleToOtherBundle(
|
|
211
|
-
Array.isArray(product.product_bundle) ? product.product_bundle : []
|
|
212
|
-
)
|
|
202
|
+
option: (0, _utils.getProductSkuOptions)(product),
|
|
203
|
+
bundle: mapOrderBundleToOtherBundle(Array.isArray(product.product_bundle) ? product.product_bundle : [])
|
|
213
204
|
};
|
|
214
205
|
const extend = {
|
|
215
|
-
start_date: startDate ? (0,
|
|
216
|
-
end_date: endDate ? (0,
|
|
217
|
-
startDate: startDate ? (0,
|
|
218
|
-
endDate: endDate ? (0,
|
|
206
|
+
start_date: startDate ? (0, _dayjs.default)(startDate) : undefined,
|
|
207
|
+
end_date: endDate ? (0, _dayjs.default)(endDate) : undefined,
|
|
208
|
+
startDate: startDate ? (0, _dayjs.default)(startDate) : undefined,
|
|
209
|
+
endDate: endDate ? (0, _dayjs.default)(endDate) : undefined,
|
|
219
210
|
start_time: startTime,
|
|
220
211
|
end_time: endTime,
|
|
221
212
|
duration: resolveDurationForExtend(booking),
|
|
@@ -223,7 +214,7 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
223
214
|
quantity: product.num ?? 1,
|
|
224
215
|
product_name: productTitle,
|
|
225
216
|
product_cover: productCover,
|
|
226
|
-
note: product.note ??
|
|
217
|
+
note: product.note ?? booking?.detail?.note ?? '',
|
|
227
218
|
price: mainProductPrice,
|
|
228
219
|
total: selling,
|
|
229
220
|
origin_total: original,
|
|
@@ -231,55 +222,60 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
231
222
|
capacity,
|
|
232
223
|
holder_id: holderId,
|
|
233
224
|
other,
|
|
234
|
-
like_status: booking.like_status ||
|
|
235
|
-
discount_reason: (0,
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
...
|
|
240
|
-
|
|
225
|
+
like_status: booking.like_status || 'common',
|
|
226
|
+
discount_reason: (0, _manualProductDiscount.resolveManualDiscountMessage)(product.discount_list, product.metadata?.product_discount_reason) || undefined,
|
|
227
|
+
...(bundleEdit !== undefined ? {
|
|
228
|
+
bundle_edit: bundleEdit
|
|
229
|
+
} : {}),
|
|
230
|
+
...(productOptionString ? {
|
|
231
|
+
product_option_string: productOptionString
|
|
232
|
+
} : {})
|
|
241
233
|
};
|
|
242
|
-
const manualDiscount = (product.discount_list || []).find(
|
|
234
|
+
const manualDiscount = (product.discount_list || []).find(d => d?.type === 'product');
|
|
243
235
|
if (manualDiscount && extend.origin_total === selling) {
|
|
244
236
|
const manualAmount = Number(manualDiscount.amount ?? 0);
|
|
245
237
|
if (Number.isFinite(manualAmount) && manualAmount > 0) {
|
|
246
238
|
extend.origin_total = selling + manualAmount;
|
|
247
239
|
}
|
|
248
240
|
}
|
|
249
|
-
if (
|
|
241
|
+
if (product.metadata?.price_override != null || manualDiscount) {
|
|
250
242
|
extend.priceOverride = selling;
|
|
251
243
|
}
|
|
252
|
-
if (booking.holder !==
|
|
244
|
+
if (booking.holder !== undefined) {
|
|
253
245
|
extend.holder = booking.holder;
|
|
254
246
|
}
|
|
255
247
|
if (Array.isArray(booking.relation_forms)) {
|
|
256
248
|
extend.relation_forms = booking.relation_forms;
|
|
257
249
|
}
|
|
258
250
|
const base = {
|
|
259
|
-
...sourceProduct || {},
|
|
251
|
+
...(sourceProduct || {}),
|
|
260
252
|
id: resolvedId,
|
|
261
253
|
product_id: resolvedId,
|
|
262
|
-
extension_type:
|
|
263
|
-
title: productTitle ||
|
|
264
|
-
price:
|
|
254
|
+
extension_type: sourceProduct?.extension_type ?? booking?.product?.extension_type ?? sourceProduct?.extension_type,
|
|
255
|
+
title: productTitle || sourceProduct?.title || booking?.product?.title,
|
|
256
|
+
price: sourceProduct?.price ?? selling,
|
|
265
257
|
selling_price: product.selling_price,
|
|
266
258
|
original_price: product.original_price,
|
|
267
|
-
...Number(
|
|
268
|
-
|
|
259
|
+
...(Number(product.product_sku?.open_sold_weight || 0) === 1 ? {
|
|
260
|
+
product_sku: JSON.parse(JSON.stringify(product.product_sku))
|
|
261
|
+
} : {}),
|
|
262
|
+
...(productOptionString ? {
|
|
263
|
+
product_option_string: productOptionString
|
|
264
|
+
} : {}),
|
|
269
265
|
_extend: extend,
|
|
270
266
|
new: 0,
|
|
271
267
|
autoClose: false,
|
|
272
268
|
order_detail_id: product.order_detail_id ?? null,
|
|
273
269
|
booking_id: booking.id ?? booking.booking_id ?? 0
|
|
274
270
|
};
|
|
275
|
-
if (
|
|
271
|
+
if (sourceProduct?.capacity !== undefined) {
|
|
276
272
|
base.capacity = sourceProduct.capacity;
|
|
277
273
|
}
|
|
278
274
|
const topLevelDuration = resolveTopLevelDuration(booking, sourceProduct);
|
|
279
|
-
if (topLevelDuration !==
|
|
275
|
+
if (topLevelDuration !== undefined) {
|
|
280
276
|
base.duration = topLevelDuration;
|
|
281
277
|
}
|
|
282
|
-
if (
|
|
278
|
+
if (sourceProduct?.product_resource !== undefined) {
|
|
283
279
|
base.product_resource = sourceProduct.product_resource;
|
|
284
280
|
} else {
|
|
285
281
|
const synthesized = synthesizeProductResourceFromBooking(booking);
|
|
@@ -287,18 +283,14 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
287
283
|
base.product_resource = synthesized;
|
|
288
284
|
}
|
|
289
285
|
}
|
|
290
|
-
if (Array.isArray(sourceProduct
|
|
286
|
+
if (Array.isArray(sourceProduct?.schedules) && sourceProduct.schedules.length) {
|
|
291
287
|
base.schedules = sourceProduct.schedules;
|
|
292
288
|
}
|
|
293
|
-
if (Array.isArray(sourceProduct
|
|
294
|
-
base[
|
|
289
|
+
if (Array.isArray(sourceProduct?.['schedule.ids']) && sourceProduct['schedule.ids'].length) {
|
|
290
|
+
base['schedule.ids'] = sourceProduct['schedule.ids'];
|
|
295
291
|
}
|
|
296
|
-
if (booking.schedule_event_id !==
|
|
292
|
+
if (booking.schedule_event_id !== undefined) {
|
|
297
293
|
base.schedule_event_id = booking.schedule_event_id;
|
|
298
294
|
}
|
|
299
295
|
return base;
|
|
300
|
-
}
|
|
301
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
302
|
-
0 && (module.exports = {
|
|
303
|
-
buildCacheItemFromOrderLine
|
|
304
|
-
});
|
|
296
|
+
}
|