Files
chatroom/app/Http/Controllers/Admin/CurrencyStatsController.php
T

60 lines
1.7 KiB
PHP
Raw Normal View History

2026-02-28 12:49:26 +08:00
<?php
/**
* 文件功能:后台积分活动统计控制器
* 展示今日(或指定日期)各来源活动产生的经验/金币/魅力统计,以及今日净流通量。
* 仅限 superlevel 以上管理员访问。
*
* @author ChatRoom Laravel
*
2026-02-28 12:49:26 +08:00
* @version 1.0.0
*/
namespace App\Http\Controllers\Admin;
use App\Enums\CurrencySource;
use App\Http\Controllers\Controller;
use App\Services\UserCurrencyService;
use Illuminate\Http\Request;
use Illuminate\View\View;
/**
* 类功能:展示后台积分流水统计与指定日期净流通数据。
*/
2026-02-28 12:49:26 +08:00
class CurrencyStatsController extends Controller
{
/**
* 注入积分统计服务
*/
public function __construct(
private readonly UserCurrencyService $currencyService,
) {}
/**
* 显示指定日期的积分活动统计(默认今日)。
*/
public function index(Request $request): View
{
// 日期选择(默认今日)
$date = $request->input('date', today()->toDateString());
// 各来源活动产出统计(按 source + currency 分组汇总)
$stats = $this->currencyService->activityStats($date);
// 按货币类型分组,方便视图展示
$statsByType = $stats->groupBy('currency')->map(
fn ($rows) => $rows->keyBy('source')
);
// 今日净流通量(正向增加 - 负向消耗),可判断通货膨胀
$netFlow = $this->currencyService->netFlowStats($date);
2026-02-28 12:49:26 +08:00
// 所有已知来源(供视图展示缺失来源的空行)
$allSources = CurrencySource::cases();
return view('admin.currency-stats.index', compact(
'date', 'stats', 'statsByType', 'netFlow', 'allSources',
));
}
}