Files
chatroom/app/Http/Controllers/Admin/RoomManagerController.php

95 lines
2.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 文件功能:后台房间管理控制器
* 管理员可新增、编辑、删除房间信息(名称、介绍、公告等)
* 系统房间room_keep = true不允许删除
*
* @author ChatRoom Laravel
*
* @version 1.1.0
*/
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Room;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class RoomManagerController extends Controller
{
/**
* 显示所有房间列表
*/
public function index(): View
{
$rooms = Room::orderBy('id')->get();
return view('admin.rooms.index', compact('rooms'));
}
/**
* 新增房间
*/
public function store(Request $request): RedirectResponse
{
$data = $request->validate([
'room_name' => 'required|string|max:100|unique:rooms,room_name',
'room_des' => 'nullable|string|max:500',
'room_owner' => 'nullable|string|max:50',
'permit_level' => 'required|integer|min:0|max:15',
'door_open' => 'required|boolean',
], [
'room_name.unique' => '房间名称已存在,请换一个名称。',
]);
// 设置新建房间的默认值
$data['room_keep'] = false; // 新建房间均为非系统房间,可删除
$data['build_time'] = now();
$room = Room::create($data);
return redirect()->route('admin.rooms.index')->with('success', "房间「{$room->room_name}」新建成功!");
}
/**
* 更新房间信息
*
* @param Room $room 路由模型自动注入
*/
public function update(Request $request, Room $room): RedirectResponse
{
$data = $request->validate([
'room_name' => 'required|string|max:100',
'room_des' => 'nullable|string|max:500',
'announcement' => 'nullable|string|max:500',
'room_owner' => 'nullable|string|max:50',
'permit_level' => 'required|integer|min:0|max:15',
'door_open' => 'required|boolean',
]);
$room->update($data);
return redirect()->route('admin.rooms.index')->with('success', "房间「{$room->room_name}」信息已更新!");
}
/**
* 删除房间(系统房间不允许删除)
*
* @param Room $room 路由模型自动注入
*/
public function destroy(Room $room): RedirectResponse
{
if ($room->room_keep) {
return redirect()->route('admin.rooms.index')->with('error', '系统房间不允许删除!');
}
$name = $room->room_name;
$room->delete();
return redirect()->route('admin.rooms.index')->with('success', "房间「{$name}」已删除!");
}
}