adb9f157e6
- 应用缓存清理:config:clear + cache:clear - 路由缓存清理:route:clear - 视图缓存清理:view:clear - 幽灵在线清理:扫描并清空所有房间 Redis 在线名单 所有操作均有确认弹窗,执行结果 Flash 提示反馈。 后端 abort(403) 双重校验,非超管无法访问接口。
131 lines
7.2 KiB
PHP
131 lines
7.2 KiB
PHP
@extends('admin.layouts.app')
|
|
|
|
@section('title', '系统参数配置')
|
|
|
|
@section('content')
|
|
<div class="bg-white rounded-xl shadow-sm border border-gray-100 overflow-hidden">
|
|
<div class="p-6 border-b border-gray-100 flex justify-between items-center bg-gray-50">
|
|
<div>
|
|
<h2 class="text-lg font-bold text-gray-800">修改系统运行参数</h2>
|
|
<p class="text-xs text-gray-500 mt-1">保存后会同步更新 Redis 缓存,前台实时生效。</p>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Flash 提示 --}}
|
|
@if (session('success'))
|
|
<div class="mx-6 mt-4 p-3 bg-green-50 border border-green-200 rounded-lg text-green-700 text-sm">
|
|
✅ {{ session('success') }}
|
|
</div>
|
|
@endif
|
|
@if (session('ops_success'))
|
|
<div class="mx-6 mt-4 p-3 bg-blue-50 border border-blue-200 rounded-lg text-blue-700 text-sm font-medium">
|
|
{{ session('ops_success') }}
|
|
</div>
|
|
@endif
|
|
|
|
<div class="p-6">
|
|
<form action="{{ route('admin.system.update') }}" method="POST">
|
|
@csrf
|
|
@method('PUT')
|
|
|
|
<div class="space-y-6 max-w-2xl">
|
|
@foreach ($params as $alias => $body)
|
|
<div>
|
|
<label class="block text-sm font-bold text-gray-700 mb-2">
|
|
{{ $descriptions[$alias] ?? $alias }}
|
|
<span class="text-gray-400 font-normal ml-2">[{{ $alias }}]</span>
|
|
</label>
|
|
@if (strlen($body) > 50 || str_contains($body, "\n") || str_contains($body, '<'))
|
|
<textarea name="{{ $alias }}" rows="4"
|
|
class="w-full border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 p-2.5 bg-gray-50 border whitespace-pre-wrap">{{ $body }}</textarea>
|
|
@else
|
|
<input type="text" name="{{ $alias }}" value="{{ $body }}"
|
|
class="w-full border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 p-2.5 bg-gray-50 border">
|
|
@endif
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
<div class="mt-8 pt-6 border-t flex space-x-3">
|
|
<button type="submit"
|
|
class="px-6 py-2 bg-indigo-600 text-white rounded-md font-bold hover:bg-indigo-700 shadow-sm transition">保存并发布</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- 运维工具(仅 id=1 超管可见) --}}
|
|
@if (auth()->id() === 1)
|
|
<div class="mt-6 bg-white rounded-xl shadow-sm border border-gray-100 overflow-hidden">
|
|
<div class="p-6 border-b border-gray-100 bg-gray-50">
|
|
<h2 class="text-lg font-bold text-gray-800">🛠️ 运维工具</h2>
|
|
<p class="text-xs text-gray-500 mt-1">仅站长可见。操作不可撤销,请确认后执行。</p>
|
|
</div>
|
|
<div class="p-6">
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
|
|
{{-- 应用缓存清理 --}}
|
|
<div class="border border-gray-200 rounded-lg p-4">
|
|
<div class="font-bold text-gray-700 text-sm mb-1">🗑️ 应用缓存清理</div>
|
|
<p class="text-xs text-gray-400 mb-3">执行 <code class="bg-gray-100 px-1 rounded">config:clear +
|
|
cache:clear</code>,修改 .env 后需执行。</p>
|
|
<form action="{{ route('admin.system.ops.clear-cache') }}" method="POST"
|
|
onsubmit="return confirm('确定清理应用缓存?')">
|
|
@csrf
|
|
<button type="submit"
|
|
class="px-4 py-1.5 bg-amber-500 text-white rounded-md text-sm font-bold hover:bg-amber-600 transition">
|
|
立即清理
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
{{-- 路由缓存清理 --}}
|
|
<div class="border border-gray-200 rounded-lg p-4">
|
|
<div class="font-bold text-gray-700 text-sm mb-1">🗺️ 路由缓存清理</div>
|
|
<p class="text-xs text-gray-400 mb-3">执行 <code
|
|
class="bg-gray-100 px-1 rounded">route:clear</code>,修改路由后若出现 404 时执行。</p>
|
|
<form action="{{ route('admin.system.ops.clear-routes') }}" method="POST"
|
|
onsubmit="return confirm('确定清理路由缓存?')">
|
|
@csrf
|
|
<button type="submit"
|
|
class="px-4 py-1.5 bg-amber-500 text-white rounded-md text-sm font-bold hover:bg-amber-600 transition">
|
|
立即清理
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
{{-- 视图缓存清理 --}}
|
|
<div class="border border-gray-200 rounded-lg p-4">
|
|
<div class="font-bold text-gray-700 text-sm mb-1">🖼️ 视图缓存清理</div>
|
|
<p class="text-xs text-gray-400 mb-3">执行 <code
|
|
class="bg-gray-100 px-1 rounded">view:clear</code>,页面样式/内容不更新时执行。</p>
|
|
<form action="{{ route('admin.system.ops.clear-views') }}" method="POST"
|
|
onsubmit="return confirm('确定清理视图缓存?')">
|
|
@csrf
|
|
<button type="submit"
|
|
class="px-4 py-1.5 bg-amber-500 text-white rounded-md text-sm font-bold hover:bg-amber-600 transition">
|
|
立即清理
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
{{-- 房间在线名单清理 --}}
|
|
<div class="border border-red-100 rounded-lg p-4 bg-red-50">
|
|
<div class="font-bold text-red-700 text-sm mb-1">👻 清理幽灵在线名单</div>
|
|
<p class="text-xs text-red-400 mb-3">清空所有房间 Redis 在线记录,解决人数虚高问题。<br>执行后在线用户需重新进房才能出现在名单。</p>
|
|
<form action="{{ route('admin.system.ops.clear-room-online') }}" method="POST"
|
|
onsubmit="return confirm('确定清理所有房间在线名单?在线用户需重进房间!')">
|
|
@csrf
|
|
<button type="submit"
|
|
class="px-4 py-1.5 bg-red-500 text-white rounded-md text-sm font-bold hover:bg-red-600 transition">
|
|
立即清理
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
@endsection
|