diff --git a/src/adapter/shopyy.adapter.ts b/src/adapter/shopyy.adapter.ts index 9a3894d..1e1af3b 100644 --- a/src/adapter/shopyy.adapter.ts +++ b/src/adapter/shopyy.adapter.ts @@ -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 || '', diff --git a/src/dto/shopyy.dto.ts b/src/dto/shopyy.dto.ts index bd708ab..671711d 100644 --- a/src/dto/shopyy.dto.ts +++ b/src/dto/shopyy.dto.ts @@ -1211,6 +1211,7 @@ export interface ShopyyOrder { // 时间戳信息 // ======================================== // 订单创建时间 + date_paid?: number | string; created_at?: number | string; // 订单添加时间 date_added?: string; diff --git a/src/service/order.service.ts b/src/service/order.service.ts index 0cc42ed..adc6b0a 100644 --- a/src/service/order.service.ts +++ b/src/service/order.service.ts @@ -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({