事件 event(new OrderPaid($installment->order)),放到事务外?

app/Http/Controllers/InstallmentsController.php

use App\Events\OrderPaid;
use Carbon\Carbon;
//...
    // 支付宝后端回调
    public function alipayNotify()
    {
        //...
        // 使用事务,保证数据一致性
        \DB::transaction(function () use ($data, $no, $installment, $item) {
            //...
            // 如果这是第一笔还款
            if ($item->sequence === 0) {
                // 将分期付款的状态改为还款中
                $installment->update(['status' => Installment::STATUS_REPAYING]);
                // 将分期付款对应的商品订单状态改为已支付
                $installment->order->update([
                    'paid_at'        => Carbon::now(),
                    'payment_method' => 'installment', // 支付方式为分期付款
                    'payment_no'     => $no, // 支付订单号为分期付款的流水号
                ]);
            }
            //...
        });
        // 如果这是第一笔还款
        if ($item->sequence === 0) {
            // 触发商品订单已支付的事件
            event(new OrderPaid($installment->order));
        }

        return app('alipay')->success();
    }
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!