You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器中如何用数组判断银行余额并实现钱包充值

实现银行余额校验的钱包充值逻辑

完整控制器方法代码

public function loadPettyCash(Request $request)
{
    // 计算各银行总余额并整理为以bank_id为键的关联数组,方便快速查找
    $banks_totals = Bank::all()->mapWithKeys(function ($bank) {
        $total = BankingTransactions::where('bank', $bank->id)->sum('amount');
        return [$bank->id => [
            'name' => $bank->name,
            'amount' => $total
        ]];
    })->toArray();

    // 提取请求中的核心参数
    $petty_load = $request->all();
    $target_bank_id = $petty_load['bank'];
    $recharge_amount = $petty_load['amount'];

    // 校验所选银行的余额是否充足
    if (!isset($banks_totals[$target_bank_id]) || $banks_totals[$target_bank_id]['amount'] < $recharge_amount) {
        return response()->json([
            'message' => '所选银行余额不足',
            'alert' => 'error'
        ], 400);
    }

    // 余额充足时执行钱包充值操作
    PettyCash::create([
        'amount' => $recharge_amount,
        'user_id' => auth()->id(), // 修正原代码笔误,实际项目中通常用auth()获取当前登录用户ID
        'bank_id' => $target_bank_id
    ]);

    return response()->json([
        'message' => 'Petty loaded successfully',
        'alert' => 'success'
    ]);
}

关键逻辑说明

  • 数组结构优化:将原代码的索引数组转换为以bank_id为键的关联数组,避免遍历查找,提升校验效率。
  • 余额校验逻辑:先判断请求的银行ID是否存在于余额数组中,再对比余额与充值金额,任一条件不满足则直接返回错误响应。
  • 参数修正:将原代码中的doe()->id修正为auth()->id(),这是Laravel项目中获取当前登录用户ID的标准写法,推测原代码为拼写失误。

内容的提问来源于stack exchange,提问作者kennie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:10:26