Files
Xboard/app/Http/Controllers/V1/User/StatController.php

43 lines
1.3 KiB
PHP
Raw Normal View History

2023-11-17 14:44:01 +08:00
<?php
namespace App\Http\Controllers\V1\User;
use App\Http\Controllers\Controller;
use App\Http\Resources\TrafficLogResource;
2023-11-17 14:44:01 +08:00
use App\Models\StatUser;
use App\Services\StatisticalService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class StatController extends Controller
{
public function getTrafficLog(Request $request)
{
$startDate = now()->startOfMonth()->timestamp;
2025-11-29 15:01:55 +01:00
// Aggregate per-node data into per-day entries for backward compatibility
$records = StatUser::query()
2025-11-29 15:01:55 +01:00
->select([
'user_id',
'server_rate',
'record_at',
'record_type',
DB::raw('SUM(u) as u'),
DB::raw('SUM(d) as d'),
])
2025-01-21 14:57:54 +08:00
->where('user_id', $request->user()->id)
->where('record_at', '>=', $startDate)
2025-11-29 15:01:55 +01:00
->groupBy(['user_id', 'server_rate', 'record_at', 'record_type'])
2023-11-17 14:44:01 +08:00
->orderBy('record_at', 'DESC')
2025-11-29 15:10:06 +01:00
->get()
->map(function ($item) {
$item->u = (int) $item->u;
$item->d = (int) $item->d;
return $item;
});
2023-11-17 14:44:01 +08:00
2025-11-29 15:01:55 +01:00
$data = TrafficLogResource::collection($records);
return $this->success($data);
2023-11-17 14:44:01 +08:00
}
}