feat: 添加MSW模拟服务和数据源集成

refactor: 重构页面组件移除冗余Layout组件

feat: 实现WebSocket和事件总线系统

feat: 添加队列和调度系统

docs: 更新架构文档和服务映射

style: 清理重复接口定义使用数据源

chore: 更新依赖项配置

feat: 添加运行时系统和领域引导

ci: 配置ESLint边界检查规则

build: 添加Redis和WebSocket依赖

test: 添加MSW浏览器环境入口

perf: 优化数据获取逻辑使用统一数据源

fix: 修复类型定义和状态管理问题
This commit is contained in:
2026-03-19 01:39:34 +08:00
parent cd55097dbf
commit 0dac26d781
176 changed files with 47075 additions and 8404 deletions

View File

@@ -23,7 +23,7 @@ export class OrderController {
try {
// 1. 根据不同平台解析 Payload (Mapping)
const normalizedOrder = this.mapPlatformPayloadToOrder(platform as string, payload, tenantId, shopId);
const normalizedOrder = OrderService.mapPlatformPayloadToOrder(platform as string, payload, tenantId, shopId);
if (!normalizedOrder) {
return res.status(400).json({ success: false, error: `Unsupported or invalid payload for platform: ${platform}` });
@@ -42,96 +42,7 @@ export class OrderController {
}
}
/**
* 将各平台原始 Payload 映射为系统统一模型
*/
private static mapPlatformPayloadToOrder(platform: string, payload: any, tenantId: string, shopId: string): Partial<ConsumerOrder> | null {
const upperPlatform = platform.toUpperCase();
switch (upperPlatform) {
case 'SHOPIFY':
return {
tenant_id: tenantId,
shop_id: shopId,
platform: 'SHOPIFY',
platform_order_id: String(payload.id || payload.name),
customer_name: payload.customer?.first_name ? `${payload.customer.first_name} ${payload.customer.last_name}` : 'Unknown',
customer_email: payload.customer?.email,
shipping_address: payload.shipping_address,
items: payload.line_items?.map((item: any) => ({
skuId: item.sku,
title: item.title,
price: Number(item.price),
quantity: item.quantity,
costPrice: item.cost_price || 0
})),
total_amount: Number(payload.total_price),
currency: payload.currency || 'USD',
status: this.mapShopifyStatus(payload.financial_status, payload.fulfillment_status),
payment_status: payload.financial_status === 'paid' ? 'COMPLETED' : 'PENDING',
fulfillment_status: payload.fulfillment_status === 'fulfilled' ? 'SHIPPED' : 'PENDING',
trace_id: `webhook-${Date.now()}`
};
case 'AMAZON':
// 模拟 Amazon SP-API 结构
return {
tenant_id: tenantId,
shop_id: shopId,
platform: 'AMAZON',
platform_order_id: payload.AmazonOrderId,
customer_name: payload.BuyerInfo?.BuyerName || 'Amazon Customer',
customer_email: payload.BuyerInfo?.BuyerEmail,
shipping_address: payload.ShippingAddress,
items: payload.OrderItems?.map((item: any) => ({
skuId: item.SellerSKU,
title: item.Title,
price: Number(item.ItemPrice?.Amount || 0),
quantity: item.QuantityOrdered,
costPrice: 0
})),
total_amount: Number(payload.OrderTotal?.Amount || 0),
currency: payload.OrderTotal?.CurrencyCode || 'USD',
status: payload.OrderStatus === 'Shipped' ? 'SHIPPED' : 'PAID',
payment_status: 'COMPLETED',
fulfillment_status: payload.OrderStatus === 'Shipped' ? 'SHIPPED' : 'PENDING',
trace_id: `webhook-${Date.now()}`
};
case 'TIKTOK':
// 模拟 TikTok Shop API 结构
return {
tenant_id: tenantId,
shop_id: shopId,
platform: 'TIKTOK',
platform_order_id: payload.order_id,
customer_name: payload.recipient_address?.name || 'TikTok Customer',
shipping_address: payload.recipient_address,
items: payload.item_list?.map((item: any) => ({
skuId: item.sku_id,
title: item.product_name,
price: Number(item.sku_sale_price),
quantity: 1,
costPrice: 0
})),
total_amount: Number(payload.total_amount),
currency: payload.currency || 'USD',
status: payload.order_status === 100 ? 'PAID' : 'UNPAID',
payment_status: payload.order_status >= 100 ? 'COMPLETED' : 'PENDING',
fulfillment_status: 'PENDING',
trace_id: `webhook-${Date.now()}`
};
default:
return null;
}
}
private static mapShopifyStatus(financial: string, fulfillment: string): 'UNPAID' | 'PAID' | 'SHIPPED' | 'DELIVERED' {
if (fulfillment === 'fulfilled') return 'SHIPPED';
if (financial === 'paid') return 'PAID';
return 'UNPAID';
}
/**
* 手动触发同步 (API 入口)