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

109 lines
3.2 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
/**
* 文件功能:钓鱼事件后台管理控制器
* 提供钓鱼事件的列表展示、创建、编辑、删除、启用/禁用功能
*
* @author ChatRoom Laravel
*
* @version 1.0.0
*/
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\FishingEvent;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class FishingEventController extends Controller
{
/**
* 显示所有钓鱼事件列表
*/
public function index(): View
{
$events = FishingEvent::orderBy('sort')->orderBy('id')->get();
$totalWeight = $events->where('is_active', true)->sum('weight');
return view('admin.fishing.index', compact('events', 'totalWeight'));
}
/**
* 创建新钓鱼事件
*/
public function store(Request $request): RedirectResponse
{
$data = $request->validate([
'emoji' => 'required|string|max:10',
'name' => 'required|string|max:100',
'message' => 'required|string|max:255',
'exp' => 'required|integer',
'jjb' => 'required|integer',
'weight' => 'required|integer|min:1|max:9999',
'sort' => 'required|integer|min:0',
'is_active' => 'boolean',
]);
$data['is_active'] = $request->boolean('is_active', true);
FishingEvent::create($data);
return redirect()->route('admin.fishing.index')->with('success', '钓鱼事件已添加!');
}
/**
* 更新钓鱼事件
*
* @param FishingEvent $fishing 路由模型绑定
*/
public function update(Request $request, FishingEvent $fishing): RedirectResponse
{
$data = $request->validate([
'emoji' => 'required|string|max:10',
'name' => 'required|string|max:100',
'message' => 'required|string|max:255',
'exp' => 'required|integer',
'jjb' => 'required|integer',
'weight' => 'required|integer|min:1|max:9999',
'sort' => 'required|integer|min:0',
'is_active' => 'boolean',
]);
$data['is_active'] = $request->boolean('is_active');
$fishing->update($data);
return redirect()->route('admin.fishing.index')->with('success', "事件「{$fishing->name}」已更新!");
}
/**
* 切换事件启用/禁用状态AJAX
*
* @param FishingEvent $fishing 路由模型绑定
*/
public function toggle(FishingEvent $fishing): JsonResponse
{
$fishing->update(['is_active' => ! $fishing->is_active]);
return response()->json([
'ok' => true,
'is_active' => $fishing->is_active,
'message' => $fishing->is_active ? "{$fishing->name}」已启用" : "{$fishing->name}」已禁用",
]);
}
/**
* 删除钓鱼事件
*
* @param FishingEvent $fishing 路由模型绑定
*/
public function destroy(FishingEvent $fishing): RedirectResponse
{
$name = $fishing->name;
$fishing->delete();
return redirect()->route('admin.fishing.index')->with('success', "事件「{$name}」已删除!");
}
}