改进 模块 用户控制器
This commit is contained in:
parent
610f690b72
commit
0ceef6c7b7
@ -2,10 +2,8 @@
|
||||
|
||||
namespace App\Http\Controllers\Modules;
|
||||
|
||||
use App\Exceptions\User\BalanceNotEnoughException;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Host;
|
||||
use App\Models\Transaction;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
@ -53,22 +51,46 @@ public function hosts(User $user): JsonResponse
|
||||
return $this->success($hosts);
|
||||
}
|
||||
|
||||
public function reduce(Request $request, User $user): JsonResponse
|
||||
public function update(Request $request, User $user): JsonResponse
|
||||
{
|
||||
$this->validate($request, [
|
||||
'amount' => 'required|numeric|min:0.01|max:10000',
|
||||
'balance' => 'required|numeric|min:-10000|max:10000',
|
||||
'description' => 'required|string',
|
||||
]);
|
||||
|
||||
$module = auth('module')->user();
|
||||
$transaction = new Transaction();
|
||||
$module = $request->user('module');
|
||||
|
||||
try {
|
||||
$transaction->reduceAmountModuleFail($user->id, $module->id, $request->input('amount'), $request->input('description'));
|
||||
} catch (BalanceNotEnoughException) {
|
||||
return $this->error('余额不足');
|
||||
$balance = $request->input('balance');
|
||||
|
||||
if ($balance < 0) {
|
||||
// 使用 bc,取 balance 绝对值
|
||||
$balance = bcsub(0, $balance, 4);
|
||||
|
||||
// 如果用户余额不足,抛出异常,使用 bc 函数判断
|
||||
if (bccomp($user->balance, $balance, 2) === -1) {
|
||||
return $this->error('用户余额不足。');
|
||||
}
|
||||
|
||||
return $this->success();
|
||||
$user->reduce($balance, $request->description, true);
|
||||
$module->charge($balance, 'balance', $request->description, [
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
} else {
|
||||
// 如果模块余额不足,抛出异常,使用 bc 函数判断
|
||||
if (bccomp($module->balance, $balance, 2) === -1) {
|
||||
return $this->error('模块余额不足。');
|
||||
}
|
||||
|
||||
$module->reduce($balance, $request->description, true, [
|
||||
'user_id' => $user->id,
|
||||
'payment' => 'module_balance'
|
||||
]);
|
||||
|
||||
$user->charge($balance, 'module_balance', $request->description);
|
||||
}
|
||||
|
||||
return $this->updated();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user