fix: 完善退款完成售后单自动对齐机制与汇付多日期幂等自愈

这个提交包含在:
wikiboss
2026-09-12 17:48:22 +08:00
父节点 2b996b8a2e
当前提交 65290f5742
共有 4 个文件被更改,包括 164 次插入 和 15 次删除

查看文件

@@ -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;
}
// 实时剩余可退金额硬校验(防多退)