@pisell/pisellos 2.3.12 → 2.3.13
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/modules/Order/index.d.ts +1 -0
- package/dist/modules/Order/index.js +6 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.js +1197 -913
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +3 -2
- package/dist/solution/BookingTicket/index.js +78 -10
- package/lib/model/strategy/adapter/promotion/index.js +0 -49
- package/lib/modules/Order/index.d.ts +1 -0
- package/lib/modules/Order/index.js +4 -0
- package/lib/server/index.d.ts +3 -0
- package/lib/server/index.js +191 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +3 -2
- package/lib/solution/BookingTicket/index.js +71 -4
- package/package.json +1 -1
|
@@ -311,7 +311,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
311
311
|
date: string;
|
|
312
312
|
status: string;
|
|
313
313
|
week: string;
|
|
314
|
-
weekNum: 0 |
|
|
314
|
+
weekNum: 0 | 1 | 2 | 6 | 3 | 4 | 5;
|
|
315
315
|
}[]>;
|
|
316
316
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
317
317
|
private getScheduleDataByIds;
|
|
@@ -322,7 +322,7 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
322
322
|
* 获取当前的客户搜索条件
|
|
323
323
|
* @returns 当前搜索条件
|
|
324
324
|
*/
|
|
325
|
-
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "
|
|
325
|
+
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
|
|
326
326
|
/**
|
|
327
327
|
* 获取客户列表状态(包含滚动加载相关状态)
|
|
328
328
|
* @returns 客户状态
|
|
@@ -557,7 +557,8 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
557
557
|
}): Promise<void>;
|
|
558
558
|
handleCheckIn(params: {
|
|
559
559
|
voucher_ids: number[];
|
|
560
|
-
|
|
560
|
+
is_checkin: boolean;
|
|
561
|
+
}): Promise<any>;
|
|
561
562
|
/**
|
|
562
563
|
* 销毁模块:先调用父类(销毁所有 store 内子模块 + emit destroy + super.destroy()),
|
|
563
564
|
* 再清理 BookingTicket 自有资源(scan 监听 + scan 内存缓存)。
|
|
@@ -2600,6 +2600,7 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseSalesImpl) {
|
|
|
2600
2600
|
key: "handlePrintWristband",
|
|
2601
2601
|
value: function () {
|
|
2602
2602
|
var _handlePrintWristband = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee32(params) {
|
|
2603
|
+
var _this$getOrderIdentit;
|
|
2603
2604
|
var deviceTask, deviceId, idempotencyKey;
|
|
2604
2605
|
return _regeneratorRuntime().wrap(function _callee32$(_context32) {
|
|
2605
2606
|
while (1) switch (_context32.prev = _context32.next) {
|
|
@@ -2618,9 +2619,16 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseSalesImpl) {
|
|
|
2618
2619
|
});
|
|
2619
2620
|
return _context32.abrupt("return");
|
|
2620
2621
|
case 4:
|
|
2621
|
-
|
|
2622
|
+
this.logger.addLog({
|
|
2623
|
+
type: 'info',
|
|
2624
|
+
title: '[BookingTicket] handlePrintWristband',
|
|
2625
|
+
metadata: {
|
|
2626
|
+
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids]
|
|
2627
|
+
}
|
|
2628
|
+
});
|
|
2629
|
+
_context32.next = 7;
|
|
2622
2630
|
return this.getShortNumberOrDeviceId();
|
|
2623
|
-
case
|
|
2631
|
+
case 7:
|
|
2624
2632
|
deviceId = _context32.sent;
|
|
2625
2633
|
idempotencyKey = createUuidV4();
|
|
2626
2634
|
deviceTask.dispatch({
|
|
@@ -2629,17 +2637,17 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseSalesImpl) {
|
|
|
2629
2637
|
payload: {
|
|
2630
2638
|
type: 'WRISTBAND',
|
|
2631
2639
|
data: {
|
|
2632
|
-
order_id: this.getOrderIdentity(),
|
|
2640
|
+
order_id: (_this$getOrderIdentit = this.getOrderIdentity()) === null || _this$getOrderIdentit === void 0 ? void 0 : _this$getOrderIdentit.orderId,
|
|
2633
2641
|
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids]
|
|
2634
2642
|
}
|
|
2635
2643
|
},
|
|
2636
2644
|
idempotency_key: idempotencyKey,
|
|
2637
|
-
name: '
|
|
2645
|
+
name: 'PRINT_WRISTBAND',
|
|
2638
2646
|
source: 'bookingTicket',
|
|
2639
2647
|
source_type: 'handlePrintWristband',
|
|
2640
2648
|
source_id: idempotencyKey
|
|
2641
2649
|
});
|
|
2642
|
-
case
|
|
2650
|
+
case 10:
|
|
2643
2651
|
case "end":
|
|
2644
2652
|
return _context32.stop();
|
|
2645
2653
|
}
|
|
@@ -2654,15 +2662,75 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseSalesImpl) {
|
|
|
2654
2662
|
key: "handleCheckIn",
|
|
2655
2663
|
value: function () {
|
|
2656
2664
|
var _handleCheckIn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee33(params) {
|
|
2665
|
+
var _this$store$order5, _this$store$order5$ge, _this$store$order6, _ref20, _tempOrder$order_id2;
|
|
2666
|
+
var voucherIds, voucherIdSet, tempOrder, vouchers, batchMetadata, hasUpdatedVoucher, nextVouchers, identity, externalSaleNumber, orderId, orderLookup;
|
|
2657
2667
|
return _regeneratorRuntime().wrap(function _callee33$(_context33) {
|
|
2658
2668
|
while (1) switch (_context33.prev = _context33.next) {
|
|
2659
2669
|
case 0:
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2670
|
+
this.logger.addLog({
|
|
2671
|
+
type: 'info',
|
|
2672
|
+
title: '[BookingTicket] handleCheckIn',
|
|
2673
|
+
metadata: {
|
|
2674
|
+
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids],
|
|
2675
|
+
is_checkin: params.is_checkin
|
|
2676
|
+
}
|
|
2664
2677
|
});
|
|
2665
|
-
|
|
2678
|
+
voucherIds = Array.isArray(params.voucher_ids) ? params.voucher_ids : [];
|
|
2679
|
+
voucherIdSet = new Set(voucherIds);
|
|
2680
|
+
tempOrder = (_this$store$order5 = this.store.order) === null || _this$store$order5 === void 0 || (_this$store$order5$ge = _this$store$order5.getTempOrder) === null || _this$store$order5$ge === void 0 ? void 0 : _this$store$order5$ge.call(_this$store$order5);
|
|
2681
|
+
vouchers = (tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.vouchers) || ((_this$store$order6 = this.store.order) === null || _this$store$order6 === void 0 ? void 0 : _this$store$order6.getVouchers()) || [];
|
|
2682
|
+
batchMetadata = [];
|
|
2683
|
+
hasUpdatedVoucher = false;
|
|
2684
|
+
nextVouchers = vouchers.map(function (voucher) {
|
|
2685
|
+
var _voucher$metadata;
|
|
2686
|
+
if (!voucherIdSet.has(voucher.voucher_id)) return voucher;
|
|
2687
|
+
hasUpdatedVoucher = true;
|
|
2688
|
+
var metadata = _objectSpread(_objectSpread({}, voucher.metadata || {}), {}, {
|
|
2689
|
+
ticket: _objectSpread(_objectSpread({}, ((_voucher$metadata = voucher.metadata) === null || _voucher$metadata === void 0 ? void 0 : _voucher$metadata.ticket) || {}), {}, {
|
|
2690
|
+
is_checkin: params.is_checkin
|
|
2691
|
+
})
|
|
2692
|
+
});
|
|
2693
|
+
batchMetadata.push({
|
|
2694
|
+
voucher_id: voucher.voucher_id,
|
|
2695
|
+
metadata: metadata
|
|
2696
|
+
});
|
|
2697
|
+
return _objectSpread(_objectSpread({}, voucher), {}, {
|
|
2698
|
+
metadata: metadata
|
|
2699
|
+
});
|
|
2700
|
+
});
|
|
2701
|
+
if (!(tempOrder && hasUpdatedVoucher)) {
|
|
2702
|
+
_context33.next = 11;
|
|
2703
|
+
break;
|
|
2704
|
+
}
|
|
2705
|
+
_context33.next = 11;
|
|
2706
|
+
return this.replaceTempOrder(_objectSpread(_objectSpread({}, tempOrder), {}, {
|
|
2707
|
+
vouchers: nextVouchers
|
|
2708
|
+
}));
|
|
2709
|
+
case 11:
|
|
2710
|
+
if (!(batchMetadata.length === 0)) {
|
|
2711
|
+
_context33.next = 13;
|
|
2712
|
+
break;
|
|
2713
|
+
}
|
|
2714
|
+
return _context33.abrupt("return", {
|
|
2715
|
+
code: 200,
|
|
2716
|
+
status: true,
|
|
2717
|
+
message: '',
|
|
2718
|
+
data: []
|
|
2719
|
+
});
|
|
2720
|
+
case 13:
|
|
2721
|
+
identity = this.getOrderIdentity();
|
|
2722
|
+
externalSaleNumber = (tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.external_sale_number) || (identity === null || identity === void 0 ? void 0 : identity.externalSaleNumber) || undefined;
|
|
2723
|
+
orderId = (_ref20 = (_tempOrder$order_id2 = tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.order_id) !== null && _tempOrder$order_id2 !== void 0 ? _tempOrder$order_id2 : identity === null || identity === void 0 ? void 0 : identity.orderId) !== null && _ref20 !== void 0 ? _ref20 : undefined;
|
|
2724
|
+
orderLookup = externalSaleNumber || orderId || (identity === null || identity === void 0 ? void 0 : identity.orderNumber) || (identity === null || identity === void 0 ? void 0 : identity.shopOrderNumber) || (identity === null || identity === void 0 ? void 0 : identity.shopFullOrderNumber) || undefined;
|
|
2725
|
+
return _context33.abrupt("return", this.request.post('/machinecode/batch-metadata', {
|
|
2726
|
+
data: batchMetadata,
|
|
2727
|
+
order_lookup: orderLookup,
|
|
2728
|
+
order_id: orderId,
|
|
2729
|
+
external_sale_number: externalSaleNumber
|
|
2730
|
+
}, {
|
|
2731
|
+
osServer: true
|
|
2732
|
+
}));
|
|
2733
|
+
case 18:
|
|
2666
2734
|
case "end":
|
|
2667
2735
|
return _context33.stop();
|
|
2668
2736
|
}
|
|
@@ -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
|
-
});
|
|
@@ -524,5 +524,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
524
524
|
private normalizeHydratedOrderProduct;
|
|
525
525
|
getLastOrderInfo(): Record<string, any> | undefined;
|
|
526
526
|
getOrderInfo(order_id: number): Promise<any>;
|
|
527
|
+
getVouchers(): any[];
|
|
527
528
|
}
|
|
528
529
|
export type { UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, } from './types';
|
|
@@ -4176,6 +4176,10 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
4176
4176
|
});
|
|
4177
4177
|
return res;
|
|
4178
4178
|
}
|
|
4179
|
+
getVouchers() {
|
|
4180
|
+
var _a;
|
|
4181
|
+
return ((_a = this.store.tempOrder) == null ? void 0 : _a.vouchers) || [];
|
|
4182
|
+
}
|
|
4179
4183
|
};
|
|
4180
4184
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4181
4185
|
0 && (module.exports = {
|
package/lib/server/index.d.ts
CHANGED
|
@@ -431,6 +431,9 @@ declare class Server {
|
|
|
431
431
|
private shouldLookupLocalPrintOrder;
|
|
432
432
|
private getLocalPrintOrderLookup;
|
|
433
433
|
private handleLocalPrintOrder;
|
|
434
|
+
private handleMachinecodeBatchMetadata;
|
|
435
|
+
private resolveMachinecodeBatchMetadataLookup;
|
|
436
|
+
private syncMachinecodeBatchMetadataToLocalOrder;
|
|
434
437
|
private handleOrderCheckoutSubmit;
|
|
435
438
|
private handleSyncCheckoutSubmit;
|
|
436
439
|
private handlePendingSyncCheckoutOrder;
|
package/lib/server/index.js
CHANGED
|
@@ -662,6 +662,86 @@ var Server = class {
|
|
|
662
662
|
};
|
|
663
663
|
}
|
|
664
664
|
};
|
|
665
|
+
this.handleMachinecodeBatchMetadata = async ({ data }) => {
|
|
666
|
+
var _a, _b;
|
|
667
|
+
const title = "handleMachinecodeBatchMetadata";
|
|
668
|
+
const backendPath = "/shop/machinecode/batch-metadata";
|
|
669
|
+
const batchMetadata = Array.isArray(data == null ? void 0 : data.data) ? data.data : [];
|
|
670
|
+
this.logInfo(`${title}: 开始处理`, {
|
|
671
|
+
backendPath,
|
|
672
|
+
batchSize: batchMetadata.length,
|
|
673
|
+
order_lookup: this.resolveMachinecodeBatchMetadataLookup(data) ?? null
|
|
674
|
+
});
|
|
675
|
+
if (batchMetadata.length === 0) {
|
|
676
|
+
return {
|
|
677
|
+
code: 200,
|
|
678
|
+
status: true,
|
|
679
|
+
message: "",
|
|
680
|
+
data: []
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
try {
|
|
684
|
+
await this.syncMachinecodeBatchMetadataToLocalOrder(data, batchMetadata);
|
|
685
|
+
} catch (error) {
|
|
686
|
+
const message = this.getUnknownErrorMessage(error);
|
|
687
|
+
this.logError(`${title}: 本地订单 metadata 更新失败`, {
|
|
688
|
+
error: message,
|
|
689
|
+
error_detail: this.normalizeUnknownError(error)
|
|
690
|
+
});
|
|
691
|
+
return {
|
|
692
|
+
code: 500,
|
|
693
|
+
status: false,
|
|
694
|
+
message,
|
|
695
|
+
data: null
|
|
696
|
+
};
|
|
697
|
+
}
|
|
698
|
+
if (!((_b = (_a = this.app) == null ? void 0 : _a.request) == null ? void 0 : _b.post)) {
|
|
699
|
+
this.logError(`${title}: app.request 不可用`, { backendPath });
|
|
700
|
+
return {
|
|
701
|
+
code: 500,
|
|
702
|
+
status: false,
|
|
703
|
+
message: "app.request 不可用",
|
|
704
|
+
data: null
|
|
705
|
+
};
|
|
706
|
+
}
|
|
707
|
+
try {
|
|
708
|
+
const response = await this.app.request.post(backendPath, {
|
|
709
|
+
data: batchMetadata
|
|
710
|
+
}, {
|
|
711
|
+
isShopApi: true,
|
|
712
|
+
customToast: () => {
|
|
713
|
+
}
|
|
714
|
+
});
|
|
715
|
+
return {
|
|
716
|
+
code: (response == null ? void 0 : response.code) ?? 200,
|
|
717
|
+
status: (response == null ? void 0 : response.status) ?? true,
|
|
718
|
+
message: (response == null ? void 0 : response.message) ?? "",
|
|
719
|
+
data: (response == null ? void 0 : response.data) ?? response
|
|
720
|
+
};
|
|
721
|
+
} catch (error) {
|
|
722
|
+
const backendError = this.extractBackendErrorResponse(error);
|
|
723
|
+
if (backendError) {
|
|
724
|
+
return {
|
|
725
|
+
code: backendError.code ?? 500,
|
|
726
|
+
status: backendError.status ?? false,
|
|
727
|
+
message: backendError.message ?? "后端拒绝 batch-metadata",
|
|
728
|
+
data: backendError.data ?? null
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
const message = this.getUnknownErrorMessage(error);
|
|
732
|
+
this.logError(`${title}: 请求失败`, {
|
|
733
|
+
backendPath,
|
|
734
|
+
error: message,
|
|
735
|
+
error_detail: this.normalizeUnknownError(error)
|
|
736
|
+
});
|
|
737
|
+
return {
|
|
738
|
+
code: 500,
|
|
739
|
+
status: false,
|
|
740
|
+
message,
|
|
741
|
+
data: null
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
};
|
|
665
745
|
this.handleOrderSalesDetail = async ({ url, data, path }) => {
|
|
666
746
|
var _a;
|
|
667
747
|
const requestPath = this.parseRequestPath(url, path);
|
|
@@ -1744,6 +1824,16 @@ var Server = class {
|
|
|
1744
1824
|
method: "post",
|
|
1745
1825
|
path: "/shop/local/print-order",
|
|
1746
1826
|
handler: this.handleLocalPrintOrder.bind(this)
|
|
1827
|
+
},
|
|
1828
|
+
{
|
|
1829
|
+
method: "post",
|
|
1830
|
+
path: "/shop/machinecode/batch-metadata",
|
|
1831
|
+
handler: this.handleMachinecodeBatchMetadata.bind(this)
|
|
1832
|
+
},
|
|
1833
|
+
{
|
|
1834
|
+
method: "post",
|
|
1835
|
+
path: "/machinecode/batch-metadata",
|
|
1836
|
+
handler: this.handleMachinecodeBatchMetadata.bind(this)
|
|
1747
1837
|
}
|
|
1748
1838
|
]);
|
|
1749
1839
|
this.registerPrefixRoutes([
|
|
@@ -2732,6 +2822,107 @@ var Server = class {
|
|
|
2732
2822
|
}
|
|
2733
2823
|
return void 0;
|
|
2734
2824
|
}
|
|
2825
|
+
resolveMachinecodeBatchMetadataLookup(data) {
|
|
2826
|
+
const candidates = [
|
|
2827
|
+
data == null ? void 0 : data.order_lookup,
|
|
2828
|
+
data == null ? void 0 : data.orderLookup,
|
|
2829
|
+
data == null ? void 0 : data.external_sale_number,
|
|
2830
|
+
data == null ? void 0 : data.externalSaleNumber,
|
|
2831
|
+
data == null ? void 0 : data.order_id,
|
|
2832
|
+
data == null ? void 0 : data.orderId,
|
|
2833
|
+
data == null ? void 0 : data.order_number,
|
|
2834
|
+
data == null ? void 0 : data.orderNumber,
|
|
2835
|
+
data == null ? void 0 : data.shop_order_number,
|
|
2836
|
+
data == null ? void 0 : data.shopOrderNumber,
|
|
2837
|
+
data == null ? void 0 : data.shop_full_order_number,
|
|
2838
|
+
data == null ? void 0 : data.shopFullOrderNumber
|
|
2839
|
+
];
|
|
2840
|
+
return candidates.find((candidate) => candidate !== void 0 && candidate !== null && candidate !== "");
|
|
2841
|
+
}
|
|
2842
|
+
async syncMachinecodeBatchMetadataToLocalOrder(data, batchMetadata) {
|
|
2843
|
+
var _a;
|
|
2844
|
+
const title = "handleMachinecodeBatchMetadata";
|
|
2845
|
+
const lookup = this.resolveMachinecodeBatchMetadataLookup(data);
|
|
2846
|
+
if (lookup === void 0) {
|
|
2847
|
+
this.logWarning(`${title}: order lookup 缺失,跳过本地订单 metadata 更新`, {
|
|
2848
|
+
batchSize: batchMetadata.length
|
|
2849
|
+
});
|
|
2850
|
+
return;
|
|
2851
|
+
}
|
|
2852
|
+
if (!((_a = this.order) == null ? void 0 : _a.getLocalOrderByLookup)) {
|
|
2853
|
+
this.logWarning(`${title}: Order 模块未注册,跳过本地订单 metadata 更新`, {
|
|
2854
|
+
lookup
|
|
2855
|
+
});
|
|
2856
|
+
return;
|
|
2857
|
+
}
|
|
2858
|
+
const localOrder = await this.order.getLocalOrderByLookup(lookup);
|
|
2859
|
+
if (!localOrder) {
|
|
2860
|
+
this.logWarning(`${title}: 本地订单不存在,跳过 metadata 更新`, {
|
|
2861
|
+
lookup
|
|
2862
|
+
});
|
|
2863
|
+
return;
|
|
2864
|
+
}
|
|
2865
|
+
const metadataByVoucherId = /* @__PURE__ */ new Map();
|
|
2866
|
+
for (const item of batchMetadata) {
|
|
2867
|
+
const voucherId = (item == null ? void 0 : item.voucher_id) ?? (item == null ? void 0 : item.voucherId);
|
|
2868
|
+
if (voucherId === void 0 || voucherId === null || voucherId === "")
|
|
2869
|
+
continue;
|
|
2870
|
+
metadataByVoucherId.set(String(voucherId), (item == null ? void 0 : item.metadata) || {});
|
|
2871
|
+
}
|
|
2872
|
+
if (metadataByVoucherId.size === 0) {
|
|
2873
|
+
this.logWarning(`${title}: voucher metadata 缺失,跳过本地订单 metadata 更新`, {
|
|
2874
|
+
lookup
|
|
2875
|
+
});
|
|
2876
|
+
return;
|
|
2877
|
+
}
|
|
2878
|
+
const vouchers = Array.isArray(localOrder.vouchers) ? localOrder.vouchers : [];
|
|
2879
|
+
let hasUpdatedVoucher = false;
|
|
2880
|
+
const nextVouchers = vouchers.map((voucher) => {
|
|
2881
|
+
const voucherId = voucher == null ? void 0 : voucher.voucher_id;
|
|
2882
|
+
if (voucherId === void 0 || voucherId === null)
|
|
2883
|
+
return voucher;
|
|
2884
|
+
const metadata = metadataByVoucherId.get(String(voucherId));
|
|
2885
|
+
if (!metadata)
|
|
2886
|
+
return voucher;
|
|
2887
|
+
hasUpdatedVoucher = true;
|
|
2888
|
+
return {
|
|
2889
|
+
...voucher,
|
|
2890
|
+
metadata
|
|
2891
|
+
};
|
|
2892
|
+
});
|
|
2893
|
+
if (!hasUpdatedVoucher) {
|
|
2894
|
+
this.logWarning(`${title}: 本地订单未命中任何 voucher,跳过 metadata 更新`, {
|
|
2895
|
+
lookup,
|
|
2896
|
+
voucher_ids: Array.from(metadataByVoucherId.keys())
|
|
2897
|
+
});
|
|
2898
|
+
return;
|
|
2899
|
+
}
|
|
2900
|
+
if (typeof this.order.overwriteExistingOrder === "function") {
|
|
2901
|
+
await this.order.overwriteExistingOrder({
|
|
2902
|
+
...localOrder,
|
|
2903
|
+
vouchers: nextVouchers
|
|
2904
|
+
});
|
|
2905
|
+
this.logInfo(`${title}: 本地订单 vouchers metadata 已更新`, {
|
|
2906
|
+
lookup,
|
|
2907
|
+
updatedCount: metadataByVoucherId.size
|
|
2908
|
+
});
|
|
2909
|
+
return;
|
|
2910
|
+
}
|
|
2911
|
+
if ((data == null ? void 0 : data.external_sale_number) && typeof this.order.markOrderSyncedByExternalSaleNumber === "function") {
|
|
2912
|
+
await this.order.markOrderSyncedByExternalSaleNumber({
|
|
2913
|
+
externalSaleNumber: data.external_sale_number,
|
|
2914
|
+
patch: { vouchers: nextVouchers }
|
|
2915
|
+
});
|
|
2916
|
+
this.logInfo(`${title}: 本地订单 vouchers metadata 已更新`, {
|
|
2917
|
+
lookup,
|
|
2918
|
+
updatedCount: metadataByVoucherId.size
|
|
2919
|
+
});
|
|
2920
|
+
return;
|
|
2921
|
+
}
|
|
2922
|
+
this.logWarning(`${title}: Order 模块不支持本地订单覆盖,跳过 metadata 更新`, {
|
|
2923
|
+
lookup
|
|
2924
|
+
});
|
|
2925
|
+
}
|
|
2735
2926
|
async handleOrderCheckoutSubmit(params) {
|
|
2736
2927
|
const { backendPath, data, title } = params;
|
|
2737
2928
|
this.logInfo(`${title}: 开始处理`, {
|
|
@@ -311,7 +311,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
311
311
|
date: string;
|
|
312
312
|
status: string;
|
|
313
313
|
week: string;
|
|
314
|
-
weekNum: 0 |
|
|
314
|
+
weekNum: 0 | 1 | 2 | 6 | 3 | 4 | 5;
|
|
315
315
|
}[]>;
|
|
316
316
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
317
317
|
private getScheduleDataByIds;
|
|
@@ -322,7 +322,7 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
322
322
|
* 获取当前的客户搜索条件
|
|
323
323
|
* @returns 当前搜索条件
|
|
324
324
|
*/
|
|
325
|
-
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "
|
|
325
|
+
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
|
|
326
326
|
/**
|
|
327
327
|
* 获取客户列表状态(包含滚动加载相关状态)
|
|
328
328
|
* @returns 客户状态
|
|
@@ -557,7 +557,8 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
557
557
|
}): Promise<void>;
|
|
558
558
|
handleCheckIn(params: {
|
|
559
559
|
voucher_ids: number[];
|
|
560
|
-
|
|
560
|
+
is_checkin: boolean;
|
|
561
|
+
}): Promise<any>;
|
|
561
562
|
/**
|
|
562
563
|
* 销毁模块:先调用父类(销毁所有 store 内子模块 + emit destroy + super.destroy()),
|
|
563
564
|
* 再清理 BookingTicket 自有资源(scan 监听 + scan 内存缓存)。
|
|
@@ -1513,6 +1513,7 @@ var BookingTicketImpl = class extends import_BaseSales.BaseSalesImpl {
|
|
|
1513
1513
|
}
|
|
1514
1514
|
// 打印手环,单个或批量都可以
|
|
1515
1515
|
async handlePrintWristband(params) {
|
|
1516
|
+
var _a;
|
|
1516
1517
|
const deviceTask = this.getDeviceTaskPlugin();
|
|
1517
1518
|
if (!(deviceTask == null ? void 0 : deviceTask.dispatch)) {
|
|
1518
1519
|
this.logger.addLog({
|
|
@@ -1524,6 +1525,13 @@ var BookingTicketImpl = class extends import_BaseSales.BaseSalesImpl {
|
|
|
1524
1525
|
});
|
|
1525
1526
|
return;
|
|
1526
1527
|
}
|
|
1528
|
+
this.logger.addLog({
|
|
1529
|
+
type: "info",
|
|
1530
|
+
title: "[BookingTicket] handlePrintWristband",
|
|
1531
|
+
metadata: {
|
|
1532
|
+
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids]
|
|
1533
|
+
}
|
|
1534
|
+
});
|
|
1527
1535
|
const deviceId = await this.getShortNumberOrDeviceId();
|
|
1528
1536
|
const idempotencyKey = (0, import_utils.createUuidV4)();
|
|
1529
1537
|
deviceTask.dispatch({
|
|
@@ -1532,12 +1540,12 @@ var BookingTicketImpl = class extends import_BaseSales.BaseSalesImpl {
|
|
|
1532
1540
|
payload: {
|
|
1533
1541
|
type: "WRISTBAND",
|
|
1534
1542
|
data: {
|
|
1535
|
-
order_id: this.getOrderIdentity(),
|
|
1543
|
+
order_id: (_a = this.getOrderIdentity()) == null ? void 0 : _a.orderId,
|
|
1536
1544
|
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids]
|
|
1537
1545
|
}
|
|
1538
1546
|
},
|
|
1539
1547
|
idempotency_key: idempotencyKey,
|
|
1540
|
-
name: "
|
|
1548
|
+
name: "PRINT_WRISTBAND",
|
|
1541
1549
|
source: "bookingTicket",
|
|
1542
1550
|
source_type: "handlePrintWristband",
|
|
1543
1551
|
source_id: idempotencyKey
|
|
@@ -1545,8 +1553,67 @@ var BookingTicketImpl = class extends import_BaseSales.BaseSalesImpl {
|
|
|
1545
1553
|
}
|
|
1546
1554
|
// 触发 checkIn
|
|
1547
1555
|
async handleCheckIn(params) {
|
|
1548
|
-
|
|
1549
|
-
|
|
1556
|
+
var _a, _b, _c;
|
|
1557
|
+
this.logger.addLog({
|
|
1558
|
+
type: "info",
|
|
1559
|
+
title: "[BookingTicket] handleCheckIn",
|
|
1560
|
+
metadata: {
|
|
1561
|
+
voucher_ids: Array.isArray(params.voucher_ids) ? params.voucher_ids : [params.voucher_ids],
|
|
1562
|
+
is_checkin: params.is_checkin
|
|
1563
|
+
}
|
|
1564
|
+
});
|
|
1565
|
+
const voucherIds = Array.isArray(params.voucher_ids) ? params.voucher_ids : [];
|
|
1566
|
+
const voucherIdSet = new Set(voucherIds);
|
|
1567
|
+
const tempOrder = (_b = (_a = this.store.order) == null ? void 0 : _a.getTempOrder) == null ? void 0 : _b.call(_a);
|
|
1568
|
+
const vouchers = (tempOrder == null ? void 0 : tempOrder.vouchers) || ((_c = this.store.order) == null ? void 0 : _c.getVouchers()) || [];
|
|
1569
|
+
const batchMetadata = [];
|
|
1570
|
+
let hasUpdatedVoucher = false;
|
|
1571
|
+
const nextVouchers = vouchers.map((voucher) => {
|
|
1572
|
+
var _a2;
|
|
1573
|
+
if (!voucherIdSet.has(voucher.voucher_id))
|
|
1574
|
+
return voucher;
|
|
1575
|
+
hasUpdatedVoucher = true;
|
|
1576
|
+
const metadata = {
|
|
1577
|
+
...voucher.metadata || {},
|
|
1578
|
+
ticket: {
|
|
1579
|
+
...((_a2 = voucher.metadata) == null ? void 0 : _a2.ticket) || {},
|
|
1580
|
+
is_checkin: params.is_checkin
|
|
1581
|
+
}
|
|
1582
|
+
};
|
|
1583
|
+
batchMetadata.push({
|
|
1584
|
+
voucher_id: voucher.voucher_id,
|
|
1585
|
+
metadata
|
|
1586
|
+
});
|
|
1587
|
+
return {
|
|
1588
|
+
...voucher,
|
|
1589
|
+
metadata
|
|
1590
|
+
};
|
|
1591
|
+
});
|
|
1592
|
+
if (tempOrder && hasUpdatedVoucher) {
|
|
1593
|
+
await this.replaceTempOrder({
|
|
1594
|
+
...tempOrder,
|
|
1595
|
+
vouchers: nextVouchers
|
|
1596
|
+
});
|
|
1597
|
+
}
|
|
1598
|
+
if (batchMetadata.length === 0) {
|
|
1599
|
+
return {
|
|
1600
|
+
code: 200,
|
|
1601
|
+
status: true,
|
|
1602
|
+
message: "",
|
|
1603
|
+
data: []
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
const identity = this.getOrderIdentity();
|
|
1607
|
+
const externalSaleNumber = (tempOrder == null ? void 0 : tempOrder.external_sale_number) || (identity == null ? void 0 : identity.externalSaleNumber) || void 0;
|
|
1608
|
+
const orderId = (tempOrder == null ? void 0 : tempOrder.order_id) ?? (identity == null ? void 0 : identity.orderId) ?? void 0;
|
|
1609
|
+
const orderLookup = externalSaleNumber || orderId || (identity == null ? void 0 : identity.orderNumber) || (identity == null ? void 0 : identity.shopOrderNumber) || (identity == null ? void 0 : identity.shopFullOrderNumber) || void 0;
|
|
1610
|
+
return this.request.post("/machinecode/batch-metadata", {
|
|
1611
|
+
data: batchMetadata,
|
|
1612
|
+
order_lookup: orderLookup,
|
|
1613
|
+
order_id: orderId,
|
|
1614
|
+
external_sale_number: externalSaleNumber
|
|
1615
|
+
}, {
|
|
1616
|
+
osServer: true
|
|
1550
1617
|
});
|
|
1551
1618
|
}
|
|
1552
1619
|
/**
|