Commit Graph

33 Commits

Author SHA1 Message Date
040dbdef3c 优化:全站金币图标由 🪙(银灰色)统一替换为 💰(金黄色)
🪙 在多数平台/字体上渲染为银灰色,与「金币」语义不符;
💰 各平台均渲染为金黄色,更直观传达金币概念。

涉及文件(43处):
- app/Jobs:百家乐、赛马结算广播
- app/Http/Controllers:管理员命令、红包、老虎机、神秘箱子
- app/Listeners
- resources/views:聊天室各游戏面板、商店、toolbar、后台页面等
2026-03-04 15:00:02 +08:00
16cbb32f35 优化:设置弹窗提示改为百家乐内联卡片风格,3s 后自动淡出
- 新增 showInlineMsg() 函数:成功显示绿色卡片,失败显示红色卡片,3s 后自动淡出
- 修改密码区增加 #pwd-inline-msg 提示块(校验/成功/失败均在弹窗内显示,不遮挡操作)
- 保存资料区增加 #settings-inline-msg 提示块(紧贴保存按钮上方)
- 移除 chatDialog.alert() 弹窗交互,全部改为内联状态卡片
2026-03-04 14:35:18 +08:00
bcaaa527d4 修复:chatDialog.alert() 第三参数改为颜色值,修正标题栏和按钮背景色
之前误将第三个 color 参数传入 emoji(⚠️🔒 等),
导致 background 被设为无效值,标题栏变白色、文字和按钮不可见。

全部改为正确 HEX 颜色值:
- 提示/警告 → #d97706(琥珀橙)
- 成功      → #16a34a(绿色)
- 失败/错误 → #dc2626(红色)
- 网络错误  → #6b7280(灰色)
- 开发中    → #78716c(石灰灰)
2026-03-04 14:33:24 +08:00
2b990942c0 修复:设置弹窗遮挡全局 chatDialog 按钮的问题
overflow-y:auto 会在 CSS 中创建新的堆叠上下文(stacking context),
导致即使全局弹窗 z-index 更高,在视觉上依然被 overflow 容器裁切,
造成「确定」按钮被弹窗底部遮挡无法点击。

修复方案:
- 外层容器移除 overflow-y:auto,改为 display:flex + flex-direction:column
- 标题栏加 flex-shrink:0 固定高度不被压缩
- 内容区单独加 overflow-y:auto + flex:1 保留滚动能力
- 外层遮罩 z-index 从 9999 提升至 10000(仍低于全局弹窗的 999999)
2026-03-04 14:24:11 +08:00
f867e912e9 修复:设置弹窗所有提示改用全局 chatDialog,替换原生 alert()
- savePassword():修改密码成功/失败/校验提示全部改为 window.chatDialog.alert()
- saveSettings():保存资料成功/失败提示改为 window.chatDialog.alert()
- sendEmailCode():发送验证码相关提示改为 window.chatDialog.alert()
- 工具栏「银行」按钮的 alert 也一并改为 chatDialog
2026-03-04 14:19:14 +08:00
f45483bcba 功能更新与UI优化:游戏图标移除、用户名片修复、婚礼红包界面重设计
- 移除聊天室右下角浮动游戏图标(占卜、百家乐、赛马、老虎机)
- 用户名片按钮区:修复已婚/已好友时按钮换行问题,统一单行显示
- 婚礼红包弹窗:重设计为喜庆鲜红背景,领取按钮改为圆形米黄样式
- 新增婚礼红包恢复接口(/wedding/pending-envelopes),刷新后自动恢复领取按钮
- 修复 Alpine :style 字符串覆盖静态 style 导致圆形按钮失效的问题
- 撤职后用户等级改为根据经验值重新计算,不再无条件重置为1
- 管理员修改用户经验值后自动重算等级,有职务用户等级锁定
- 娱乐大厅钓鱼游戏按钮直接调用 startFishing() 简化操作流程
- 新增赛马、占卜、百家乐游戏及相关后端逻辑
2026-03-03 23:19:59 +08:00
602dcd7cf1 feat: 神秘箱子系统完整实现 + 婚姻状态弹窗 + 工具栏优化
## 新功能
- 神秘箱子系统(MysteryBox)完整实现:
  - 新增 MysteryBox / MysteryBoxClaim 模型及迁移文件
  - DropMysteryBoxJob / ExpireMysteryBoxJob 队列作业
  - MysteryBoxController(/mystery-box/status + /mystery-box/claim)
  - 支持三种类型:普通箱(500~2000金)/ 稀有箱(5000~20000金)/ 黑化箱(陷阱扣200~1000金)
  - 调度器自动投放 + 管理员手动投放
  - CurrencySource 新增 MYSTERY_BOX / MYSTERY_BOX_TRAP 枚举

- 婚姻状态弹窗(工具栏「婚姻」按钮):
  - 工具栏「呼叫」改为「婚姻」,点击打开婚姻状态弹窗
  - 动态渲染三种状态:单身 / 求婚中 / 已婚
  - 被求婚方可直接「答应 / 婉拒」;已婚可申请离婚(含二次确认)

## 优化修复
- frame.blade.php:Alpine.js CDN 补加 defer,修复所有组件初始化报错
- scripts.blade.php:神秘箱子暗号主动拦截(不依赖轮询),领取成功后弹 chatDialog 展示结果,更新金币余额
- MysteryBoxController:claim() 时 change() 补传 room_id 记录来源房间
- 后台游戏管理页(game-configs):投放箱子按钮颜色修复;弹窗替换为 window.adminDialog
- admin/layouts:新增全局 adminDialog 弹窗组件(替代原生 alert/confirm)
- baccarat-panel:FAB 拖动重构为 Alpine.js baccaratFab() 组件,与 slotFab 一致
- GAMES_TODO.md:神秘箱子移入已完成区,补全修复记录
2026-03-03 19:29:43 +08:00
ad91c4420a 修复:工具栏「反馈」按钮路由名错误(feedback → feedback.index) 2026-03-03 14:41:33 +08:00
fdb500c3dd 优化:自动钓鱼卡标签改为柔和灰紫色;工具栏「提议」按钮改为「反馈」
- FishingController: 钓鱼播报内「自动钓鱼卡」标签从高饱和紫色渐变改为低调灰紫底色+深紫字,减少视觉刺激
- toolbar.blade.php: 「提议(待开发)」→「反馈」,链接至 feedback 路由(新标签页打开)
2026-03-03 14:30:09 +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
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
5cf87391b6 优化:商店分组排序调整,改名卡(道具)移至戒指后面 2026-03-01 15:52:26 +08:00
f9312475d0 优化:商店浮窗宽度 520→800px,网格 2列→4列 2026-03-01 15:49:38 +08:00
4a9730c38d 功能:浮窗商店同步加「💍 求婚戒指」分组
toolbar.blade.php renderShop 补充:
- ring 类型分组(存入背包,求婚时消耗)
- 图标持有数量红色徽章
- 卡片下方亲密度/魅力加成标注
- 购买按钮走现有 buyItem 流程(后端 buyRing 处理)
2026-03-01 15:45:13 +08:00
312b92a81d 文档/调整:好友面板完成,更新 DEVELOPMENT.md
- DEVELOPMENT.md:好友系统 [ ] → [x],补充功能细节
- toolbar.blade.php:好友按钮移至「呼叫」后(用户调整位置)
2026-03-01 13:51:27 +08:00
8120058948 重构:好友面板独立为 friend-panel.blade.php
- 新建 resources/views/chat/partials/friend-panel.blade.php
  包含完整的 style / HTML / JS
  结构完全干净,无嵌套错误
- toolbar.blade.php:
  恢复至干净基础版本(回滚损坏内容)
  添加「好友」按钮(openFriendPanel)
  通过 @include('chat.partials.friend-panel') 引入面板
- FriendController::index() 返回 sub_time 和 pending 列表
2026-03-01 13:47:51 +08:00
4ced484419 功能:好友列表面板
后端(FriendController::index):
- 返回 sub_time 添加时间
- 新增 pending 列表(对方加了我但我未回加)
  包含用户信息 + added_at(对方添加我的时间)

前端(toolbar.blade.php):
- 工具栏顶部加「好友」按钮(openFriendPanel)
- 好友弹窗面板(#friend-panel):
  ① 搜索栏:输入用户名 Enter/按钮添加好友
  ② 「我关注的好友」列表:头像/用户名/互相徽章/
     添加时间/删除按钮
  ③ 「对方已加我,待我回加」列表:头像/用户名/
     对方添加时间/回加按钮
  ④ 面板顶部提示区(成功/失败消息)
- 所有添加/删除调用与双击用户卡片完全相同的接口
  (/friend/{username}/add、/friend/{username}/remove)
2026-03-01 13:38:30 +08:00
7ec0904c5c 重构:全局自定义弹窗系统 window.chatDialog
- 新增 chat/partials/global-dialog.blade.php(全局弹窗 HTML + JS)
- 提供 chatDialog.alert() 和 chatDialog.confirm() 两个异步 API
- Alpine.js userCardComponent 的 $alert/$confirm 代理到全局 API
- toolbar 离开按钮统一改用 chatDialog.confirm(),移除独立 leave-confirm-modal
- 支持动态标题颜色、淡入动画,兼容 Chrome/Edge/Firefox
2026-03-01 00:34:11 +08:00
e2ae4b34b3 修复:Chrome 离开按钮 confirm 弹窗闪烁 → 自定义 HTML 弹窗
- 移除原生 confirm(),改为自定义 #leave-confirm-modal 弹窗
- 红色渐变标题栏,取消/确定离开两个按钮
- 点击遮罩可关闭,不触发任何浏览器原生对话框机制
2026-03-01 00:29:00 +08:00
5f30220609 feat: 任命/撤销通知系统 + 用户名片UI优化
- 任命/撤销事件增加 type 字段区分类型
- 任命:全屏礼花 + 紫色弹窗 + 紫色系统消息
- 撤销:灰色弹窗 + 灰色系统消息,无礼花
- 消息分发:操作者/被操作者显示在私聊面板,其他人显示在公屏
- 系统消息加随机鼓励语(各5条轮换)
- ChatStateService 修复 Redis key 前缀扫描问题(getAllActiveRoomIds)
- 用户名片折叠优化:管理员视野、职务履历均可折叠
- 管理操作 + 职务操作合并为「🔧 管理操作」折叠区
- 悄悄话改为「🎁 送礼物」按钮,礼物面板内联展开
2026-02-28 23:44:38 +08:00
4fe3c1eed9 修复:商店购买单次特效卡并指定给别人时,购买者自己也必须能看到特效播放 2026-02-27 16:56:57 +08:00
157aee3812 修复:confirmGift null错误(先保存item再关弹框);MessageSent改为ShouldBroadcastNow立即广播;修复route()引号冲突 2026-02-27 16:26:16 +08:00
6a8ba4fbc8 功能:单次特效卡支持赠送——送礼弹框、广播给指定用户/全员、公屏系统消息、购买后关闭商店展示特效 2026-02-27 16:19:21 +08:00
1e2c304754 UI: 商店弹窗改为蓝白风格,与现有设置弹窗保持一致 2026-02-27 16:09:10 +08:00
8ac540c65b 重构:商店从右侧 Tab 移至工具栏按钮弹窗,新增 2 列网格卡片布局 2026-02-27 16:06:15 +08:00
cef162738a UI: 此前遗漏提交,在左侧工具栏加入聊天室规则与帮助页面的直达按钮 2026-02-27 11:24:18 +08:00
ea7331dd98 增强:聊天室内修改绑定邮箱时强制要求邮件验证码校验,并增加 60 秒发送频率限制防滥发机制 2026-02-27 10:02:33 +08:00
2f4f8fac8c 优化:工具条按钮状态调整
- 商店、娱乐、银行、呼叫、提议改为待开发提示
- 管理员显示'管理'按钮(跳转后台)
- 普通用户显示'排行'按钮(跳转排行榜)
- 移除重复的管理员名单按钮
2026-02-27 00:28:06 +08:00
74c4a6f11c 重构:将头像弹窗和设置弹窗迁移到 toolbar.blade.php
- 头像选择弹窗、个人设置弹窗、savePassword/saveSettings JS 移入 toolbar
- frame.blade.php 从 298 行减至约 100 行,只保留框架结构
- 按钮和弹窗集中在同一文件,职责清晰
2026-02-27 00:24:21 +08:00
c38a53fa74 功能:注册保存性别 + 聊天室个人设置弹窗
- 登录表单的性别选择(bSex)在注册时保存到数据库(男/女/保密)
- 新增 question/answer 密保字段迁移(hasColumn 安全检查)
- User 模型 fillable 增加 sign/question/answer
- UpdateProfileRequest 增加 email/question/answer 验证
- 聊天室工具栏新增设置按钮
- 设置弹窗包含:修改密码、性别、邮箱、密保问题
2026-02-26 22:50:35 +08:00
ea06328885 功能:字体颜色持久化、等级体系升级至99级、钓鱼小游戏、补充系统参数
- 字体颜色:s_color 改为 varchar,发消息时保存颜色,进入聊天室自动恢复
- 等级体系:maxlevel 15→99,superlevel 16→100,99级经验阶梯(幂次曲线)
- 管理权限等级按比例调整:禁言50、踢人60、设公告60、封号80、封IP90
- 钓鱼小游戏:FishingController(抛竿扣金币+收竿随机结果+广播)
- 补充6个缺失的 sysparam 参数 + 4个钓鱼参数
- 用户列表点击用户名后自动聚焦输入框
- Pint 格式化
2026-02-26 21:10:34 +08:00