id) ->latest() ->limit(20) ->get(['type', 'amount', 'balance_after', 'created_at']); return response()->json([ 'status' => 'success', 'jjb' => $user->jjb ?? 0, 'bank_jjb' => $user->bank_jjb ?? 0, 'logs' => $logs, ]); } /** * 存款:从流通金币(jjb)转入银行(bank_jjb) * * 请求参数:amount(正整数) */ public function deposit(Request $request): JsonResponse { $request->validate([ 'amount' => 'required|integer|min:1|max:9999999', ]); $amount = $request->integer('amount'); $user = Auth::user(); if (($user->jjb ?? 0) < $amount) { return response()->json([ 'status' => 'error', 'message' => '流通金币不足!当前余额 '.($user->jjb ?? 0)." 枚,无法存入 {$amount} 枚。", ]); } DB::transaction(function () use ($user, $amount): void { $user->decrement('jjb', $amount); $user->increment('bank_jjb', $amount); BankLog::create([ 'user_id' => $user->id, 'type' => 'deposit', 'amount' => $amount, 'balance_after' => $user->fresh()->bank_jjb, ]); }); $fresh = $user->fresh(); return response()->json([ 'status' => 'success', 'message' => "成功存入 {$amount} 枚金币!", 'jjb' => $fresh->jjb, 'bank_jjb' => $fresh->bank_jjb, ]); } /** * 取款:从银行(bank_jjb)转回流通金币(jjb) * * 请求参数:amount(正整数) */ public function withdraw(Request $request): JsonResponse { $request->validate([ 'amount' => 'required|integer|min:1|max:9999999', ]); $amount = $request->integer('amount'); $user = Auth::user(); if (($user->bank_jjb ?? 0) < $amount) { return response()->json([ 'status' => 'error', 'message' => '银行余额不足!当前存款 '.($user->bank_jjb ?? 0)." 枚,无法取出 {$amount} 枚。", ]); } DB::transaction(function () use ($user, $amount): void { $user->decrement('bank_jjb', $amount); $user->increment('jjb', $amount); BankLog::create([ 'user_id' => $user->id, 'type' => 'withdraw', 'amount' => $amount, 'balance_after' => $user->fresh()->bank_jjb, ]); }); $fresh = $user->fresh(); return response()->json([ 'status' => 'success', 'message' => "成功取出 {$amount} 枚金币!", 'jjb' => $fresh->jjb, 'bank_jjb' => $fresh->bank_jjb, ]); } }