Compare commits

..

No commits in common. "e3b102259cd3059e56d25cc5fc1f4366668c132e" and "d04841c7afad44fc99d630d03c406dd10fc6bf9c" have entirely different histories.

2 changed files with 22 additions and 54 deletions

View File

@ -31,22 +31,19 @@ export enum StockRecordOperationType {
IN = 'in', IN = 'in',
OUT = 'out', OUT = 'out',
} }
// Order status. Options: pending, processing, on-hold, completed, cancelled, refunded, failed and trash. Default is pending.
// 原始订单状态
export enum OrderStatus { export enum OrderStatus {
PENDING = 'pending', // default // 待付款 PENDING = 'pending',
PROCESSING = 'processing', // 正在处理 PROCESSING = 'processing',
ON_HOLD = 'on-hold', // 保留 COMPLETED = 'completed',
COMPLETED = 'completed', // 已完成 ON_HOLD = 'on-hold',
CANCEL = 'cancelled', // 已取消 CANCEL = 'cancelled',
REFUNDED = 'refunded', // 已退款 REFUNDED = 'refunded',
FAILED = 'failed', // 失败订单 FAILED = 'failed',
DRAFT = 'draft', // 草稿 DRAFT = 'draft',
// TRASH = 'trash', REFUND_REQUESTED = 'refund_requested', // 已申请退款
// refund 也就是退款相关的状态 REFUND_APPROVED = 'refund_approved', // 退款申请已通过
RETURN_REQUESTED = 'return-requested', // 已申请退款 REFUND_CANCELLED = 'refund_cancelled', // 已取消退款
RETURN_APPROVED = 'return-approved', // 退款申请已通过
RETURN_CANCELLED = 'return-cancelled', // 已取消退款
} }
export enum ErpOrderStatus { export enum ErpOrderStatus {
@ -59,9 +56,9 @@ export enum ErpOrderStatus {
AFTER_SALE_PROCESSING = 'after_sale_pending', // 售后处理中 AFTER_SALE_PROCESSING = 'after_sale_pending', // 售后处理中
PENDING_RESHIPMENT = 'pending_reshipment', // 待补发 PENDING_RESHIPMENT = 'pending_reshipment', // 待补发
PENDING_REFUND = 'pending_refund', // 待退款 PENDING_REFUND = 'pending_refund', // 待退款
RETURN_REQUESTED = 'return-requested', // 已申请退款 REFUND_REQUESTED = 'refund_requested', // 已申请退款
RETURN_APPROVED = 'return-approved', // 退款申请已通过 REFUND_APPROVED = 'refund_approved', // 退款申请已通过
RETURN_CANCELLED = 'return-cancelled', // 已取消退款 REFUND_CANCELLED = 'refund_cancelled', // 已取消退款
} }
export enum ShipmentType { export enum ShipmentType {

View File

@ -111,33 +111,7 @@ export class OrderService {
const order = await this.wPService.getOrder(siteId, orderId); const order = await this.wPService.getOrder(siteId, orderId);
await this.syncSingleOrder(siteId, order, true); await this.syncSingleOrder(siteId, order, true);
} }
// 订单状态切换表
orderAutoNextStatusMap = {
[OrderStatus.RETURN_APPROVED]: OrderStatus.ON_HOLD, // 退款申请已通过转为 on-hold
[OrderStatus.RETURN_CANCELLED]: OrderStatus.REFUNDED // 已取消退款转为 refunded
}
// 由于 wordpress 订单状态和 我们的订单状态 不一致,需要做转换
async autoUpdateOrderStatus(siteId: string, order: any) {
console.log('更新订单状态', order)
// 其他状态保持不变
const originStatus = order.status;
// 如果有值就赋值
if (!this.orderAutoNextStatusMap[originStatus]) {
return
}
try {
const site = this.sites.find(v => v.id === siteId);
if (!site) {
throw new Error(`更新订单信息,但失败,原因为 ${siteId} 的站点信息不存在`)
}
// 同步更新回 wordpress 的 order 状态
await this.wPService.updateOrder(site, order.id, { status: order.status });
order.status = this.orderAutoNextStatusMap[originStatus];
} catch (error) {
console.error('更新订单状态失败,原因为:', error)
}
}
// wordpress 发来,
async syncSingleOrder(siteId: string, order: any, forceUpdate = false) { async syncSingleOrder(siteId: string, order: any, forceUpdate = false) {
let { let {
line_items, line_items,
@ -147,12 +121,9 @@ export class OrderService {
refunds, refunds,
...orderData ...orderData
} = order; } = order;
console.log('同步进单个订单', order)
const existingOrder = await this.orderModel.findOne({ const existingOrder = await this.orderModel.findOne({
where: { externalOrderId: order.id, siteId: siteId }, where: { externalOrderId: order.id, siteId: siteId },
}); });
// 更新状态
await this.autoUpdateOrderStatus(siteId, order);
const orderId = (await this.saveOrder(siteId, orderData)).id; const orderId = (await this.saveOrder(siteId, orderData)).id;
const externalOrderId = order.id; const externalOrderId = order.id;
if ( if (
@ -292,12 +263,12 @@ export class OrderService {
return ErpOrderStatus.REFUNDED; return ErpOrderStatus.REFUNDED;
case OrderStatus.FAILED: case OrderStatus.FAILED:
return ErpOrderStatus.FAILED; return ErpOrderStatus.FAILED;
case OrderStatus.RETURN_REQUESTED: case OrderStatus.REFUND_REQUESTED:
return ErpOrderStatus.RETURN_REQUESTED; return ErpOrderStatus.REFUND_REQUESTED;
case OrderStatus.RETURN_APPROVED: case OrderStatus.REFUND_APPROVED:
return ErpOrderStatus.RETURN_APPROVED; return ErpOrderStatus.REFUND_APPROVED;
case OrderStatus.RETURN_CANCELLED: case OrderStatus.REFUND_CANCELLED:
return ErpOrderStatus.RETURN_CANCELLED; return ErpOrderStatus.REFUND_CANCELLED;
default: default:
return ErpOrderStatus.PENDING; return ErpOrderStatus.PENDING;
} }