fix: 完善退款完成售后单自动对齐机制与汇付多日期幂等自愈
这个提交包含在:
@@ -283,11 +283,25 @@ class Aftersale extends Backend
|
||||
}
|
||||
|
||||
$orderItem = OrderItem::where('id', $aftersale['order_item_id'])->lock(true)->find();
|
||||
if (!$orderItem || in_array($orderItem['refund_status'], [
|
||||
if (!$orderItem) {
|
||||
throw new \Exception('订单商品不存在');
|
||||
}
|
||||
if (in_array($orderItem['refund_status'], [
|
||||
\app\admin\model\shopro\order\OrderItem::REFUND_STATUS_OK,
|
||||
\app\admin\model\shopro\order\OrderItem::REFUND_STATUS_FINISH,
|
||||
])) {
|
||||
throw new \Exception('订单商品已退款,不能重复退款');
|
||||
// 订单商品此前已完成退款,自动对齐售后单状态,防重复扣款与卡死
|
||||
$aftersale->aftersale_status = \app\admin\model\shopro\order\Aftersale::AFTERSALE_STATUS_OK;
|
||||
$aftersale->refund_status = \app\admin\model\shopro\order\Aftersale::REFUND_STATUS_FINISH;
|
||||
$aftersale->refund_fee = $orderItem->refund_fee ?: $refund_money;
|
||||
$aftersale->save();
|
||||
|
||||
OrderAftersaleLog::operAdd($order, $aftersale, $this->auth->getUserInfo(), 'admin', [
|
||||
'reason' => '卖家同意退款(自动对齐)',
|
||||
'content' => '订单商品此前已完成退款,系统自动对齐售后单为已完成',
|
||||
'images' => []
|
||||
]);
|
||||
return;
|
||||
}
|
||||
|
||||
// 实时剩余可退金额硬校验(防多退)
|
||||
|
||||
在新工单中引用
屏蔽一个用户