From 97a275de8f43e33782ab5f6c904976c6d69d8f5b Mon Sep 17 00:00:00 2001 From: weizong song Date: Wed, 1 Jan 2025 23:35:33 +0800 Subject: [PATCH] up --- .../Controllers/Manager/OrdersController.php | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/app/Http/Controllers/Manager/OrdersController.php b/app/Http/Controllers/Manager/OrdersController.php index 0e1fa1e..9a67044 100644 --- a/app/Http/Controllers/Manager/OrdersController.php +++ b/app/Http/Controllers/Manager/OrdersController.php @@ -1550,10 +1550,57 @@ class OrdersController extends CommonController DB::beginTransaction(); try { + // 1. 获取订单的微信支付记录 + $recharges = (new Recharge()) + ->where("order_id", $order->id) + ->whereNotNull("paid_at") + ->doesntHave("refunds") + ->whereIn("payment", "weixin") + ->get(); + + // 2. 计算支付总额 + $totalPaid = $recharges->sum('money'); + + // 3. 获取用户当前余额 + $customer = $order->customer; + $currentBalance = $customer->balance; + + // 4. 如果支付总额等于用户余额,进行退款处理 + if ($totalPaid > 0 && $totalPaid == $currentBalance) { + foreach ($recharges as $recharge) { + // 更新用户余额 + $currentBalance -= $recharge->money; + $customer->balance = $currentBalance; + $customer->save(); + // 生成退款记录与财务记录 + $refund = Refund::create([ + "customer_id" => $order->customer->id, + "money" => $recharge->money, + "order_id" => $order->id, + "payment" => $recharge->payment, + "recharge_id" => $recharge->id, + "merchant_id" => $recharge->merchant_id, + "remark" => "取消订单,自动退款" + ]); + $refund->getSerial(); + + $balance = Balance::create([ + "customer_id" => $customer->id, + "order_id" => $order->id, + "belongs_type" => get_class($refund), + "belongs_id" => $refund->id, + "money" => -$refund->money, + "balance" => $currentBalance + ]); + } + } + + // 5. 删除订单及子订单 foreach ($order->orderItems as $orderItem) { $orderItem->delete(); } $order->delete(); + DB::commit(); return response()->json($order); } catch (\Exception $exception) {