Files
chatroom/database/seeders/FishingEventSeeder.php
lkddi 03ec3a9fbb 功能:钓鱼游戏后台管理系统
一、钓鱼全局开关
- 钓鱼纳入 GameConfig(game_key=fishing),游戏管理页可一键开关
- cast() 接口加开关校验,关闭时返回 403 友好提示
- GameConfigSeeder 新增 fishing 配置(含4个参数)

二、钓鱼事件数据库化
- 新建 fishing_events 表(emoji/name/message/exp/jjb/weight/is_active/sort)
- FishingEvent 模型含 rollOne() 加权随机方法
- FishingEventSeeder 填充7条初始事件(经验降低、金币提升)
- FishingController::randomFishResult() 改为读数据库事件

三、钓鱼参数迁移至 GameConfig
- fishing_cost/wait_min/wait_max/cooldown 改为 GameConfig::param() 读取
- 保留 Sysparam fallback 兼容旧数据

四、后台管理页面
- 新建 FishingEventController(CRUD + AJAX toggle)
- 新建 admin/fishing/index.blade.php(事件列表+概率显示+编辑弹窗)
- 侧边栏「游戏管理」下方新增「🎣 钓鱼事件」入口
- 游戏管理视图 gameParamLabels 新增钓鱼参数标签
2026-03-03 16:46:36 +08:00

124 lines
3.8 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
/**
* 文件功能:钓鱼事件初始数据填充
*
* 将原硬编码的 7 个钓鱼事件迁移至数据库,
* 调整奖励:经验减少,金币提升,游戏更加休闲娱乐。
*
* 执行方式php artisan db:seed --class=FishingEventSeeder
*
* @author ChatRoom Laravel
*
* @version 1.0.0
*/
namespace Database\Seeders;
use App\Models\FishingEvent;
use Illuminate\Database\Seeder;
class FishingEventSeeder extends Seeder
{
/**
* 填充钓鱼事件数据
*
* weight 权重说明(总权重 100
* 15 → 大鲨鱼(幸运)
* 15 → 娃娃鱼(卖鱼)
* 20 → 大草鱼(经验)
* 20 → 小鲤鱼(双收)
* 15 → 掉河(惩罚)
* 10 → 被打(惩罚)
* 5 → 超级大奖
*/
public function run(): void
{
// 避免重复 Seed
if (FishingEvent::count() > 0) {
$this->command->info('钓鱼事件已存在,跳过填充。');
return;
}
$events = [
[
'sort' => 1,
'emoji' => '🦈',
'name' => '大鲨鱼',
'message' => '钓到一条大鲨鱼获得经验30、金币50',
'exp' => 30,
'jjb' => 50,
'weight' => 15,
'is_active' => true,
],
[
'sort' => 2,
'emoji' => '🐟',
'name' => '娃娃鱼',
'message' => '钓到一条娃娃鱼到集市卖得80个金币',
'exp' => 0,
'jjb' => 80,
'weight' => 15,
'is_active' => true,
],
[
'sort' => 3,
'emoji' => '🐠',
'name' => '大草鱼',
'message' => '钓到一只大草鱼吃下增加经验20、金币30',
'exp' => 20,
'jjb' => 30,
'weight' => 20,
'is_active' => true,
],
[
'sort' => 4,
'emoji' => '🐡',
'name' => '小鲤鱼',
'message' => '钓到一条小鲤鱼增加经验10、金币20',
'exp' => 10,
'jjb' => 20,
'weight' => 20,
'is_active' => true,
],
[
'sort' => 5,
'emoji' => '💧',
'name' => '落水惨败',
'message' => '鱼没钓到摔到河里损失金币30',
'exp' => 0,
'jjb' => -30,
'weight' => 15,
'is_active' => true,
],
[
'sort' => 6,
'emoji' => '👊',
'name' => '被抓殴打',
'message' => '偷钓鱼塘被主人发现一阵殴打金币减少10',
'exp' => 0,
'jjb' => -10,
'weight' => 10,
'is_active' => true,
],
[
'sort' => 7,
'emoji' => '🎉',
'name' => '超级大奖',
'message' => '运气爆棚!钓到大鲨鱼、大草鱼、小鲤鱼各一条!经验+50金币+200',
'exp' => 50,
'jjb' => 200,
'weight' => 5,
'is_active' => true,
],
];
foreach ($events as $event) {
FishingEvent::create($event);
}
$this->command->info('✅ 钓鱼事件已填充7 条)');
}
}