Files
chatroom/database/seeders/MarriageSystemSeeder.php

150 lines
12 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
/**
* 文件功能:婚姻系统初始数据 Seeder
*
* 写入以下默认数据:
* 1. marriage_configs — 约30条可配置参数亲密度/魅力/离婚/时间规则)
* 2. wedding_tiers — 5个婚礼档位
* 3. shop_items — 3种戒指道具ring_silver/ring_gold/ring_diamond
*
* @author ChatRoom Laravel
*
* @version 1.0.0
*/
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
class MarriageSystemSeeder extends Seeder
{
/**
* 写入婚姻系统初始配置数据。
*/
public function run(): void
{
$now = Carbon::now();
// ── 1. marriage_configs ──────────────────────────────────────
$configs = [
// 【亲密度加分规则】
['group' => '亲密度加分', 'key' => 'intimacy_daily_time', 'value' => 10, 'label' => '每日时间奖励', 'description' => '每天00:00给所有婚姻对各加的亲密度', 'min' => 1, 'max' => 100],
['group' => '亲密度加分', 'key' => 'intimacy_online_per_min', 'value' => 1, 'label' => '同时在线(每分钟)', 'description' => '双方同时在线每分钟增加的亲密度', 'min' => 0, 'max' => 10],
['group' => '亲密度加分', 'key' => 'intimacy_online_daily_cap', 'value' => 120, 'label' => '同时在线每日上限', 'description' => '每日因同时在线最多可得亲密度约2小时', 'min' => 0, 'max' => 1440],
['group' => '亲密度加分', 'key' => 'intimacy_recv_flower', 'value' => 2, 'label' => '收到伴侣送花(每朵)', 'description' => '收到伴侣送花时每朵花增加的亲密度', 'min' => 0, 'max' => 20],
['group' => '亲密度加分', 'key' => 'intimacy_recv_flower_cap', 'value' => 40, 'label' => '收花每日上限', 'description' => '每日因收花最多可得亲密度', 'min' => 0, 'max' => 500],
['group' => '亲密度加分', 'key' => 'intimacy_send_flower', 'value' => 1, 'label' => '向伴侣送花(每朵)', 'description' => '向伴侣送花时每朵花增加的亲密度(送方)', 'min' => 0, 'max' => 10],
['group' => '亲密度加分', 'key' => 'intimacy_send_flower_cap', 'value' => 20, 'label' => '送花每日上限', 'description' => '每日因送花最多可得亲密度', 'min' => 0, 'max' => 200],
['group' => '亲密度加分', 'key' => 'intimacy_private_chat', 'value' => 1, 'label' => '私聊加分', 'description' => '每2条私信获得1亲密度', 'min' => 0, 'max' => 10],
['group' => '亲密度加分', 'key' => 'intimacy_private_chat_cap', 'value' => 10, 'label' => '私聊每日上限', 'description' => '每日因私聊最多可得亲密度', 'min' => 0, 'max' => 100],
// 【戒指魅力加成与初始亲密度】
['group' => '戒指参数', 'key' => 'ring_silver_charm', 'value' => 50, 'label' => '银戒指魅力加成', 'description' => '双方各获得的魅力值(结婚时一次性)', 'min' => 0, 'max' => 9999],
['group' => '戒指参数', 'key' => 'ring_gold_charm', 'value' => 150, 'label' => '金戒指魅力加成', 'description' => '双方各获得的魅力值(结婚时一次性)', 'min' => 0, 'max' => 9999],
['group' => '戒指参数', 'key' => 'ring_diamond_charm', 'value' => 500, 'label' => '钻戒魅力加成', 'description' => '双方各获得的魅力值(结婚时一次性)', 'min' => 0, 'max' => 99999],
['group' => '戒指参数', 'key' => 'ring_silver_intimacy', 'value' => 10, 'label' => '银戒指初始亲密度', 'description' => '结婚时一次性赠予的亲密度(银戒)', 'min' => 0, 'max' => 500],
['group' => '戒指参数', 'key' => 'ring_gold_intimacy', 'value' => 30, 'label' => '金戒指初始亲密度', 'description' => '结婚时一次性赠予的亲密度(金戒)', 'min' => 0, 'max' => 500],
['group' => '戒指参数', 'key' => 'ring_diamond_intimacy', 'value' => 80, 'label' => '钻戒初始亲密度', 'description' => '结婚时一次性赠予的亲密度(钻戒)', 'min' => 0, 'max' => 1000],
// 【婚姻等级阈值】
['group' => '婚姻等级', 'key' => 'level2_threshold', 'value' => 200, 'label' => '等级2恩爱夫妻阈值', 'description' => '达到此亲密度后升至等级2', 'min' => 1, 'max' => 9999],
['group' => '婚姻等级', 'key' => 'level3_threshold', 'value' => 600, 'label' => '等级3情深意重阈值', 'description' => '达到此亲密度后升至等级3', 'min' => 1, 'max' => 9999],
['group' => '婚姻等级', 'key' => 'level4_threshold', 'value' => 1500, 'label' => '等级4白头偕老阈值', 'description' => '达到此亲密度后升至等级4', 'min' => 1, 'max' => 99999],
// 【离婚惩罚】
['group' => '离婚惩罚', 'key' => 'divorce_mutual_charm', 'value' => 100, 'label' => '协议离婚魅力惩罚', 'description' => '双方各扣减魅力(填正数,系统取负)', 'min' => 0, 'max' => 9999],
['group' => '离婚惩罚', 'key' => 'divorce_forced_charm', 'value' => 300, 'label' => '强制离婚魅力惩罚', 'description' => '强制方扣减魅力', 'min' => 0, 'max' => 9999],
['group' => '离婚惩罚', 'key' => 'divorce_auto_charm', 'value' => 150, 'label' => '超时自动离婚惩罚', 'description' => '发起方扣减魅力72h无响应自动解除', 'min' => 0, 'max' => 9999],
['group' => '离婚惩罚', 'key' => 'divorce_mutual_cooldown', 'value' => 70, 'label' => '协议离婚冷静期(天)', 'description' => '协议离婚后多少天内不可再次结婚', 'min' => 0, 'max' => 365],
['group' => '离婚惩罚', 'key' => 'divorce_forced_cooldown', 'value' => 90, 'label' => '强制离婚冷静期(天)', 'description' => '强制方多少天内不可再次结婚', 'min' => 0, 'max' => 365],
['group' => '离婚惩罚', 'key' => 'divorce_auto_cooldown', 'value' => 30, 'label' => '超时自动离婚冷静期', 'description' => '发起方多少天内不可再次结婚', 'min' => 0, 'max' => 365],
['group' => '离婚惩罚', 'key' => 'forced_divorce_limit_days', 'value' => 60, 'label' => '强制离婚间隔(天)', 'description' => '多少天内只能使用强制离婚1次', 'min' => 0, 'max' => 365],
// 【时间规则】
['group' => '时间规则', 'key' => 'proposal_expire_hours', 'value' => 48, 'label' => '求婚有效期(小时)', 'description' => '超时后戒指消失、求婚作废', 'min' => 1, 'max' => 168],
['group' => '时间规则', 'key' => 'divorce_request_timeout', 'value' => 72, 'label' => '离婚申请等待时长(小时)', 'description' => '协议离婚后对方多久不响应则自动升级为强制', 'min' => 1, 'max' => 168],
['group' => '时间规则', 'key' => 'envelope_expire_hours', 'value' => 24, 'label' => '婚礼红包有效期(小时)', 'description' => '超时未领取的红包自动消失(不退还)', 'min' => 1, 'max' => 72],
];
foreach ($configs as &$row) {
$row['created_at'] = $now;
$row['updated_at'] = $now;
}
unset($row);
DB::table('marriage_configs')->upsert($configs, ['key'], ['value', 'label', 'description', 'min', 'max', 'updated_at']);
// ── 2. wedding_tiers ─────────────────────────────────────────
$tiers = [
['tier' => 1, 'name' => '小小祝福', 'icon' => '⭐', 'amount' => 5888, 'description' => '小小心意,愿新人幸福美满!', 'is_active' => true],
['tier' => 2, 'name' => '甜蜜相拥', 'icon' => '⭐⭐', 'amount' => 28888, 'description' => '诚意满满,共享甜蜜时光!', 'is_active' => true],
['tier' => 3, 'name' => '盛世婚礼', 'icon' => '⭐⭐⭐', 'amount' => 68888, 'description' => '盛世婚宴,全场同贺!', 'is_active' => true],
['tier' => 4, 'name' => '豪华盛典', 'icon' => '⭐⭐⭐⭐', 'amount' => 128888, 'description' => '贵族婚礼,普天同庆,豪气冲天!', 'is_active' => true],
['tier' => 5, 'name' => '传世佳话', 'icon' => '⭐⭐⭐⭐⭐', 'amount' => 288888, 'description' => '传说级婚礼,流芳百世,共见证!', 'is_active' => true],
];
foreach ($tiers as &$t) {
$t['created_at'] = $now;
$t['updated_at'] = $now;
}
unset($t);
DB::table('wedding_tiers')->upsert($tiers, ['tier'], ['name', 'icon', 'amount', 'description', 'is_active', 'updated_at']);
// ── 3. shop_items — 三种戒指 ─────────────────────────────────
// 先查询 shop_items 的当前最大 sort_order
$maxSort = DB::table('shop_items')->max('sort_order') ?? 0;
$rings = [
[
'name' => '银戒指',
'slug' => 'ring_silver',
'icon' => '💍',
'description' => '用银戒指求婚,表达心意。结婚时双方各获 +50 魅力,初始亲密度 +10。',
'price' => 3888,
'type' => 'ring',
'duration_days' => null,
'is_active' => true,
'sort_order' => $maxSort + 1,
],
[
'name' => '金戒指',
'slug' => 'ring_gold',
'icon' => '💎',
'description' => '用金戒指求婚,彰显诚意。结婚时双方各获 +150 魅力,初始亲密度 +30。',
'price' => 12888,
'type' => 'ring',
'duration_days' => null,
'is_active' => true,
'sort_order' => $maxSort + 2,
],
[
'name' => '钻戒',
'slug' => 'ring_diamond',
'icon' => '👑',
'description' => '顶级钻戒,永结同心!结婚时双方各获 +500 魅力,初始亲密度 +80。',
'price' => 38888,
'type' => 'ring',
'duration_days' => null,
'is_active' => true,
'sort_order' => $maxSort + 3,
],
];
foreach ($rings as &$r) {
$r['created_at'] = $now;
$r['updated_at'] = $now;
}
unset($r);
DB::table('shop_items')->upsert($rings, ['slug'], [
'name', 'icon', 'description', 'price', 'type', 'duration_days', 'is_active', 'sort_order', 'updated_at',
]);
$this->command->info('✅ 婚姻系统初始数据写入完成:'.count($configs).' 条配置 + 5 个婚礼档位 + 3 种戒指');
}
}