优化 计费统计

This commit is contained in:
iVampireSP.com 2022-11-19 12:50:48 +08:00
parent 84d5dfdd00
commit 9ff6a189d3
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132

View File

@ -205,53 +205,7 @@ public function cost($price = null, $auto = true): bool
$transaction->reduceDrops($this->user_id, $this->id, $this->module_id, $auto, $real_price); $transaction->reduceDrops($this->user_id, $this->id, $this->module_id, $auto, $real_price);
$this->addLog('drops', $real_price);
/** 统计收益开始 */
$current_month = now()->month;
$current_year = now()->year;
$cache_key = 'module_earning_' . $this->module_id;
$rate = (int)config('drops.rate');
$commission = (float)config('drops.commission');
// 换成 余额
$balance = round($real_price / $rate, 2);
$should_balance = round($balance * $commission, 2);
// 应得的余额
$should_balance = $balance - $should_balance;
$earnings = Cache::get($cache_key, []);
if (!isset($earnings[$current_year])) {
$earnings[$current_year] = [];
}
if (isset($earnings[$current_year][$current_month])) {
$earnings[$current_year][$current_month]['balance'] += $balance;
$earnings[$current_year][$current_month]['should_balance'] += $should_balance;
$earnings[$current_year][$current_month]['drops'] += $real_price;
} else {
$earnings[$current_year][$current_month] = [
'balance' => $balance,
// 应得(交了手续费)
'should_balance' => $should_balance,
'drops' => $real_price
];
}
// 删除 前 3 年的数据
if (count($earnings) > 3) {
$earnings = array_slice($earnings, -3, 3, true);
}
// 保存 1 年
Cache::put($cache_key, $earnings, 24 * 60 * 60 * 365);
/** 统计收益结束 */
broadcast(new UserEvent($this->user_id, 'balances.drops.reduced', $this->user)); broadcast(new UserEvent($this->user_id, 'balances.drops.reduced', $this->user));
@ -285,6 +239,9 @@ public function costBalance($amount = 1): bool
$left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $amount); $left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $amount);
$this->addLog('balance', $amount);
broadcast(new UserEvent($this->user_id, 'balances.amount.reduced', $this->user)); broadcast(new UserEvent($this->user_id, 'balances.amount.reduced', $this->user));
if ($left < 0) { if ($left < 0) {
@ -295,4 +252,68 @@ public function costBalance($amount = 1): bool
return true; return true;
} }
public function addLog($type = 'drops', $amount = 0)
{
/** 统计收益开始 */
$current_month = now()->month;
$current_year = now()->year;
$cache_key = 'module_earning_' . $this->module_id;
$rate = (int)config('drops.rate');
$commission = (float)config('drops.commission');
if ($type == 'drops') {
// 换成 余额
$amount = round($amount / $rate, 2);
}
$should_amount = round($amount * $commission, 2);
// 应得的余额
$should_balance = $amount - $should_amount;
$earnings = Cache::get($cache_key, []);
if (!isset($earnings[$current_year])) {
$earnings[$current_year] = [];
}
if ($type == 'drops') {
$drops = $amount;
} else {
$drops = 0;
}
if (isset($earnings[$current_year][$current_month])) {
$earnings[$current_year][$current_month]['balance'] += $amount;
$earnings[$current_year][$current_month]['should_balance'] += $should_balance;
$earnings[$current_year][$current_month]['drops'] += $drops;
} else {
$earnings[$current_year][$current_month] = [
'balance' => $amount,
// 应得(交了手续费)
'should_balance' => $should_balance,
'drops' => $drops
];
}
// 删除 前 3 年的数据
if (count($earnings) > 3) {
$earnings = array_slice($earnings, -3, 3, true);
}
// 保存 1 年
Cache::put($cache_key, $earnings, 24 * 60 * 60 * 365);
/** 统计收益结束 */
}
} }