659 lines
15 KiB
TypeScript
659 lines
15 KiB
TypeScript
// WooCommerce 平台原始数据类型定义
|
|
// 仅包含当前映射逻辑所需字段以保持简洁与类型安全
|
|
|
|
|
|
// 产品类型
|
|
export interface WooProduct {
|
|
// 产品主键
|
|
id: number;
|
|
// 创建时间
|
|
date_created: string;
|
|
// 创建时间(GMT)
|
|
date_created_gmt: string;
|
|
// 更新时间
|
|
date_modified: string;
|
|
// 更新时间(GMT)
|
|
date_modified_gmt: string;
|
|
// 产品类型 simple grouped external variable
|
|
type: string;
|
|
// 产品状态 draft pending private publish
|
|
status: string;
|
|
// 是否为特色产品
|
|
featured: boolean;
|
|
// 目录可见性选项:visible, catalog, search and hidden. Default is visible.
|
|
catalog_visibility: string;
|
|
|
|
// 常规价格
|
|
regular_price?: string;
|
|
// 促销价格
|
|
sale_price?: string;
|
|
// 当前价格
|
|
price?: string;
|
|
price_html?: string;
|
|
date_on_sale_from?: string; // Date the product is on sale from.
|
|
date_on_sale_from_gmt?: string; // Date the product is on sale from (GMT).
|
|
date_on_sale_to?: string; // Date the product is on sale to.
|
|
date_on_sale_to_gmt?: string; // Date the product is on sale to (GMT).
|
|
on_sale: boolean; // Whether the product is on sale.
|
|
purchasable: boolean; // Whether the product is purchasable.
|
|
total_sales: number; // Total sales for this product.
|
|
virtual: boolean; // Whether the product is virtual.
|
|
downloadable: boolean; // Whether the product is downloadable.
|
|
downloads: Array<{ id?: number; name?: string; file?: string }>; // Downloadable files for the product.
|
|
download_limit: number; // Download limit.
|
|
download_expiry: number; // Download expiry days.
|
|
external_url: string; // URL of the external product.
|
|
|
|
global_unique_id: string; // GTIN, UPC, EAN or ISBN - a unique identifier for each distinct product and service that can be purchased.
|
|
// 产品SKU
|
|
sku: string;
|
|
// 产品名称
|
|
name: string;
|
|
// 产品描述
|
|
description: string;
|
|
// 产品短描述
|
|
short_description: string;
|
|
|
|
// 产品永久链接
|
|
permalink: string;
|
|
// 产品URL路径
|
|
slug: string;
|
|
|
|
// 库存状态
|
|
stock_status?: 'instock' | 'outofstock' | 'onbackorder';
|
|
// 库存数量
|
|
stock_quantity?: number;
|
|
// 是否管理库存
|
|
manage_stock?: boolean;
|
|
// 缺货预定设置 no notify yes
|
|
backorders?: 'no' | 'notify' | 'yes';
|
|
// 是否允许缺货预定 只读
|
|
backorders_allowed?: boolean;
|
|
// 是否处于缺货预定状态 只读
|
|
backordered?: boolean;
|
|
// 是否单独出售
|
|
sold_individually?: boolean;
|
|
// 重量
|
|
weight?: string;
|
|
// 尺寸
|
|
dimensions?: { length?: string; width?: string; height?: string };
|
|
// 是否需要运输 只读
|
|
shipping_required?: boolean;
|
|
// 运输是否计税 只读
|
|
shipping_taxable?: boolean;
|
|
// 运输类别 slug
|
|
shipping_class?: string;
|
|
// 运输类别ID 只读
|
|
shipping_class_id?: number;
|
|
// 图片列表
|
|
images?: Array<{ id: number; src: string; name?: string; alt?: string }>;
|
|
// 属性列表
|
|
attributes?: Array<{
|
|
id?: number;
|
|
name?: string;
|
|
position?: number;
|
|
visible?: boolean;
|
|
variation?: boolean;
|
|
options?: string[];
|
|
}>;
|
|
// 变体列表
|
|
variations?: number[];
|
|
// 默认变体属性
|
|
default_attributes?: Array<{ id?: number; name?: string; option?: string }>;
|
|
// 允许评论
|
|
reviews_allowed?: boolean;
|
|
// 平均评分 只读
|
|
average_rating?: string;
|
|
// 评分数量 只读
|
|
rating_count?: number;
|
|
// 相关产品ID列表 只读
|
|
related_ids?: number[];
|
|
// 追加销售产品ID列表
|
|
upsell_ids?: number[];
|
|
// 交叉销售产品ID列表
|
|
cross_sell_ids?: number[];
|
|
// 父产品ID
|
|
parent_id?: number;
|
|
// 购买备注
|
|
purchase_note?: string;
|
|
// 分类列表
|
|
categories?: Array<{ id?: number; name?: string; slug?: string }>;
|
|
// 标签列表
|
|
tags?: Array<{ id?: number; name?: string; slug?: string }>;
|
|
// 菜单排序
|
|
menu_order?: number;
|
|
// 元数据
|
|
meta_data?: Array<{ id?: number; key: string; value: any }>;
|
|
}
|
|
export interface WooVariation {
|
|
// 变体主键
|
|
id: number;
|
|
// 创建时间
|
|
date_created: string;
|
|
// 创建时间(GMT)
|
|
date_created_gmt: string;
|
|
// 更新时间
|
|
date_modified: string;
|
|
// 更新时间(GMT)
|
|
date_modified_gmt: string;
|
|
// 变体描述
|
|
description: string;
|
|
// 变体SKU
|
|
sku: string;
|
|
// 常规价格
|
|
regular_price?: string;
|
|
// 促销价格
|
|
sale_price?: string;
|
|
// 当前价格
|
|
price?: string;
|
|
// 价格HTML
|
|
price_html?: string;
|
|
// 促销开始日期
|
|
date_on_sale_from?: string;
|
|
// 促销开始日期(GMT)
|
|
date_on_sale_from_gmt?: string;
|
|
// 促销结束日期
|
|
date_on_sale_to?: string;
|
|
// 促销结束日期(GMT)
|
|
date_on_sale_to_gmt?: string;
|
|
// 是否在促销中
|
|
on_sale: boolean;
|
|
// 是否可购买
|
|
purchasable: boolean;
|
|
// 总销量
|
|
total_sales: number;
|
|
// 是否为虚拟商品
|
|
virtual: boolean;
|
|
// 是否可下载
|
|
downloadable: boolean;
|
|
// 下载文件
|
|
downloads: Array<{ id?: number; name?: string; file?: string }>;
|
|
// 下载限制
|
|
download_limit: number;
|
|
// 下载过期天数
|
|
download_expiry: number;
|
|
// 库存状态
|
|
stock_status?: 'instock' | 'outofstock' | 'onbackorder';
|
|
// 库存数量
|
|
stock_quantity?: number;
|
|
// 是否管理库存
|
|
manage_stock?: boolean;
|
|
// 缺货预定设置
|
|
backorders?: 'no' | 'notify' | 'yes';
|
|
// 是否允许缺货预定
|
|
backorders_allowed?: boolean;
|
|
// 是否处于缺货预定状态
|
|
backordered?: boolean;
|
|
// 是否单独出售
|
|
sold_individually?: boolean;
|
|
// 重量
|
|
weight?: string;
|
|
// 尺寸
|
|
dimensions?: { length?: string; width?: string; height?: string };
|
|
// 是否需要运输
|
|
shipping_required?: boolean;
|
|
// 运输是否计税
|
|
shipping_taxable?: boolean;
|
|
// 运输类别
|
|
shipping_class?: string;
|
|
// 运输类别ID
|
|
shipping_class_id?: number;
|
|
// 变体图片
|
|
image?: { id: number; src: string; name?: string; alt?: string };
|
|
// 变体属性列表
|
|
attributes?: Array<{
|
|
id?: number;
|
|
name?: string;
|
|
option?: string;
|
|
}>;
|
|
// 菜单排序
|
|
menu_order?: number;
|
|
// 元数据
|
|
meta_data?: Array<{ id?: number; key: string; value: any }>;
|
|
// 父产品ID
|
|
parent_id?: number;
|
|
// 变体名称
|
|
name?: string;
|
|
// 是否启用
|
|
status?: string;
|
|
}
|
|
|
|
// 订单类型
|
|
export interface WooOrder {
|
|
// 订单主键
|
|
id: number;
|
|
// 父订单ID
|
|
parent_id?: number;
|
|
// 订单号
|
|
number: string;
|
|
// 订单键 只读
|
|
order_key?: string;
|
|
// 创建来源
|
|
created_via?: string;
|
|
// WooCommerce版本 只读
|
|
version?: string;
|
|
// 状态
|
|
status: string;
|
|
// 币种
|
|
currency: string;
|
|
// 价格是否含税 只读
|
|
prices_include_tax?: boolean;
|
|
// 总金额
|
|
total: string;
|
|
// 总税额 只读
|
|
total_tax?: string;
|
|
// 折扣总额 只读
|
|
discount_total?: string;
|
|
// 折扣税额 只读
|
|
discount_tax?: string;
|
|
// 运费总额 只读
|
|
shipping_total?: string;
|
|
// 运费税额 只读
|
|
shipping_tax?: string;
|
|
// 购物车税额 只读
|
|
cart_tax?: string;
|
|
// 客户ID
|
|
customer_id: number;
|
|
// 客户IP 只读
|
|
customer_ip_address?: string;
|
|
// 客户UA 只读
|
|
customer_user_agent?: string;
|
|
// 客户备注
|
|
customer_note?: string;
|
|
// 账单信息
|
|
billing?: {
|
|
first_name?: string;
|
|
last_name?: string;
|
|
email?: string;
|
|
company?: string;
|
|
address_1?: string;
|
|
address_2?: string;
|
|
city?: string;
|
|
state?: string;
|
|
postcode?: string;
|
|
country?: string;
|
|
phone?: string;
|
|
fullname?: string;
|
|
};
|
|
// 收货信息
|
|
shipping?: {
|
|
first_name?: string;
|
|
last_name?: string;
|
|
company?: string;
|
|
address_1?: string;
|
|
address_2?: string;
|
|
city?: string;
|
|
state?: string;
|
|
postcode?: string;
|
|
country?: string;
|
|
phone?: string;
|
|
fullname?: string;
|
|
};
|
|
// 订单项
|
|
line_items?: Array<{
|
|
product_id?: number;
|
|
variation_id?: number;
|
|
quantity?: number;
|
|
subtotal?: string;
|
|
subtotal_tax?: string;
|
|
total?: string;
|
|
total_tax?: string;
|
|
name?: string;
|
|
sku?: string;
|
|
price?: number;
|
|
meta_data?: Array<{ key: string; value: any }>;
|
|
[key: string]: any;
|
|
}>;
|
|
// 税费行 只读
|
|
tax_lines?: Array<{
|
|
id?: number;
|
|
rate_code?: string;
|
|
rate_id?: number;
|
|
label?: string;
|
|
tax_total?: string;
|
|
shipping_tax_total?: string;
|
|
compound?: boolean;
|
|
meta_data?: any[];
|
|
}>;
|
|
// 物流费用行
|
|
shipping_lines?: Array<{
|
|
id?: number;
|
|
method_title?: string;
|
|
method_id?: string;
|
|
total?: string;
|
|
total_tax?: string;
|
|
taxes?: any[];
|
|
meta_data?: any[];
|
|
}>;
|
|
// 手续费行
|
|
fee_lines?: Array<{
|
|
id?: number;
|
|
name?: string;
|
|
tax_class?: string;
|
|
tax_status?: string;
|
|
total?: string;
|
|
total_tax?: string;
|
|
taxes?: any[];
|
|
meta_data?: any[];
|
|
}>;
|
|
// 优惠券行
|
|
coupon_lines?: Array<{
|
|
id?: number;
|
|
code?: string;
|
|
discount?: string;
|
|
discount_tax?: string;
|
|
meta_data?: any[];
|
|
}>;
|
|
// 退款列表 只读
|
|
refunds?: Array<WooOrderRefund>;
|
|
// 支付方式标题
|
|
payment_method_title?: string;
|
|
// 支付方式ID
|
|
payment_method?: string;
|
|
// 交易ID
|
|
transaction_id?: string;
|
|
// 已支付时间
|
|
date_paid?: string;
|
|
date_paid_gmt?: string;
|
|
// 完成时间
|
|
date_completed?: string;
|
|
date_completed_gmt?: string;
|
|
// 购物车hash 只读
|
|
cart_hash?: string;
|
|
// 设置为已支付 写入专用
|
|
set_paid?: boolean;
|
|
// 元数据
|
|
meta_data?: Array<{ id?: number; key: string; value: any }>;
|
|
// 创建与更新时间
|
|
date_created: string;
|
|
date_created_gmt?: string;
|
|
date_modified?: string;
|
|
date_modified_gmt?: string;
|
|
// 物流追踪信息
|
|
fulfillments?: Array<{
|
|
tracking_number?: string;
|
|
shipping_provider?: string;
|
|
shipping_method?: string;
|
|
status?: string;
|
|
date_created?: string;
|
|
items?: Array<{
|
|
order_item_id?: number;
|
|
quantity?: number;
|
|
}>;
|
|
}>;
|
|
}
|
|
export interface WooOrderRefund {
|
|
id?: number;
|
|
reason?: string;
|
|
total?: string;
|
|
}
|
|
|
|
// 订阅类型
|
|
export interface WooSubscription {
|
|
// 订阅主键
|
|
id: number;
|
|
// 订阅状态
|
|
status: string;
|
|
// 客户ID
|
|
customer_id: number;
|
|
// 计费周期
|
|
billing_period?: string;
|
|
// 计费间隔
|
|
billing_interval?: number;
|
|
// 开始时间
|
|
start_date?: string;
|
|
// 下次支付时间
|
|
next_payment_date?: string;
|
|
// 订阅项
|
|
line_items?: any[];
|
|
// 创建时间
|
|
date_created?: string;
|
|
// 更新时间
|
|
date_modified?: string;
|
|
}
|
|
|
|
// WordPress 媒体类型
|
|
export interface WpMedia {
|
|
// 媒体主键
|
|
id: number;
|
|
// 标题可能为字符串或包含rendered的对象
|
|
title?: { rendered?: string } | string;
|
|
// 媒体类型
|
|
media_type?: string;
|
|
// MIME类型
|
|
mime_type?: string;
|
|
// 源地址
|
|
source_url?: string;
|
|
// 创建时间兼容date字段
|
|
date_created?: string;
|
|
date?: string;
|
|
// 更新时间兼容modified字段
|
|
date_modified?: string;
|
|
modified?: string;
|
|
}
|
|
|
|
// 评论类型
|
|
export interface WooReview {
|
|
// 评论ID
|
|
id: number;
|
|
// 评论内容
|
|
review: string;
|
|
// 评分
|
|
rating: number;
|
|
// 评论者
|
|
reviewer: string;
|
|
// 评论者邮箱
|
|
reviewer_email: string;
|
|
// 状态
|
|
status: string;
|
|
// 产品ID
|
|
product_id: number;
|
|
// 创建日期
|
|
date_created: string;
|
|
// 更新日期
|
|
|
|
}
|
|
|
|
// 客户类型
|
|
export interface WooCustomer {
|
|
// 客户主键
|
|
id: number;
|
|
// 头像URL
|
|
avatar_url?: string;
|
|
// 邮箱
|
|
email: string;
|
|
// 订单总数
|
|
orders?: number;
|
|
// 总花费
|
|
total_spent?: number | string;
|
|
// 名
|
|
first_name?: string;
|
|
// 姓
|
|
last_name?: string;
|
|
// 用户名
|
|
username?: string;
|
|
// 角色 只读
|
|
role?: string;
|
|
// 密码 写入专用
|
|
password?: string;
|
|
// 账单信息
|
|
billing?: {
|
|
first_name?: string;
|
|
last_name?: string;
|
|
email?: string;
|
|
company?: string;
|
|
phone?: string;
|
|
address_1?: string;
|
|
address_2?: string;
|
|
city?: string;
|
|
state?: string;
|
|
postcode?: string;
|
|
country?: string;
|
|
};
|
|
// 收货信息
|
|
shipping?: {
|
|
first_name?: string;
|
|
last_name?: string;
|
|
company?: string;
|
|
phone?: string;
|
|
address_1?: string;
|
|
address_2?: string;
|
|
city?: string;
|
|
state?: string;
|
|
postcode?: string;
|
|
country?: string;
|
|
};
|
|
// 是否为付费客户 只读
|
|
is_paying_customer?: boolean;
|
|
// 元数据
|
|
meta_data?: Array<{ id?: number; key: string; value: any }>;
|
|
// 创建时间
|
|
date_created?: string;
|
|
date_created_gmt?: string;
|
|
// 更新时间
|
|
date_modified?: string;
|
|
date_modified_gmt?: string;
|
|
}
|
|
|
|
// Webhook类型
|
|
export interface WooWebhook {
|
|
id: number;
|
|
name: string;
|
|
status: string;
|
|
topic: string;
|
|
resource: string;
|
|
event: string;
|
|
hooks: string;
|
|
delivery_url: string;
|
|
secret: string;
|
|
date_created: string;
|
|
date_created_gmt: string;
|
|
date_modified: string;
|
|
date_modified_gmt: string;
|
|
api_version: string;
|
|
meta_data?: Array<{ id?: number; key: string; value: any }>;
|
|
}
|
|
|
|
|
|
|
|
export interface WooOrderSearchParams {
|
|
context: WooContext;
|
|
page: number;
|
|
per_page: number;
|
|
search: string;
|
|
after: string;
|
|
before: string;
|
|
modified_after: string;
|
|
modified_before: string;
|
|
date_are_gmt: boolean;
|
|
exclude: string[];
|
|
include: string[];
|
|
offset: number;
|
|
order: string;
|
|
orderby: string;
|
|
parant: string[];
|
|
status: (WooOrderStatusSearchParams)[];
|
|
customer: number;
|
|
product: number;
|
|
dp: number;
|
|
created_via: string;
|
|
}
|
|
|
|
|
|
export enum WooOrderStatusSearchParams {
|
|
pending,
|
|
processing,
|
|
"on-hold",
|
|
completed,
|
|
cancelled,
|
|
refunded,
|
|
failed,
|
|
trash,
|
|
any
|
|
}
|
|
|
|
|
|
export interface WooProductSearchParams extends ListParams {
|
|
slug: string;
|
|
status: string[];
|
|
include_status: string;
|
|
exclude_status: string;
|
|
type: string;
|
|
include_types: string;
|
|
exclude_types: string;
|
|
sku: string;
|
|
featured: boolean;
|
|
category: string;
|
|
tag: string;
|
|
shipping_class: string;
|
|
attribute: string;
|
|
attribute_term: string;
|
|
tax_class: string;
|
|
on_sale: boolean;
|
|
min_price: string;
|
|
max_price: string;
|
|
stock_status: string;
|
|
virtual: boolean;
|
|
downloadable: boolean;
|
|
}
|
|
|
|
export interface ListParams {
|
|
context: WooContext;
|
|
page: number;
|
|
per_page: number;
|
|
search: string;
|
|
search_fields: any[];
|
|
after: string;
|
|
before: string;
|
|
modified_after: string;
|
|
modified_before: string;
|
|
date_are_gmt: boolean;
|
|
exclude: string[];
|
|
include: string[];
|
|
offset: number;
|
|
order: string;
|
|
orderby: string;
|
|
parant: string[];
|
|
parent_exclude: string[];
|
|
}
|
|
export enum WooContext {
|
|
view,
|
|
edit
|
|
}
|
|
export enum WooProductStatusSearchParams {
|
|
any,
|
|
draft,
|
|
pending,
|
|
private,
|
|
publish
|
|
}
|
|
|
|
// 发货相关DTO
|
|
export class WooShipOrderItemDTO {
|
|
order_item_id: number;
|
|
quantity: number;
|
|
}
|
|
|
|
export class WooShipOrderDTO {
|
|
tracking_number?: string;
|
|
shipping_provider?: string;
|
|
shipping_method?: string;
|
|
items?: WooShipOrderItemDTO[];
|
|
}
|
|
|
|
export class WooCancelShipOrderDTO {
|
|
reason?: string;
|
|
shipment_id?: string;
|
|
}
|
|
|
|
export class WooBatchShipOrderItemDTO {
|
|
order_id: string;
|
|
tracking_number?: string;
|
|
shipping_provider?: string;
|
|
shipping_method?: string;
|
|
items?: WooShipOrderItemDTO[];
|
|
}
|
|
|
|
export class WooBatchShipOrdersDTO {
|
|
orders: WooBatchShipOrderItemDTO[];
|
|
} |