Files
chatroom/database/migrations/2026_02_26_092923_create_sysparam_table.php

77 lines
5.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
/**
* 文件功能创建系统参数表sysparam并填充所有默认配置
* 合并原来分散的多个 seed 迁移,统一在此处完成
*/
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* 创建 sysparam 表并一次性填入所有系统参数(最终值)
*/
public function up(): void
{
Schema::create('sysparam', function (Blueprint $table) {
$table->id();
$table->string('alias', 100)->unique()->comment('参数别名(唯一标识)');
$table->text('body')->nullable()->comment('参数值');
$table->string('guidetxt', 500)->nullable()->comment('参数说明(后台显示)');
$table->timestamps();
});
// 生成 99 级经验阶梯level^2.5 曲线,取整到十位)
$thresholds = [];
for ($level = 1; $level <= 99; $level++) {
$thresholds[] = (int) (ceil(10 * pow($level, 2.5) / 10) * 10);
}
$levelExpStr = implode(',', $thresholds);
$now = now();
DB::table('sysparam')->insert([
// ── 等级体系99 级)────────────────────────────────────────
['alias' => 'levelexp', 'body' => $levelExpStr, 'guidetxt' => '等级经验阈值配置逗号分隔第N个=升到N级所需累计经验', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'maxlevel', 'body' => '99', 'guidetxt' => '用户最高可达等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'superlevel', 'body' => '100', 'guidetxt' => '管理员级别(= 最高等级 + 1拥有最高权限的等级阈值', 'created_at' => $now, 'updated_at' => $now],
// ── 心跳奖励 ──────────────────────────────────────────────
['alias' => 'exp_per_heartbeat', 'body' => '1', 'guidetxt' => '⚡ 每次心跳经验奖励(支持固定值如"1"或范围如"1-10"0关闭', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'jjb_per_heartbeat', 'body' => '1-3', 'guidetxt' => '💰 每次心跳金币奖励(支持固定值如"1"或范围如"1-5"0关闭', 'created_at' => $now, 'updated_at' => $now],
// ── 管理操作权限等级 ──────────────────────────────────────
['alias' => 'level_warn', 'body' => '5', 'guidetxt' => '警告所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_mute', 'body' => '50', 'guidetxt' => '禁言所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_kick', 'body' => '60', 'guidetxt' => '踢人所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_announcement','body' => '60', 'guidetxt' => '设置公告所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_ban', 'body' => '80', 'guidetxt' => '封号所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_banip', 'body' => '90', 'guidetxt' => '封IP所需等级', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'level_freeze', 'body' => '14', 'guidetxt' => '冻结账号所需等级', 'created_at' => $now, 'updated_at' => $now],
// ── 随机事件 ──────────────────────────────────────────────
['alias' => 'auto_event_chance','body' => '10', 'guidetxt' => '随机事件触发概率百分比1-100', 'created_at' => $now, 'updated_at' => $now],
// ── 魅力系统 ──────────────────────────────────────────────
['alias' => 'charm_cross_sex', 'body' => '2', 'guidetxt' => '异性聊天每条消息增加的魅力值', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'charm_same_sex', 'body' => '1', 'guidetxt' => '同性聊天每条消息增加的魅力值', 'created_at' => $now, 'updated_at' => $now],
['alias' => 'charm_hourly_limit','body' => '20', 'guidetxt' => '每小时通过聊天获取的魅力值上限(防刷屏)', 'created_at' => $now, 'updated_at' => $now],
// ── 排行榜 ────────────────────────────────────────────────
['alias' => 'leaderboard_limit','body' => '20', 'guidetxt' => '🏆 排行榜每榜显示人数', 'created_at' => $now, 'updated_at' => $now],
]);
}
/**
* 回滚:删除 sysparam 表
*/
public function down(): void
{
Schema::dropIfExists('sysparam');
}
};