again: update api combining times

This commit is contained in:
socksprox
2025-11-29 15:01:55 +01:00
parent a01151130e
commit 0446f88e9e
2 changed files with 34 additions and 5 deletions

View File

@@ -14,13 +14,24 @@ class StatController extends Controller
public function getTrafficLog(Request $request)
{
$startDate = now()->startOfMonth()->timestamp;
// Aggregate per-node data into per-day entries for backward compatibility
$records = StatUser::query()
->select([
'user_id',
'server_rate',
'record_at',
'record_type',
DB::raw('SUM(u) as u'),
DB::raw('SUM(d) as d'),
])
->where('user_id', $request->user()->id)
->where('record_at', '>=', $startDate)
->groupBy(['user_id', 'server_rate', 'record_at', 'record_type'])
->orderBy('record_at', 'DESC')
->get();
$data = TrafficLogResource::collection(collect($records));
$data = TrafficLogResource::collection($records);
return $this->success($data);
}
}

View File

@@ -13,6 +13,7 @@ use App\Models\Ticket;
use App\Models\User;
use App\Services\StatisticalService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class StatController extends Controller
{
@@ -234,14 +235,31 @@ class StatController extends Controller
]);
$pageSize = $request->input('pageSize', 10);
$records = StatUser::orderBy('record_at', 'DESC')
$page = $request->input('page', 1);
// Aggregate per-node data into per-day entries for backward compatibility
$query = StatUser::query()
->select([
'user_id',
'server_rate',
'record_at',
'record_type',
DB::raw('SUM(u) as u'),
DB::raw('SUM(d) as d'),
DB::raw('MAX(created_at) as created_at'),
DB::raw('MAX(updated_at) as updated_at'),
])
->where('user_id', $request->input('user_id'))
->paginate($pageSize);
->groupBy(['user_id', 'server_rate', 'record_at', 'record_type'])
->orderBy('record_at', 'DESC');
// Manual pagination for grouped query
$total = (clone $query)->get()->count();
$data = $query->skip(($page - 1) * $pageSize)->take($pageSize)->get();
$data = $records->items();
return [
'data' => $data,
'total' => $records->total(),
'total' => $total,
];
}