docs(order.entity): 更新total字段的ApiProperty描述 #62
|
|
@ -31,11 +31,13 @@ import {
|
||||||
WooProductSearchParams,
|
WooProductSearchParams,
|
||||||
WpMediaGetListParams,
|
WpMediaGetListParams,
|
||||||
WooFulfillment,
|
WooFulfillment,
|
||||||
|
MetaDataFulfillment,
|
||||||
} from '../dto/woocommerce.dto';
|
} from '../dto/woocommerce.dto';
|
||||||
import { Site } from '../entity/site.entity';
|
import { Site } from '../entity/site.entity';
|
||||||
import { WPService } from '../service/wp.service';
|
import { WPService } from '../service/wp.service';
|
||||||
import { BatchOperationDTO, BatchOperationResultDTO } from '../dto/batch.dto';
|
import { BatchOperationDTO, BatchOperationResultDTO } from '../dto/batch.dto';
|
||||||
import { toArray, toNumber } from '../utils/trans.util';
|
import { toArray, toNumber } from '../utils/trans.util';
|
||||||
|
import dayjs = require('dayjs');
|
||||||
|
|
||||||
export class WooCommerceAdapter implements ISiteAdapter {
|
export class WooCommerceAdapter implements ISiteAdapter {
|
||||||
// 构造函数接收站点配置与服务实例
|
// 构造函数接收站点配置与服务实例
|
||||||
|
|
@ -397,14 +399,17 @@ export class WooCommerceAdapter implements ISiteAdapter {
|
||||||
mapPlatformToUnifiedOrder(item: WooOrder): UnifiedOrderDTO {
|
mapPlatformToUnifiedOrder(item: WooOrder): UnifiedOrderDTO {
|
||||||
// 将 WooCommerce 订单数据映射为统一订单DTO
|
// 将 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_id: track.tracking_id,
|
||||||
tracking_number: track.tracking_number,
|
tracking_number: track.tracking_number,
|
||||||
|
tracking_product_code: track.tracking_product_code,
|
||||||
shipping_provider: track.tracking_provider,
|
shipping_provider: track.tracking_provider,
|
||||||
date_created: track.data_sipped,
|
date_created: dayjs(track.date_shipped).toString(),
|
||||||
}));
|
})
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
|
|
@ -457,30 +462,8 @@ export class WooCommerceAdapter implements ISiteAdapter {
|
||||||
const requestParams = this.mapOrderSearchParams(params);
|
const requestParams = this.mapOrderSearchParams(params);
|
||||||
const { items, total, totalPages, page, per_page } = await this.wpService.fetchResourcePaged<any>(this.site, 'orders', requestParams);
|
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 {
|
return {
|
||||||
...order,
|
items: items.map(this.mapPlatformToUnifiedOrder),
|
||||||
fulfillments: fulfillments || []
|
|
||||||
};
|
|
||||||
} catch (error) {
|
|
||||||
// 如果获取履行信息失败,仍然返回订单,只是履行信息为空数组
|
|
||||||
console.error(`获取订单 ${order.id} 的履行信息失败:`, error);
|
|
||||||
return {
|
|
||||||
...order,
|
|
||||||
fulfillments: []
|
|
||||||
};
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
items: ordersWithFulfillments.map(this.mapPlatformToUnifiedOrder),
|
|
||||||
total,
|
total,
|
||||||
totalPages,
|
totalPages,
|
||||||
page,
|
page,
|
||||||
|
|
|
||||||
|
|
@ -811,7 +811,8 @@ export class FulfillmentDTO {
|
||||||
tracking_id?: string;
|
tracking_id?: string;
|
||||||
@ApiProperty({ description: '物流单号', required: false })
|
@ApiProperty({ description: '物流单号', required: false })
|
||||||
tracking_number?: string;
|
tracking_number?: string;
|
||||||
|
@ApiProperty({ description: "物流产品代码" , required: false})
|
||||||
|
tracking_product_code?: string;
|
||||||
@ApiProperty({ description: '物流公司', required: false })
|
@ApiProperty({ description: '物流公司', required: false })
|
||||||
shipping_provider?: string;
|
shipping_provider?: string;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -369,8 +369,18 @@ export interface WooOrder {
|
||||||
date_created_gmt?: string;
|
date_created_gmt?: string;
|
||||||
date_modified?: string;
|
date_modified?: string;
|
||||||
date_modified_gmt?: 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;
|
||||||
}
|
}
|
||||||
// 这个是一个插件的物流追踪信息
|
// 这个是一个插件的物流追踪信息
|
||||||
// 接口:
|
// 接口:
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ export class Order {
|
||||||
@Expose()
|
@Expose()
|
||||||
cart_tax: number;
|
cart_tax: number;
|
||||||
|
|
||||||
@ApiProperty()
|
@ApiProperty({ type: "总金额"})
|
||||||
@Column('decimal', { precision: 10, scale: 2, default: 0 })
|
@Column('decimal', { precision: 10, scale: 2, default: 0 })
|
||||||
@Expose()
|
@Expose()
|
||||||
total: number;
|
total: number;
|
||||||
|
|
|
||||||
|
|
@ -1479,7 +1479,7 @@ export class OrderService {
|
||||||
}
|
}
|
||||||
|
|
||||||
let itemSql = `
|
let itemSql = `
|
||||||
SELECT os.productId, os.name, SUM(os.quantity) AS totalQuantity, COUNT(DISTINCT os.orderId) AS totalOrders
|
SELECT os.productId, os.name, os.sku, SUM(os.quantity) AS totalQuantity, COUNT(DISTINCT os.orderId) AS totalOrders
|
||||||
FROM order_sale os
|
FROM order_sale os
|
||||||
INNER JOIN \`order\` o ON o.id = os.orderId
|
INNER JOIN \`order\` o ON o.id = os.orderId
|
||||||
WHERE o.date_paid BETWEEN ? AND ?
|
WHERE o.date_paid BETWEEN ? AND ?
|
||||||
|
|
@ -1501,7 +1501,7 @@ export class OrderService {
|
||||||
}
|
}
|
||||||
itemSql += nameCondition;
|
itemSql += nameCondition;
|
||||||
itemSql += `
|
itemSql += `
|
||||||
GROUP BY os.productId, os.name
|
GROUP BY os.productId, os.name, os.sku
|
||||||
ORDER BY totalQuantity DESC
|
ORDER BY totalQuantity DESC
|
||||||
LIMIT ? OFFSET ?
|
LIMIT ? OFFSET ?
|
||||||
`;
|
`;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue