feat: 增强管理员功能与数据处理

- 在多个控制器中引入 agent_node_id,以支持基于代理节点的权限和数据过滤。
- 更新 AdminRole 和 AdminUser 模型,新增角色范围和代理节点相关功能,提升角色管理的灵活性。
- 在请求验证中添加 agent_node_id 字段,确保 API 接口支持代理节点的相关操作。
- 优化 LotterySettings 服务,支持批量写入设置,提升配置管理的效率。
- 更新仪表板和报告服务,增强数据统计功能,确保管理员能够获取更全面的统计信息。
This commit is contained in:
2026-06-02 14:36:58 +08:00
parent d5232c756f
commit 0841fbed32
96 changed files with 5004 additions and 182 deletions

View File

@@ -0,0 +1,57 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeTreeController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeShowController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeStoreController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeUpdateController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeDestroyController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeChildrenController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeRoleIndexController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeRoleStoreController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentRoleUpdateController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentRolePermissionSyncController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentRoleDestroyController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeAdminUserIndexController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeAdminUserStoreController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentAdminUserRoleSyncController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeDelegationGrantIndexController;
use App\Http\Controllers\Api\V1\Admin\Agent\AgentNodeDelegationGrantSyncController;
Route::middleware('admin.api-resource')
->group(function (): void {
Route::get('agent-nodes/tree', AgentNodeTreeController::class)
->name('api.v1.admin.agent-nodes.tree');
Route::post('agent-nodes', AgentNodeStoreController::class)
->name('api.v1.admin.agent-nodes.store');
Route::get('agent-nodes/{agent_node}/roles', AgentNodeRoleIndexController::class)
->name('api.v1.admin.agent-roles.index');
Route::post('agent-nodes/{agent_node}/roles', AgentNodeRoleStoreController::class)
->name('api.v1.admin.agent-roles.store');
Route::get('agent-nodes/{agent_node}/admin-users', AgentNodeAdminUserIndexController::class)
->name('api.v1.admin.agent-admin-users.index');
Route::post('agent-nodes/{agent_node}/admin-users', AgentNodeAdminUserStoreController::class)
->name('api.v1.admin.agent-admin-users.store');
Route::get('agent-nodes/{agent_node}/delegation-grants', AgentNodeDelegationGrantIndexController::class)
->name('api.v1.admin.agent-delegation-grants.index');
Route::put('agent-nodes/{agent_node}/delegation-grants', AgentNodeDelegationGrantSyncController::class)
->name('api.v1.admin.agent-delegation-grants.sync');
Route::get('agent-nodes/{agent_node}', AgentNodeShowController::class)
->name('api.v1.admin.agent-nodes.show');
Route::put('agent-nodes/{agent_node}', AgentNodeUpdateController::class)
->name('api.v1.admin.agent-nodes.update');
Route::delete('agent-nodes/{agent_node}', AgentNodeDestroyController::class)
->name('api.v1.admin.agent-nodes.destroy');
Route::get('agent-nodes/{agent_node}/children', AgentNodeChildrenController::class)
->name('api.v1.admin.agent-nodes.children');
Route::put('agent-roles/{admin_role}', AgentRoleUpdateController::class)
->name('api.v1.admin.agent-roles.update');
Route::put('agent-roles/{admin_role}/permissions', AgentRolePermissionSyncController::class)
->name('api.v1.admin.agent-roles.permissions.sync');
Route::delete('agent-roles/{admin_role}', AgentRoleDestroyController::class)
->name('api.v1.admin.agent-roles.destroy');
Route::put('agent-admin-users/{admin_user}/roles', AgentAdminUserRoleSyncController::class)
->name('api.v1.admin.agent-admin-users.roles.sync');
});

View File

@@ -126,6 +126,8 @@ Route::middleware('admin.api-resource')
->group(function (): void {
Route::get('/', AdminSettingController::class.'@index')
->name('index');
Route::put('batch', AdminSettingController::class.'@batchUpdate')
->name('batch-update');
Route::put('{key}', AdminSettingController::class.'@update')
->name('update');
});