Files
toolbox/app/Http/Controllers/EnvController.php
2025-08-01 16:55:23 +08:00

265 lines
7.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\EnvService;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
class EnvController extends Controller
{
private EnvService $envManager;
public function __construct(EnvService $envManager)
{
$this->envManager = $envManager;
}
/**
* 显示环境管理页面
*/
public function index()
{
return view('env.index');
}
/**
* 获取所有项目列表
*/
public function getProjects(): JsonResponse
{
try {
$projects = $this->envManager->getProjects();
return response()->json([
'success' => true,
'data' => $projects
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 获取项目的环境配置列表
*/
public function getEnvs(string $project): JsonResponse
{
try {
$envs = $this->envManager->getProjectEnvs($project);
return response()->json([
'success' => true,
'data' => $envs
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 获取环境配置文件内容
*/
public function getEnvContent(string $project, string $env): JsonResponse
{
try {
$content = $this->envManager->getEnvContent($project, $env);
return response()->json([
'success' => true,
'data' => [
'content' => $content
]
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 404);
}
}
/**
* 保存环境配置文件
*/
public function saveEnv(Request $request): JsonResponse
{
try {
$success = $this->envManager->saveEnv(
$request->input('project'),
$request->input('env'),
$request->input('content')
);
if ($success) {
return response()->json([
'success' => true,
'message' => '环境配置保存成功'
]);
} else {
return response()->json([
'success' => false,
'message' => '环境配置保存失败'
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 应用环境配置到项目
*/
public function applyEnv(Request $request): JsonResponse
{
try {
$success = $this->envManager->applyEnv(
$request->input('project'),
$request->input('env')
);
if ($success) {
return response()->json([
'success' => true,
'message' => '环境配置应用成功'
]);
} else {
return response()->json([
'success' => false,
'message' => '环境配置应用失败'
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 从项目导入环境配置
*/
public function importEnv(Request $request): JsonResponse
{
try {
$success = $this->envManager->importFromProject(
$request->input('project'),
$request->input('env')
);
if ($success) {
return response()->json([
'success' => true,
'message' => '环境配置导入成功'
]);
} else {
return response()->json([
'success' => false,
'message' => '环境配置导入失败'
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 删除环境配置
*/
public function deleteEnv(string $project, string $env): JsonResponse
{
try {
$success = $this->envManager->deleteEnv($project, $env);
if ($success) {
return response()->json([
'success' => true,
'message' => '环境配置删除成功'
]);
} else {
return response()->json([
'success' => false,
'message' => '环境配置删除失败'
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 获取项目当前.env文件内容
*/
public function getCurrentEnv(string $project): JsonResponse
{
try {
$content = $this->envManager->getCurrentProjectEnv($project);
if ($content === null) {
return response()->json([
'success' => false,
'message' => '项目没有.env文件'
], 404);
}
return response()->json([
'success' => true,
'data' => [
'content' => $content
]
]);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 500);
}
}
/**
* 创建新的环境配置文件
*/
public function createEnv(Request $request): JsonResponse
{
try {
$success = $this->envManager->createNewEnv(
$request->input('project'),
$request->input('env_name')
);
if ($success) {
return response()->json([
'success' => true,
'message' => '环境配置文件创建成功'
]);
} else {
return response()->json([
'success' => false,
'message' => '环境配置文件创建失败'
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => $e->getMessage()
], 400);
}
}
}