Fix balance

This commit is contained in:
iVampireSP.com 2022-11-16 12:52:51 +08:00
parent 5c6cb51305
commit 1be6dea757
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132

View File

@ -71,7 +71,7 @@ public function scopeThisUser($query)
}
public function getDrops($user_id = null)
public function getDrops($user_id = null): float
{
//
if (!$user_id) {
@ -146,7 +146,7 @@ public function addPayoutDrops($user_id, $amount, $description, $host_id, $modul
'income' => 0,
'income_drops' => 0,
'outcome' => 0,
'outcome_drops' => (float) $amount,
'outcome_drops' => (float)$amount,
'host_id' => $host_id,
'module_id' => $module_id,
];
@ -171,7 +171,7 @@ public function addIncomeDrops($user_id, $amount, $description)
'payment' => 'balances',
'description' => $description,
'income' => 0,
'income_drops' => (float) $amount,
'income_drops' => (float)$amount,
'outcome' => 0,
'outcome_drops' => 0,
];
@ -179,13 +179,13 @@ public function addIncomeDrops($user_id, $amount, $description)
return $this->addLog($user_id, $data);
}
public function addIncomeBalance($user_id, $payment, $amount, $description)
public function addIncomeBalances($user_id, $payment, $amount, $description)
{
$data = [
'type' => 'income',
'payment' => $payment,
'description' => $description,
'income' => (float) $amount,
'income' => (float)$amount,
'income_drops' => 0,
'outcome' => 0,
'outcome_drops' => 0,
@ -194,7 +194,7 @@ public function addIncomeBalance($user_id, $payment, $amount, $description)
return $this->addLog($user_id, $data);
}
public function addPayoutBalance($user_id, $amount, $description, $module_id = null)
public function addPayoutBalances($user_id, $amount, $description, $module_id = null)
{
$data = [
'type' => 'payout',
@ -202,7 +202,7 @@ public function addPayoutBalance($user_id, $amount, $description, $module_id = n
'description' => $description,
'income' => 0,
'income_drops' => 0,
'outcome' => (float) $amount,
'outcome' => (float)$amount,
'outcome_drops' => 0
];
@ -213,7 +213,7 @@ public function addPayoutBalance($user_id, $amount, $description, $module_id = n
return $this->addLog($user_id, $data);
}
public function addHostPayoutBalance($user_id, $host_id, $module_id, $amount, $description)
public function addHostPayoutBalances($user_id, $host_id, $module_id, $amount, $description)
{
$data = [
'type' => 'payout',
@ -221,7 +221,7 @@ public function addHostPayoutBalance($user_id, $host_id, $module_id, $amount, $d
'description' => $description,
'income' => 0,
'income_drops' => 0,
'outcome' => (float) $amount,
'outcome' => (float)$amount,
'outcome_drops' => 0,
'host_id' => $host_id,
'module_id' => $module_id,
@ -231,23 +231,22 @@ public function addHostPayoutBalance($user_id, $host_id, $module_id, $amount, $d
}
public function reduceAmount($user_id, $amount = 0, $description = '扣除费用请求。')
{
$lock = Cache::lock("user_balance_lock_" . $user_id, 10);
$lock = Cache::lock("user_balances_lock_" . $user_id, 10);
try {
$lock->block(5);
$user = User::findOrFail($user_id);
$user->balance -= $amount;
$user->balances -= $amount;
$user->save();
$this->addPayoutBalance($user_id, $amount, $description);
$this->addPayoutBalances($user_id, $amount, $description);
return $user->balance;
return $user->balances;
} finally {
optional($lock)->release();
}
@ -258,25 +257,25 @@ public function reduceAmount($user_id, $amount = 0, $description = '扣除费用
public function reduceAmountModuleFail($user_id, $module_id, $amount = 0, $description = '扣除费用请求。')
{
$lock = Cache::lock("user_balance_lock_" . $user_id, 10);
$lock = Cache::lock("user_balances_lock_" . $user_id, 10);
try {
$lock->block(5);
$user = User::findOrFail($user_id);
$user->balance -= $amount;
$user->balances -= $amount;
// if balances < 0
if ($user->balance < 0) {
if ($user->balances < 0) {
throw new BalanceNotEnoughException('余额不足。');
}
$user->save();
$this->addPayoutBalance($user_id, $amount, $description, $module_id);
$this->addPayoutBalances($user_id, $amount, $description, $module_id);
return $user->balance;
return $user->balances;
} finally {
optional($lock)->release();
}
@ -288,19 +287,19 @@ public function reduceAmountModuleFail($user_id, $module_id, $amount = 0, $descr
public function reduceHostAmount($user_id, $host_id, $module_id, $amount = 0, $description = '扣除费用请求。')
{
$lock = Cache::lock("user_balance_lock_" . $user_id, 10);
$lock = Cache::lock("user_balances_lock_" . $user_id, 10);
try {
$lock->block(5);
$user = User::findOrFail($user_id);
$user->balance -= $amount;
$user->balances -= $amount;
$user->save();
$this->addHostPayoutBalance($user_id, $host_id, $module_id, $amount, $description);
$this->addHostPayoutBalances($user_id, $host_id, $module_id, $amount, $description);
return $user->balance;
return $user->balances;
} finally {
optional($lock)->release();
}
@ -308,18 +307,21 @@ public function reduceHostAmount($user_id, $host_id, $module_id, $amount = 0, $d
return false;
}
/**
* @throws ChargeException
*/
public function addAmount($user_id, $payment = 'console', $amount = 0, $description = null)
{
$lock = Cache::lock("user_balance_lock_" . $user_id, 10);
$lock = Cache::lock("user_balances_lock_" . $user_id, 10);
try {
$lock->block(5);
$user = User::findOrFail($user_id);
$left_balance = $user->balance + $amount;
$left_balances = $user->balances + $amount;
$user->increment('balance', $amount);
$user->increment('balances', $amount);
if (!$description) {
$description = '充值金额。';
@ -327,9 +329,9 @@ public function addAmount($user_id, $payment = 'console', $amount = 0, $descript
$description = '充值 ' . $amount . ' 元';
}
$this->addIncomeBalance($user_id, $payment, $amount, $description);
$this->addIncomeBalances($user_id, $payment, $amount, $description);
return $left_balance;
return $left_balances;
} catch (LockTimeoutException $e) {
Log::error($e);
throw new ChargeException('充值失败,请稍后再试。');
@ -346,7 +348,7 @@ private function addLog($user_id, $data)
$user = User::find($user_id);
$current = [
'balances' => $user->balance,
'balances' => $user->balances,
'drops' => $this->getDrops($user_id),
'user_id' => intval($user_id),
];