feat: add AgentNodeIndexController for node listing and remove settlement_cycle field from AgentProfile logic

This commit is contained in:
2026-06-11 18:01:58 +08:00
parent 4d1c2b3d63
commit e14b7b4569
30 changed files with 383 additions and 91 deletions

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Http\Controllers\Api\V1\Admin\Agent;
use App\Support\ApiResponse;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Support\AdminAgentScope;
use App\Support\AgentNodePresenter;
use App\Models\AgentNode;
final class AgentNodeIndexController extends Controller
{
public function __invoke(Request $request): JsonResponse
{
$admin = $request->lotteryAdmin();
abort_if($admin === null, 401);
$query = AgentNode::query()->orderBy('admin_site_id')->orderBy('path');
if (! $admin->isSuperAdmin()) {
$actor = AdminAgentScope::primaryAgentNode($admin);
if ($actor === null) {
$query->whereRaw('0 = 1');
} else {
$query
->where('admin_site_id', (int) $actor->admin_site_id)
->where('path', 'like', $actor->path.'%');
}
}
return ApiResponse::success([
'admin_site_id' => null,
'items' => AgentNodePresenter::list($query->get()),
]);
}
}