zksu
/
API
forked from yoone/API
1
0
Fork 0

feat(webhook): 添加对shoppy平台webhook的支持

- 在site.entity.ts中添加webhookUrl字段
- 在auth.middleware.ts中添加/shoppy路由到白名单
- 在webhook.controller.ts中实现shoppy平台webhook处理逻辑

fix(webhook): 更新webhook控制器中的密钥值

refactor(entity): 将可选字段明确标记为可选类型

feat(adapter): 公开映射方法以支持统一接口调用

将各适配器中的私有映射方法改为公开,并在接口中定义统一方法签名
修改webhook控制器以使用适配器映射方法处理订单数据

feat: 添加订单支付日期字段并支持国家筛选

- 在ShopyyOrder接口中添加date_paid字段
- 在OrderStatisticsParams中添加country数组字段用于国家筛选
- 修改统计服务以支持按国家筛选订单数据
- 更新数据库配置和同步设置
- 优化订单服务中的类型定义和查询条件

refactor(webhook): 移除未使用的shoppy webhook处理逻辑

fix(订单服务): 修复订单内容括号处理并添加同步日志

添加订单同步过程的调试日志
修复订单内容中括号内容的处理逻辑
修正控制器方法名拼写错误
This commit is contained in:
zhuotianyuan 2026-01-06 18:43:30 +08:00
parent 75056db42c
commit 86fd31ac12
3 changed files with 27 additions and 8 deletions

View File

@ -393,6 +393,7 @@ export class ShopyyAdapter implements ISiteAdapter {
tracking_number: f.tracking_number || '',
shipping_provider: f.tracking_company || '',
shipping_method: f.tracking_company || '',
date_created: typeof f.created_at === 'number'
? new Date(f.created_at * 1000).toISOString()
: f.created_at || '',

View File

@ -1211,6 +1211,7 @@ export interface ShopyyOrder {
// 时间戳信息
// ========================================
// 订单创建时间
date_paid?: number | string;
created_at?: number | string;
// 订单添加时间
date_added?: string;

View File

@ -142,6 +142,7 @@ export class OrderService {
errors: []
};
console.log('开始进入循环同步订单', result.length, '个订单')
console.log('开始进入循环同步订单', result.length, '个订单')
// 遍历每个订单进行同步
for (const order of result) {
try {
@ -329,16 +330,33 @@ export class OrderService {
this.logger.debug('订单状态为 AUTO_DRAFT,跳过处理', siteId, order.id)
return;
}
// 这里其实不用过滤不可编辑的行为,而是应在 save 中做判断
// if(!order.is_editable && !forceUpdate){
// this.logger.debug('订单不可编辑,跳过处理', siteId, order.id)
// return;
// }
// 自动转换远程订单的状态(如果需要)
// 检查数据库中是否已存在该订单
const existingOrder = await this.orderModel.findOne({
where: { externalOrderId: String(order.id), siteId: siteId },
});
// 自动更新订单状态(如果需要)
await this.autoUpdateOrderStatus(siteId, order);
if(existingOrder){
// 矫正数据库中的订单数据
const updateData: any = { status: order.status };
if (this.canUpdateErpStatus(existingOrder.orderStatus)) {
updateData.orderStatus = this.mapOrderStatus(order.status as any);
}
// 更新订单主数据
await this.orderModel.update({ externalOrderId: String(order.id), siteId: siteId }, updateData);
// 更新 fulfillments 数据
await this.saveOrderFulfillments({
siteId,
orderId: existingOrder.id,
externalOrderId:order.id,
fulfillments: fulfillments,
});
}
const externalOrderId = String(order.id);
// 这里的 saveOrder 已经包括了创建订单和更新订单
let orderRecord: Order = await this.saveOrder(siteId, orderData);
// 如果订单从未完成变为完成状态,则更新库存
// 如果订单从未完成变为完成状态,则更新库存
if (
orderRecord &&
orderRecord.orderStatus !== ErpOrderStatus.COMPLETED &&
@ -347,7 +365,6 @@ export class OrderService {
await this.updateStock(orderRecord);
// 不再直接返回,继续执行后续的更新操作
}
const externalOrderId = String(order.id);
const orderId = orderRecord.id;
// 保存订单项
await this.saveOrderItems({