Files
toolbox/routes/api.php

74 lines
3.6 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EnvController;
use App\Http\Controllers\JiraController;
use App\Http\Controllers\MessageSyncController;
use App\Http\Controllers\MessageDispatchController;
use App\Http\Controllers\SqlGeneratorController;
use App\Http\Controllers\Admin\AdminMetaController;
use App\Http\Controllers\Admin\IpUserMappingController;
use App\Http\Controllers\Admin\OperationLogController;
// 环境管理API路由
Route::prefix('env')->group(function () {
Route::get('/projects', [EnvController::class, 'getProjects']);
Route::get('/projects/{project}/envs', [EnvController::class, 'getEnvs']);
Route::get('/projects/{project}/envs/{env}', [EnvController::class, 'getEnvContent']);
Route::get('/projects/{project}/current-env', [EnvController::class, 'getCurrentEnv']);
Route::post('/envs/save', [EnvController::class, 'saveEnv']);
Route::post('/envs/apply', [EnvController::class, 'applyEnv']);
Route::post('/envs/import', [EnvController::class, 'importEnv']);
Route::post('/envs/create', [EnvController::class, 'createEnv']);
Route::delete('/projects/{project}/envs/{env}', [EnvController::class, 'deleteEnv']);
});
// SQL 生成器 API 路由
Route::prefix('sql-generator')->group(function () {
Route::post('/ob-external-id/check', [SqlGeneratorController::class, 'checkObExternalId']);
});
// JIRA API路由
Route::prefix('jira')->group(function () {
Route::get('/config', [JiraController::class, 'getConfig']);
Route::post('/weekly-report', [JiraController::class, 'generateWeeklyReport']);
Route::post('/work-logs', [JiraController::class, 'getWorkLogs']);
Route::get('/weekly-report/download', [JiraController::class, 'downloadWeeklyReport']);
});
// 消息同步API路由
Route::prefix('message-sync')->group(function () {
Route::post('/query', [MessageSyncController::class, 'queryMessages']);
Route::post('/sync', [MessageSyncController::class, 'syncMessages']);
Route::get('/config', [MessageSyncController::class, 'getAgentConfig']);
Route::get('/test-connection', [MessageSyncController::class, 'testConnection']);
Route::post('/compare-event-consumer', [MessageSyncController::class, 'compareEventConsumerSync']);
Route::post('/export-missing-messages', [MessageSyncController::class, 'exportMissingMessages']);
});
// 消息分发API路由
Route::prefix('message-dispatch')->group(function () {
Route::get('/services', [MessageDispatchController::class, 'getAvailableServices']);
Route::get('/country-codes', [MessageDispatchController::class, 'getAvailableCountryCodes']);
Route::get('/domains', [MessageDispatchController::class, 'getAvailableDomains']);
Route::get('/service-routes', [MessageDispatchController::class, 'getServiceRoutes']);
Route::get('/abnormal', [MessageDispatchController::class, 'getAbnormalDispatches']);
Route::post('/batch-update', [MessageDispatchController::class, 'batchUpdateDispatch']);
});
// 操作日志(所有人可查看,用户名字段对非管理员隐藏)
Route::get('/operation-logs', [OperationLogController::class, 'index']);
// 管理员信息(不受白名单限制)
Route::get('/admin/meta', [AdminMetaController::class, 'show']);
// 管理员IP白名单限定的后台接口
Route::prefix('admin')->middleware('admin.ip')->group(function () {
Route::get('/ip-user-mappings', [IpUserMappingController::class, 'index']);
Route::post('/ip-user-mappings', [IpUserMappingController::class, 'store']);
Route::put('/ip-user-mappings/{mapping}', [IpUserMappingController::class, 'update']);
Route::delete('/ip-user-mappings/{mapping}', [IpUserMappingController::class, 'destroy']);
});