功能:字体颜色持久化、等级体系升级至99级、钓鱼小游戏、补充系统参数

- 字体颜色:s_color 改为 varchar,发消息时保存颜色,进入聊天室自动恢复
- 等级体系:maxlevel 15→99,superlevel 16→100,99级经验阶梯(幂次曲线)
- 管理权限等级按比例调整:禁言50、踢人60、设公告60、封号80、封IP90
- 钓鱼小游戏:FishingController(抛竿扣金币+收竿随机结果+广播)
- 补充6个缺失的 sysparam 参数 + 4个钓鱼参数
- 用户列表点击用户名后自动聚焦输入框
- Pint 格式化
This commit is contained in:
2026-02-26 21:10:34 +08:00
parent d884853968
commit ea06328885
652 changed files with 5013 additions and 1274 deletions
+33 -6
View File
@@ -2,6 +2,7 @@
use App\Http\Controllers\AuthController;
use App\Http\Controllers\ChatController;
use App\Http\Controllers\FishingController;
use App\Http\Controllers\RoomController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Auth;
@@ -13,7 +14,10 @@ Route::get('/', function () {
return redirect()->route('rooms.index');
}
return view('index'); // 指向 resources/views/index.blade.php
// 获取可用房间列表供登录页选择(原版风格)
$rooms = \App\Models\Room::orderBy('id')->get();
return view('index', compact('rooms'));
})->name('home');
// 处理登录/自动注册请求
@@ -45,6 +49,8 @@ Route::middleware(['chat.auth'])->group(function () {
Route::put('/user/password', [UserController::class, 'changePassword'])->name('user.update_password');
Route::post('/user/{username}/kick', [UserController::class, 'kick'])->name('user.kick');
Route::post('/user/{username}/mute', [UserController::class, 'mute'])->name('user.mute');
Route::post('/user/{username}/ban', [UserController::class, 'ban'])->name('user.ban');
Route::post('/user/{username}/banip', [UserController::class, 'banIp'])->name('user.banip');
// ---- 第五阶段:具体房间内部聊天核心 ----
// 进入具体房间界面的初始化
@@ -60,10 +66,23 @@ Route::middleware(['chat.auth'])->group(function () {
// 退出房间
Route::post('/room/{id}/leave', [ChatController::class, 'leave'])->name('chat.leave');
// 头像列表(供选择)
Route::get('/headface/list', [ChatController::class, 'headfaceList'])->name('headface.list');
// 修改头像
Route::post('/headface/change', [ChatController::class, 'changeAvatar'])->name('headface.change');
// 设置房间公告/祝福语
Route::post('/room/{id}/announcement', [ChatController::class, 'setAnnouncement'])->name('chat.announcement');
// ---- 钓鱼小游戏(复刻原版 diaoyu/ 功能)----
Route::post('/room/{id}/fish/cast', [FishingController::class, 'cast'])->name('fishing.cast');
Route::post('/room/{id}/fish/reel', [FishingController::class, 'reel'])->name('fishing.reel');
});
// 强力特权层中间件:同时验证 chat.auth 登录态 和 chat.level:15 特权
Route::middleware(['chat.auth', 'chat.level:15'])->prefix('admin')->name('admin.')->group(function () {
// 强力特权层中间件:同时验证 chat.auth 登录态 和 chat.level:super 特权(superlevel 由 sysparam 配置)
Route::middleware(['chat.auth', 'chat.level:super'])->prefix('admin')->name('admin.')->group(function () {
// 后台首页概览
Route::get('/', [\App\Http\Controllers\Admin\DashboardController::class, 'index'])->name('dashboard');
@@ -76,7 +95,15 @@ Route::middleware(['chat.auth', 'chat.level:15'])->prefix('admin')->name('admin.
Route::put('/users/{id}', [\App\Http\Controllers\Admin\UserManagerController::class, 'update'])->name('users.update');
Route::delete('/users/{id}', [\App\Http\Controllers\Admin\UserManagerController::class, 'destroy'])->name('users.destroy'); // 物理封杀
// 特殊高危操作日志与运维工具 (选做或简易实现 SQL.ASP)
Route::get('/sql', [\App\Http\Controllers\Admin\SqlController::class, 'index'])->name('sql.index');
Route::post('/sql', [\App\Http\Controllers\Admin\SqlController::class, 'execute'])->name('sql.execute'); // ⚠ 强烈限制为纯 SELECT 查询
// 房间管理
Route::get('/rooms', [\App\Http\Controllers\Admin\RoomManagerController::class, 'index'])->name('rooms.index');
Route::put('/rooms/{id}', [\App\Http\Controllers\Admin\RoomManagerController::class, 'update'])->name('rooms.update');
Route::delete('/rooms/{id}', [\App\Http\Controllers\Admin\RoomManagerController::class, 'destroy'])->name('rooms.destroy');
// 随机事件管理(复刻原版 autoact 系统)
Route::get('/autoact', [\App\Http\Controllers\Admin\AutoactController::class, 'index'])->name('autoact.index');
Route::post('/autoact', [\App\Http\Controllers\Admin\AutoactController::class, 'store'])->name('autoact.store');
Route::put('/autoact/{id}', [\App\Http\Controllers\Admin\AutoactController::class, 'update'])->name('autoact.update');
Route::post('/autoact/{id}/toggle', [\App\Http\Controllers\Admin\AutoactController::class, 'toggle'])->name('autoact.toggle');
Route::delete('/autoact/{id}', [\App\Http\Controllers\Admin\AutoactController::class, 'destroy'])->name('autoact.destroy');
});