feat(woocommerce): 重构订单物流追踪信息处理方式

使用元数据中的物流追踪信息替代原有接口
移除冗余的履行信息获取逻辑
This commit is contained in:
tikkhun 2026-01-23 18:29:20 +08:00
parent a556ab69bf
commit 16d27179e7
2 changed files with 59 additions and 66 deletions

View File

@ -31,11 +31,13 @@ import {
WooProductSearchParams,
WpMediaGetListParams,
WooFulfillment,
MetaDataFulfillment,
} from '../dto/woocommerce.dto';
import { Site } from '../entity/site.entity';
import { WPService } from '../service/wp.service';
import { BatchOperationDTO, BatchOperationResultDTO } from '../dto/batch.dto';
import { toArray, toNumber } from '../utils/trans.util';
import dayjs = require('dayjs');
export class WooCommerceAdapter implements ISiteAdapter {
// 构造函数接收站点配置与服务实例
@ -397,14 +399,17 @@ export class WooCommerceAdapter implements ISiteAdapter {
mapPlatformToUnifiedOrder(item: WooOrder): UnifiedOrderDTO {
// 将 WooCommerce 订单数据映射为统一订单DTO
// 包含账单地址与收货地址以及创建与更新时间
// 映射物流追踪信息,将后端格式转换为前端期望的格式
const fulfillments = (item.fulfillments || []).map((track) => ({
const metaFulfillments: MetaDataFulfillment[] = item.meta_data?.find?.(_meta => _meta.key === "_wc_shipment_tracking_items")?.value || []
const fulfillments = metaFulfillments?.map?.((track) => {
return ({
tracking_id: track.tracking_id,
tracking_number: track.tracking_number,
tracking_product_code: track.tracking_product_code,
shipping_provider: track.tracking_provider,
date_created: track.data_sipped,
}));
date_created: dayjs(track.date_shipped),
})
});
return {
id: item.id,
@ -457,30 +462,8 @@ export class WooCommerceAdapter implements ISiteAdapter {
const requestParams = this.mapOrderSearchParams(params);
const { items, total, totalPages, page, per_page } = await this.wpService.fetchResourcePaged<any>(this.site, 'orders', requestParams);
// 并行获取所有订单的履行信息
const ordersWithFulfillments = await Promise.all(
items.map(async (order: any) => {
try {
// 获取订单的履行信息
const fulfillments = await this.getOrderFulfillments(order.id);
// 将履行信息添加到订单对象中
return {
...order,
fulfillments: fulfillments || []
};
} catch (error) {
// 如果获取履行信息失败,仍然返回订单,只是履行信息为空数组
console.error(`获取订单 ${order.id} 的履行信息失败:`, error);
return {
...order,
fulfillments: []
};
}
})
);
return {
items: ordersWithFulfillments.map(this.mapPlatformToUnifiedOrder),
items: items.map(this.mapPlatformToUnifiedOrder),
total,
totalPages,
page,

View File

@ -369,8 +369,18 @@ export interface WooOrder {
date_created_gmt?: string;
date_modified?: string;
date_modified_gmt?: string;
// 物流追踪信息
fulfillments?: WooFulfillment[];
}
export interface MetaDataFulfillment {
custom_tracking_link: string;
custom_tracking_provider: string;
date_shipped: number;
source: string;
status_shipped: string;
tracking_id: string;
tracking_number: string;
tracking_product_code: string;
tracking_provider: string;
user_id: number;
}
// 这个是一个插件的物流追踪信息
// 接口: