|
|
e81887034c
|
修复 WeddingCeremony 模型:补全 fillable/casts 及关联关系,解决批量赋值报错
|
2026-03-01 19:05:52 +08:00 |
|
|
|
84a4b42f31
|
离婚流程全面升级:①发起方专属确认弹窗(含对方拒绝后果+魅力/金币惩罚实时值)②被申请方三选弹窗(同意/不同意/稍后)③不同意=强制离婚申请人赔一半金币④所有惩罚数值从后台实时查询
|
2026-03-01 19:02:43 +08:00 |
|
|
|
9b55b5558b
|
完善婚姻系统:①离婚弹窗展示魅力惩罚警告 ②婚礼档位强制必选(移除无选项默认第一档)③婚礼消息含领取红包按钮 ④AppendSystemMessage全局函数(支持HTML)
|
2026-03-01 18:49:11 +08:00 |
|
|
|
6b32fe38c8
|
特性:离婚全屏公告弹窗(暗色阴郁风格+断裂心形动效)+ 先雷电后下雨双特效;弹窗触发重构为Alpine数据访问
|
2026-03-01 18:39:02 +08:00 |
|
|
|
87d91db1ee
|
特性:婚礼结成弹窗触发全员双倍礼花特效,粉金配色浪漫爆炸,持续12秒
|
2026-03-01 18:35:08 +08:00 |
|
|
|
1e5d11929e
|
修复:结婚弹窗及公屏公告显示 undefined 的问题,对齐后端事件字段名 user.username/partner.username
|
2026-03-01 18:31:57 +08:00 |
|
|
|
00231e0836
|
修复:reject() 事务闭包未 return 导致函数返回 null 违反类型声明的类型报错
|
2026-03-01 18:29:19 +08:00 |
|
|
|
a60a2c8173
|
修正:强制离婚间隔允许设置为0,解除后台HTML5表单效验使得修改其它参数时因其值为0导致拦截保存失败的问题
|
2026-03-01 18:27:19 +08:00 |
|
|
|
a9f395994b
|
修复:离婚冷静期配置项被错误写入系统参数表而非婚姻参数配置表的问题
|
2026-03-01 18:20:40 +08:00 |
|
|
|
73c78ee6d7
|
特性:支持在后台配置结婚离婚冷静期规则,并优化冷却时间文本提示;修复全局的离婚公告事件对象接收名称不匹配问题
|
2026-03-01 18:15:37 +08:00 |
|
|
|
d7c6e0e7a8
|
变更:求婚及离婚弹窗在有效期内重新刷新必现,并移除全局提示框的点击背景蒙层关闭功能强制操作
|
2026-03-01 18:08:50 +08:00 |
|
|
|
5bcbf74dfc
|
新增:在用户名片面板展现「协议离婚」按钮及相关的交互弹窗提示
|
2026-03-01 18:02:47 +08:00 |
|
|
|
52c252f525
|
变更:修复求婚同意消息未收到问题,重构求婚流程支持直接选婚礼档位
|
2026-03-01 17:53:43 +08:00 |
|
|
|
b7ded61523
|
变更:创建新的独立迁移文件更新 user_purchases 的 ENUM
考虑到修改已执行过的迁移文件无法在生产环境复用,
现回退对 2026_03_01_145034... 的修改,
并专门创建一个新的迁移 2026_03_01_173619_update_user_purchases_status_enum.php
解决 used_pending/lost 枚举缺失问题,方便线上直接 migrate。
|
2026-03-01 17:36:41 +08:00 |
|
|
|
919f0e30b5
|
修复:求婚时报错 user_purchases.status 字段由于未定义 ENUM 而截断的问题
在婚姻系统迁移 add_frozen_jjb_and_marriage_fields_to_marriages_table 中,
原来只在注释写了「扩展 user_purchases.status」,但漏了写执行语句。
目前已补上,执行 ALTER TABLE user_purchases MODIFY COLUMN status
扩展支持了 'used_pending' 和 'lost' 两个状态,确保求婚中和被拒绝时的状态能正确流转。
|
2026-03-01 17:35:03 +08:00 |
|
|
|
420efbc093
|
UI修复:求婚弹窗双按钮对齐,完美复刻「加好友大卡片」风格
- 彻底修复 字符串形式 覆盖内联 导致按钮形变的 bug,改用对象格式动态绑定样式,实现平滑继承
- 匹配大卡片公共弹窗按钮的标准尺寸:取消灰色边框,增加按钮高度 (padding: 10px 0, border-radius: 8px)
- 强制等分按钮宽度 (flex: 1)
- 根据金币充足/不足状态及点击状态,准确反映颜色、阴影及禁用态鼠标指针
|
2026-03-01 17:31:56 +08:00 |
|
|
|
b6188ce2c3
|
UI优化:求婚弹窗戒指改为居中展示,双按钮等宽参照名片风格
- 「选择求婚戒指」→「赠送的求婚戒」
- 移除选择网格,改为居中展示第一枚戒指(粉色卡片)
- 底部双按钮与好友名片操作栏完全统一:
padding:7px 10px; border-radius:5px; font-size:12px;
flex:1 等宽,gap:6px
|
2026-03-01 17:28:28 +08:00 |
|
|
|
be2d02cb8f
|
UI:求婚弹窗底部改为「取消」+「确认求婚」横排双按钮
参照用户名片操作栏按钮风格:
取消:灰色边框底,hover 加深
确认求婚:粉玫瑰渐变,禁用态灰色
两按钮等宽 flex:1 横排排列
|
2026-03-01 17:24:29 +08:00 |
|
|
|
050aec1db4
|
优化:婚礼费用提示内嵌弹窗,移除多余的二次确认弹窗
在求婚弹窗底部(戒指列表与按钮之间)内嵌费用提示面板:
✅ 金币充足:绿色背景,显示最低费用和当前余额
⚠️ 金币不足:红色背景提示,说明可先求婚再准备金币
移除 doPropose() 里的 chatDialog.confirm 二次确认,
点击'确认求婚'按钮直接发送,流程更顺畅。
|
2026-03-01 17:22:57 +08:00 |
|
|
|
c53cd7784a
|
UI重设计:求婚弹窗全面升级为浪漫高端风格
- 背景:深紫玫瑰色磨砂遮罩(backdrop-filter blur)
- 封面区:深玫瑰→粉红渐变,大 💍 图标投影,
对象名用磨砂胶囊标签显示
- 弹窗入场动画:opacity+scale 过渡
- 戒指卡片:选中态渐变背景+粉色阴影+右上角✓勾
未选中态浅灰底,悬停有过渡
- 无戒指:粉色虚线框+💔图标+直接跳商店按钮
- 确认按钮:三段深玫瑰渐变+红粉阴影,禁用态灰色
|
2026-03-01 17:21:48 +08:00 |
|
|
|
9ccc0b379d
|
优化:求婚前提示最低婚礼费用并检查金币余额
点击「送出求婚」前弹出确认弹窗:
💍 确认向【XXX】发出求婚吗?
📋 婚礼费用说明:
• 婚礼最低费用:🪙 5,888 金币
• 您当前金币:🪙 XXX 金币
⚠️ 戒指一旦送出即消耗,对方拒绝则戒指遗失。
金币不足时:直接拦截并弹 alert 说明,不发出请求
金币充足时:需确认后才发出求婚请求
同时在 chatContext 注入 userJjb 和 minWeddingCost
|
2026-03-01 17:19:27 +08:00 |
|
|
|
9c4598ab66
|
修复:所有婚姻弹窗无法显示的 bug
根因:外层容器 style='display:none' 写死,
Alpine x-show 把内层改为 flex,但外层 CSS 始终覆盖,
导致求婚弹窗、收婚弹窗、结婚成功弹窗、婚礼设置弹窗、
婚礼红包弹窗一律无法显示。
修复方案:将 show 状态的 x-show 移到外层容器,
内层固定显示(position:fixed + flex),去掉冲突的 display:none。
同时补充 x-cloak 防止页面加载时闪烁。
|
2026-03-01 17:17:14 +08:00 |
|
|
|
d703309a34
|
修复:当前用户未设性别时求婚按钮静默消失的问题
根因:lkddi 的 sex=0(未设置),mySex 为空字符串,
导致 && mySex 判断为 false,求婚按钮被隐藏无任何提示。
修复:
1. 将 lkddi.sex 更新为 1(男)
2. 新增「未设置性别」提示块:
- 当前用户未设性别 + 对方有性别 + 对方未婚 时显示
- 灰色虚线样式,hover 提示「请到个人资料页设置性别后即可求婚」
- 不再静默隐藏,避免用户困惑
|
2026-03-01 17:12:23 +08:00 |
|
|
|
c8c1943f85
|
功能:商店购买其他商品类型时广播公屏通知
周卡 / 改名卡 / 求婚戒指 / 自动钓鱼卡购买后
各自向聊天室公屏(系统传音,紫色)广播欢迎语:
📅 周卡:「登录时将自动触发!」
🎫 一次性道具:「购买了XXX道具!」
💍 戒指:「不知道打算送给谁呢?」
🎣 钓鱼卡:「开启了X小时的自动钓鱼模式!」
单次特效卡仍由原 play_effect 分支广播(橙色)
|
2026-03-01 17:04:11 +08:00 |
|
|
|
bf001a6cf6
|
优化:商店周卡/道具/戒指/钓鱼卡购买前弹确认窗口,购买成功后 Toast 提示
- 点击购买按钮 → 弹出 chatDialog.confirm 确认窗口
「确认花费 🪙 X 金币购买【XXX】吗?」
- 确认后才调用 buyItem;取消则不执行
- 购买成功后:showShopToast「✅ XXX 购买成功!」
- 商店保持打开(不再 close)让用户看到分组标题徽章更新
|
2026-03-01 16:58:29 +08:00 |
|
|
|
c72309aa16
|
优化:周卡分组标题显示当前已激活的特效名称
购买了全屏特效(周卡)后,商店「📅 周卡」分组标题旁
显示绿色徽章「✅ 已激活:XXX」,与自动钓鱼卡的剩余时间
徽章风格统一。
|
2026-03-01 16:55:12 +08:00 |
|
|
|
fc4c0c543e
|
优化:自动钓鱼卡剩余时间徽章移至分组标题旁
商品图标上去掉紫色时间徽章(避免每张卡都显示同值造成误解);
改为在「🎣 自动钓鱼卡」分组标题后方统一显示「⏳ 剩余 X 小时」紫色标签,
仅持有有效卡时出现。
|
2026-03-01 16:52:59 +08:00 |
|
|
|
759fb6deae
|
功能:后台新增商店管理页面(站长菜单)
- 路由:GET/POST/PUT/PATCH/DELETE /admin/shop
- 控制器:Admin/ShopItemController(index/store/update/toggle/destroy)
- 视图:admin/shop/index.blade.php
- 表格展示所有商品(名称/类型色标/价格/有效期/排序/状态)
- Alpine.js 弹窗新增/编辑(支持全字段)
- 上下架一键切换(PATCH toggle)
- 删除按键(含二次确认)
- 侧边栏:VIP 下方新增「🛒 商店管理」链接
- 权限:superlevel 可查看/编辑;id=1 可新增/删除
|
2026-03-01 16:47:34 +08:00 |
|
|
|
0ea6ea206c
|
安全:服务端校验钓鱼等待时间,防止前端篡改 wait_time
cast() 将 {token, cast_at, wait_time} 以 JSON 存入 Redis;
reel() 在验 token 后额外校验:
elapsed = now() - cast_at >= wait_time - 1(含1秒容差)
未满足则返回422「鱼还没上钩,别急!」
即使用户通过 DevTools 将 wait_time 改为 0,
服务端仍按实际 wait_time 拒绝过早的收竿请求。
|
2026-03-01 16:33:32 +08:00 |
|
|
|
168bc002f9
|
营销:自动钓鱼卡用户收竿消息末尾附加购买推广标签
使用自动钓鱼卡时,钓鱼播报消息末尾显示紫色小标签
「🎣 自动钓鱼卡」,其他玩家点击可直接打开商店购买。
* 仅检测到用户当前持有有效自动钓鱼卡时才附加
* 通过 onclick=window.openShopModal() 触发商店弹窗
|
2026-03-01 16:30:15 +08:00 |
|
|
|
303c5e2a60
|
功能:自动钓鱼卡持续循环钓鱼
有自动钓鱼卡时:
- 点一次「钓鱼」自动循环:抛竿→收竿→冷却→抛竿...
- 冷却期间按钮显示倒计时「⏳ 冷却 Xs」
- 屏幕右下角显示「🛑 停止自动钓鱼」悬浮按钮
- 点击停止或卡到期后自动退出循环
- 出错时也自动停止循环
|
2026-03-01 16:26:15 +08:00 |
|
|
|
bd1e247fcf
|
优化:浮漂下沉动画延长至 1.5s,视觉更自然
|
2026-03-01 16:22:42 +08:00 |
|
|
|
03e7f260b2
|
功能:自动钓鱼卡新增 72小时卡(15000金币)
|
2026-03-01 16:20:34 +08:00 |
|
|
|
63679a622f
|
功能:随机浮漂钓鱼防挂机 + 商店自动钓鱼卡
核心变更:
1. FishingController 重写
- cast(): 生成随机浮漂坐标(x/y%) + 一次性 token
- reel(): 必须携带 token 才能收竿(防脚本绕过)
- 检测自动钓鱼卡剩余时间并返回给前端
2. 前端钓鱼逻辑重写
- 抛竿后显示随机位置 🪝 浮漂动画(全屏飘动)
- 鱼上钩时浮漂「下沉」动画,8秒内点击浮漂才能收竿
- 超时未点击:鱼跑了,token 也失效
- 持有自动钓鱼卡:自动点击,紫色提示剩余时间
3. 商店新增「🎣 自动钓鱼卡」分组
- 3档:2h(800金)/8h(2500金)/24h(6000金)
- 图标徽章显示剩余有效时间(紫色)
- 购买后即时激活,无需手动操作
4. 数据库
- shop_items.type 加 auto_fishing 枚举
- shop_items.duration_minutes 新字段(分钟精度)
- Seeder 写入 3 张卡数据
防挂机原理:按钮 → 浮漂随机位置,脚本无法固定坐标点击
|
2026-03-01 16:19:45 +08:00 |
|
|
|
e0c15b437e
|
修复:求婚按钮异性判断 - 统一 sex 字段格式
根因:sex 字段数据库存整数(0/1/2),但前后端判断混用了
字符串('男'/'女')导致比较永远错误。
修复三处:
1. UserController::show() - sex 返回统一转字符串(1→'男' 2→'女' 其他→'')
2. frame.blade.php - chatContext.userSex 注入时同样转字符串
3. MarriageService::propose() - 后端性别校验改用整数(1/2)比较
逻辑链路:
- 未设置性别(sex=0) → '' → x-show && userInfo.sex 为'' falsy → 按钮隐藏 ✓
- 同性(如两个男) → '男'==='男' → !== 为false → 按钮隐藏 ✓
- 异性(男+女) → '男'!=='女' → 按钮显示 ✓
|
2026-03-01 16:04:32 +08:00 |
|
|
|
954a078d63
|
修复:自动存点不再覆盖有职务用户的等级
AutoSaveExp::processUser() 第3步升降级逻辑重构:
- 有在职职务的用户:等级强制锁定为 position.level
(防止自动存点按经验值降低/覆盖职务对应等级)
- 管理员(>= superLevel):不变动
- 普通用户:照旧按经验自动升降级
同时在 refresh() 后加 load('activePosition.position')
确保职务关联数据已就绪。
|
2026-03-01 16:00:10 +08:00 |
|
|
|
9139108744
|
修复:求婚按钮异性判断,mySex 存入 Alpine data 避免 x-show 内 window 访问失效
|
2026-03-01 15:56:12 +08:00 |
|
|
|
5cf87391b6
|
优化:商店分组排序调整,改名卡(道具)移至戒指后面
|
2026-03-01 15:52:26 +08:00 |
|
|
|
f9312475d0
|
优化:商店浮窗宽度 520→800px,网格 2列→4列
|
2026-03-01 15:49:38 +08:00 |
|
|
|
3132f013b7
|
修复:无戒指时点确定改为打开商店浮窗而非新标签页
|
2026-03-01 15:47:01 +08:00 |
|
|
|
4a9730c38d
|
功能:浮窗商店同步加「💍 求婚戒指」分组
toolbar.blade.php renderShop 补充:
- ring 类型分组(存入背包,求婚时消耗)
- 图标持有数量红色徽章
- 卡片下方亲密度/魅力加成标注
- 购买按钮走现有 buyItem 流程(后端 buyRing 处理)
|
2026-03-01 15:45:13 +08:00 |
|
|
|
29e43507ac
|
功能:商店完善戒指板块
迁移:
- 2026_03_01_153959:shop_items 增加 intimacy_bonus/charm_bonus 字段
Seeder(RingItemsSeeder):
- 银质戒指 500金 亲密+10 魅力+30
- 黄金戒指 2000金 亲密+30 魅力+80
- 红宝石戒指 8000金 亲密+80 魅力+200
- 钻石戒指 30000金 亲密+200 魅力+500
- 传说神戒 100000金 亲密+500 魅力+1000
ShopService:
- buyItem() 分支加 ring 类型
- buyRing():扣金币 + 写入 active UserPurchase(背包持有)
ShopController::items():
- 返回 intimacy_bonus/charm_bonus
- 统计 ring_counts(各戒指持有数量)
shop-panel.blade.php:
- 新增「💍 求婚戒指」分组(排在最后)
- 图标右上角红色数字徽章(持有时)
- 卡片下方显示亲密度/魅力加成
- 购买按钮与现有逻辑复用
|
2026-03-01 15:42:25 +08:00 |
|
|
|
1f33013216
|
优化:求婚前先检查戒指库存,无戒指则引导购买
openProposeModal() 改为 async:
1. 先调 /marriage/rings 检查背包
2. 无戒指 → 弹确认框 → 同意则新窗口打开 /shop
3. 有戒指 → 直接传入弹窗(openWithRings),避免二次请求
marriageProposeModal 新增 openWithRings(username, rings)
方法,接收预加载列表,无 loading 状态直接展示。
|
2026-03-01 15:38:52 +08:00 |
|
|
|
e5a35779f8
|
修复:UserPurchase 模型补充 item() 关联别名
婚姻系统 whereHas('item') / with('item') 需要此方法,
原模型只有 shopItem(),现在加 item() 作为别名指向同一外键。
|
2026-03-01 15:36:22 +08:00 |
|
|
|
e20f94fe17
|
修复:求婚限制异性(前端隐藏按钮 + 后端拦截校验)
前端(user-actions.blade.php):
- 求婚按钮增加三重条件:对方未婚 + 双方性别均已填写 + 性别不同
后端(MarriageService::propose):
- 增加异性校验:两方性别必须为「男/女」且不同
- 报错:只有男女双方才能互相求婚
frame.blade.php:
- chatContext 注入 userSex(当前用户性别)供前端判断
|
2026-03-01 15:34:36 +08:00 |
|
|
|
877fd1935f
|
功能:婚姻系统第12步(前端交互)
chat.js:
- 监听婚姻全局广播(MarriageAccepted/Divorced/WeddingCelebration)
- initMarriagePrivateChannel() 监听私人频道
(求婚/拒绝/过期/离婚申请/红包领取)
frame.blade.php:
- chatContext.marriage 注入所有婚姻 API URL
- 引入 marriage-modals.blade.php 弹窗组件
marriage-modals.blade.php(新建):
- 求婚弹窗(选戒指→求婚)
- 收到求婚弹窗(接受/拒绝)
- 结婚成功公告弹窗(可跳转婚礼设置)
- 婚礼设置弹窗(档位/支付方式/立即OR定时)
- 婚礼红包领取弹窗
- 所有 WebSocket 事件处理
user-actions.blade.php:
- 名片加「💍 求婚」按钮(对方未婚时)
- 名片加「💑 已婚状态」标签(对方已婚时)
- fetchUser 同步拉取对方婚姻状态
MarriageController:
- targetStatus 返回增加 status/partner_name/marriage_id
- myRings 返回增加 status/intimacy_bonus/charm_bonus
|
2026-03-01 15:31:07 +08:00 |
|
|
|
37af4ba975
|
修复:婚姻管理总览页 Tailwind v4 动态类无法构建问题
- 「婚礼档位」按钮改用 style 内联颜色(bg-pink-600 未被扫描)
- 快捷入口4张卡片 hover 颜色改为完整静态类名
(Tailwind v4 无法扫描动态拼接 bg-xx / text-xx)
- npm run build 验证已生效
|
2026-03-01 15:23:35 +08:00 |
|
|
|
143601c251
|
功能:婚姻系统第11步(Horizon Jobs + 定时任务)
5个 Job:
- ExpireMarriageProposals:每5分钟扫描超时求婚(广播通知)
- TriggerScheduledWeddings:每5分钟触发定时婚礼(广播庆典)
- AutoExpireDivorces:每小时处理离婚超时自动解除
- ExpireWeddingEnvelopes:每小时清理过期红包
- ProcessMarriageIntimacy:每日00:05全量亲密度时间奖励
console.php 注册5个 Schedule
|
2026-03-01 15:16:46 +08:00 |
|
|
|
d2797d5b59
|
功能:婚姻系统第9步(后台管理页面)
Admin/MarriageManagerController:
- index() 总览统计卡片
- list() 婚姻列表(筛选/强制离婚/取消求婚)
- proposals() 求婚记录
- ceremonies() 婚礼红包记录
- claimDetail() 红包领取明细
- intimacyLogs() 亲密度日志(来源筛选)
- configs/updateConfigs 参数配置(批量保存)
- tiers/updateTier 婚礼档位管理
Views(7个页面):admin/marriages/{index|list|configs|tiers|ceremonies|claim-detail|proposals|intimacy-logs}
侧边栏:superlevel 区块新增「💒 婚姻管理」入口
|
2026-03-01 15:15:03 +08:00 |
|
|
|
4f49fb7ce8
|
功能:婚姻系统第8&10步(Controllers + Events + 路由)
- MarriageController:propose/accept/reject/divorce/confirmDivorce/status
- WeddingController:tiers/setup(立即触发)/claim/envelopeStatus
- 8个 WebSocket Events:
Marriage{Proposed|Accepted|Rejected|Expired|Divorced|DivorceRequested}
WeddingCelebration / EnvelopeClaimed
- 前台路由:marriage.* + wedding.*
- 后台路由:admin.marriages.*(superlevel 层)
|
2026-03-01 15:09:33 +08:00 |
|