Commit Graph

485 Commits

Author SHA1 Message Date
dde080f69b feat: 移动端折叠导航栏优化 2026-03-12 09:41:17 +08:00
0ab0483603 feat: 完成独立的邀请与达人榜系统架构 2026-03-12 09:33:38 +08:00
af1d1c5ace fix(chat): 修正双色球统计开奖期数及奖池时使用了错误的 status 条件 2026-03-12 09:06:24 +08:00
4606888b0c fix(chat): 修正双色球明细花费显示为 0 的问题 2026-03-12 09:00:48 +08:00
a14761c498 fix(chat): 修正彩票视图中显示期号与号码球的对应字段名 2026-03-12 08:58:42 +08:00
f614e07b8f fix(chat): 修正五子棋查询状态字段为 mode 2026-03-12 08:53:23 +08:00
289b79affe feat(chat): 增加五子棋的后台历史记录查阅面板与统计展示 2026-03-12 08:52:33 +08:00
a6b0c24b66 fix(chat): 修正彩票历史记录及明细页中 prize_pool / tickets_count 引用的字段名错误 2026-03-12 08:50:23 +08:00
9e1e5fb7db feat(chat): 完善后台彩票游戏的历史总览、期号列表及单期购买明细页面 2026-03-12 08:48:30 +08:00
246d89fef6 fix(chat): 修复五子棋配置 Seeder 的字段报错,撤销错误的表结构修改 2026-03-12 08:39:02 +08:00
b7f2dae847 fix(chat): 添加 game_configs 表缺失的 type 字段的迁移文件 2026-03-12 08:36:55 +08:00
1c42f05e20 feat(chat): 完善五子棋功能,包含AI对战、PvP邀请、断线重连及界面美化 2026-03-12 08:35:21 +08:00
b9c703b755 重构:将聊天室所有原生弹窗替换为全局弹窗,公告增加发送者与时间
- 将设公告、公屏讲话、全员清屏按钮弹窗改为使用 window.chatDialog 全局弹窗
- 所有弹窗改用 .then() 回调注册事件,避免 async/await 行为不一致问题
- 公告内容末尾追加「——发送者 MM-dd HH:mm」,无需新增数据库字段
- 前端编辑公告时自动剥离末尾元信息,用户仅编辑纯内容
- 修复 red-packet-panel.blade.php 中 3 处原生 alert() 残留
- 修复 shop-panel.blade.php 中购买确认 confirm() 原生弹窗残留
2026-03-12 07:33:32 +08:00
f1062b34d2 修复:支持腾讯云 EdgeOne EO-Client-IP 头部,重构中间件真实IP获取优先级 2026-03-12 07:16:32 +08:00
174ee8241d 重构:提取 calculateNewLevel() 私有方法,增加在职职务等级保护逻辑 2026-03-12 06:52:40 +08:00
529a59551c 修复(chat): 新增真实 IP 获取中间件及重构用户 IP 轨迹追踪逻辑
- 新增 CloudflareProxies 前置中间件,强制解析 CDN 透传的 CF-Connecting-IP 与 X-Real-IP 并在底层接管,修复 Nginx 代理造成的全局 IP 同化 (127.0.0.1) 问题
- 修改 User 模型,新增 migration 以补全真正的 previous_ip 储存通道
- 修改 AuthController 登录逻辑,在覆写 last_ip 前实现向 previous_ip 的自动历史快照备份
- 修改 UserController API 返回逻辑,实现 first_ip、last_ip(上次)以及 login_ip(本次)的三轨分离
- 更新 user-actions.blade.php 管理员视野面板,同步增加并校验“首次IP”、“上次IP”、“本次IP”三级字段映射的准确性
2026-03-09 11:53:58 +08:00
89122773af 部署(chat): 更新 deploy_update.sh 目录权限设置 2026-03-09 11:31:45 +08:00
bfb1a3bca4 重构(chat): 聊天室 Partials 第二阶段分类拆分及修复红包弹窗隐藏 Bug
- 完成对 scripts.blade.php 中非核心业务逻辑(钓鱼游戏、AI机器人、系统全局公告)的深度抽象隔离
- 修复抢红包逻辑中 setInterval 缺失时间参数(1000)引发浏览器前端主线程挂起的重度阻塞问题
- 修复 lottery-panel 组件结尾漏写 </div> 导致的连锁级渲染树崩溃(该崩溃导致红包节点被意外当作隐藏后代节点渲染,造成彻底不可见)
- 对相关模板规范代码结构,执行 Laravel Pint 格式化并提交
2026-03-09 11:30:11 +08:00
28d9f9ee96 修复:将 position_authority_logs.user_position_id 改为可空,修复超管发放奖励时报约束违反错误 2026-03-06 16:49:02 +08:00
a562564e88 优化:AI 对话上下文轮数从 10 降至 4,减少 token 输入量 2026-03-06 03:40:26 +08:00
ca639ddd37 修复:AI 接口测试改用 GET /v1/models,毫秒级响应,避免 Cloudflare 524 超时
原方案发起真实推理请求(需 16~20s),经 Cloudflare 代理时触发超时。
改为查询模型列表端点(毫秒级),同时验证连通性和 API Key 有效性,
并显示该厂商的可用模型列表(兼容 Ollama / OpenAI 格式)。
2026-03-06 03:35:11 +08:00
318eb6f234 新增:AI 接口连通性测试功能;修复:Ollama 超时问题
- 后台 AI 厂商列表新增「 测试」按钮,实时验证接口连通性
- 显示响应耗时(含冷启动)和模型返回内容
- AiChatService 请求超时从 30s 调整为 120s(兼容 Ollama 本地冷启动)
- 测试接口超时设为 60s
2026-03-06 03:29:13 +08:00
6c9db806ae 同步:更新 composer.lock 至 Composer 2.9.5 格式(对齐服务器版本) 2026-03-05 11:52:21 +08:00
148c91a61c 修复:部署脚本拉取前自动重置 lock 文件,防止服务器环境差异造成合并冲突 2026-03-05 11:49:45 +08:00
5864478ae0 更新:部署脚本新增前端构建步骤 npm run build(步骤3/7) 2026-03-05 11:48:07 +08:00
202b55a489 新增:生产环境一键部署更新脚本 deploy_update.sh
包含以下步骤:
  1. git pull 拉取最新代码
  2. composer install 安装依赖(失败则中止)
  3. 清理配置/缓存/视图缓存
  4. 数据库迁移 (--force)
  5. 生产环境配置/路由/视图缓存优化
  6. 修复 storage 和 bootstrap/cache 权限
2026-03-05 11:35:50 +08:00
67bea9375f 配置:.gitignore 新增排除 public/.user.ini 2026-03-05 11:23:15 +08:00
f80b83aee8 修复:移除 x-collapse 指令(未加载插件导致 Alpine.js 崩溃) 2026-03-04 15:55:41 +08:00
500b7c718e 优化:彩票面板按钮样式升级(对齐百家乐风格)
- 机选/清除/加入 三按钮:border-radius:10px,更大内边距,hover 效果
- 加入购物车按钮:选号完成时金色渐变 + shadow,未选满时灰化禁用
- 确认购买按钮:border-radius:12px,红色渐变,shadow 层次感,购买中灰化
- 底部操作栏按钮:圆角胶囊(border-radius:20px),机选金色渐变 + hover 上移动效
2026-03-04 15:54:43 +08:00
79672a38ec 修复:双色球面板显示位置(左上角 → 屏幕居中)
将 x-show 与 display:flex 拆分到两层 div,
与 baccarat-panel 结构保持一致:
  外层 div: x-data / x-show / x-cloak
  次层 div: position:fixed + display:flex 居中(含 Alpine transition)
  内层 div: 面板卡片内容(width:480px)

原写法 x-show 会将 display:flex 覆盖为 display:block,导致 flex 居中失效
2026-03-04 15:50:58 +08:00
b13861c869 新增:双色球彩票后台管理(阶段三)
🎛️ 后台游戏配置页
  - lottery 参数标签完整配置(14个参数分组展示)
    开奖时间/购票限制/奖池分配/固定小奖/超级期
  - 双色球专属手动操作区(仿神秘箱子风格)
     当前期次状态展示(实时加载)
     手动开新期(含确认弹窗)
     强制立即开奖(含二次确认防误触)

🔌 后台接口
  - POST /admin/lottery/open-issue  手动开期
  - POST /admin/lottery/force-draw  强制开奖
  - GameConfigController 新增两个 JsonResponse 方法

📋 全局开关
  - 与所有现有游戏一致,后台 toggle 即时生效(60s缓存刷新)
  - 默认关闭,管理员开启后调度器自动接管
2026-03-04 15:47:09 +08:00
4114571040 新增:双色球彩票前台 UI(阶段二)
🎟️ lottery-panel.blade.php 彩票面板
  - 红球 1~12(12宫格选3)/ 蓝球 1~6(骰子点数选1)
  - 购物车机制:可加入多注后一次性购买
  - 机选按钮(单注/3注)
  - 本期我的购票记录展示(含中奖标记)
  - 最近8期历史开奖号码表格
  - 规则折叠说明(奖级表格)
  - 停售/已开奖状态自动切换
  - 内联购票结果提示(3秒自动消失)

🎮 游戏大厅集成
  - game-hall 注入 lottery 开关状态
  - GAME_HALL_GAMES 追加双色球卡片(动态展示奖池/倒计时/超级期徽章)
  - frame.blade.php 引入 lottery-panel

🗺️ 路由 /games/enabled 已含 lottery 键
2026-03-04 15:41:57 +08:00
a788a0022a 清理:删除错误路径生成的多余 LotteryService 文件 2026-03-04 15:38:11 +08:00
27371fe321 新增:双色球彩票系统后端基础(阶段一)
📦 数据库
  - lottery_issues(期次表)
  - lottery_tickets(购票记录表)
  - lottery_pool_logs(奖池流水表,透明展示)

🔩 核心组件
  - LotteryIssue / LotteryTicket / LotteryPoolLog 完整 Model
  - LotteryService:购票/机选/开奖/奖池派发/滚存/超级期预热/公屏广播
  - LotteryController:current/buy/quickPick/history/my 五个接口
  - DrawLotteryJob(每日定时开奖)/ OpenLotteryIssueJob(初始化首期)

💰 货币日志
  - CurrencySource 新增 LOTTERY_BUY / LOTTERY_WIN
  - 所有金币变动均通过 UserCurrencyService::change() 记录流水

🗓️ 调度器
  - 每分钟检查停售/开奖时机
  - 每日 18:00 超级期预热广播

🔧 配置
  - GameConfigSeeder 追加 lottery 默认配置(默认关闭)
  - /games/enabled 接口追加 lottery 开关状态
  - 新增 /lottery/* 路由组(auth 保护)
2026-03-04 15:38:02 +08:00
b30be5c053 修复:赛马开局延迟 30 秒,避免与百家乐同时广播公屏
两个游戏都由每分钟调度器触发,条件同时满足时会在同一秒发公屏,
互相干扰且用户体验混乱。

解决方案:OpenHorseRaceJob::dispatch()->delay(30s)
- 百家乐:整分钟触发(:00)
- 赛马:整分钟 +30 秒触发(:30)
两个游戏公屏广播自然错开半分钟
2026-03-04 15:06:06 +08:00
040dbdef3c 优化:全站金币图标由 🪙(银灰色)统一替换为 💰(金黄色)
🪙 在多数平台/字体上渲染为银灰色,与「金币」语义不符;
💰 各平台均渲染为金黄色,更直观传达金币概念。

涉及文件(43处):
- app/Jobs:百家乐、赛马结算广播
- app/Http/Controllers:管理员命令、红包、老虎机、神秘箱子
- app/Listeners
- resources/views:聊天室各游戏面板、商店、toolbar、后台页面等
2026-03-04 15:00:02 +08:00
349eb5a338 优化:百家乐开局公告新增赔率说明
- 动态读取 big_rate / triple_rate / kill_points 配置
- 公告格式变更为:
  「…赔率:🔵大/🟡小 1:1 · 💥豹子 1:24(☠️ 3或18点庄家收割)」
2026-03-04 14:51:01 +08:00
1c53acbd1b 优化:百家乐结算公告新增各用户输赢明细
- 结算时同步收集 winners(中奖用户+金额)和 losers(未中用户-金额)
- 公屏广播消息末尾附加:
  🏆 中奖:甲+2,000、乙+1,000 🪙
  😔 未中:丙-500、丁-1,000
- 单方向最多显示 10 人,防止消息过长
- 顺手修正豹子结果文本中 dice1 重复的 bug(dice2、dice3 显示错误)
2026-03-04 14:41:07 +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
b62a9f6240 功能:后台游戏历史记录查询中心 + 游戏管理页实时统计
- 新增 GameHistoryController,提供各游戏历史记录查询接口
  - 百家乐:局次列表 + 单局下注明细(含结果分布统计)
  - 老虎机:转动记录含图案分布,支持结果类型/玩家名筛选
  - 赛马:场次列表 + 单场下注明细(含马匹信息展示)
  - 神秘箱子:投放/领取历史,支持箱子类型/领取状态筛选
  - 神秘占卜:签文等级分布统计 + 历史记录,支持等级/玩家名筛选
- 新增 /admin/game-history/ 路由组(stats + 各游戏历史 + 单局详情共9条路由)
- 游戏管理页(/admin/game-configs)优化:
  - 每个游戏卡片新增「📋 历史记录」直达按钮
  - 新增「📊 加载实时统计」按钮,AJAX 异步拉取并展示各游戏汇总卡片
- 更新 GAMES_TODO.md,标记通用待办已完成
2026-03-03 23:40:31 +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
40fcce2db3 功能:好友面板昵称后显示在线离线状态
后端:
- ChatStateService 新增 getAllOnlineUsernames(),跨房间聚合在线用户名
- FriendController::index() 为每位好友/待回加用户附加 is_online 字段
- 在线好友自动排在列表前面

前端:
- 昵称后显示 🟢 在线 /  离线 徽标
- .fp-status-online 绿底绿字,.fp-status-offline 灰底灰字
2026-03-03 17:42:47 +08:00
36fbc9982c 修复:Alpine.js 改为同步加载,修复 Windows 用户双击名字时 Alpine is not defined 报错
- 移除 defer 属性,确保 Alpine 在 DOM 可交互前完成初始化
- 版本号从模糊 @3.x.x 锁定为 @3.14.8,避免 CDN 解析歧义
2026-03-03 17:17:47 +08:00
8b5fbd7e91 清理:迁移文件移除钓鱼 sysparam 参数(已迁移至 game_configs) 2026-03-03 17:09:55 +08:00
0fd4f51b5e 优化:百家乐骰子悬浮按钮支持拖拽移动,位置记忆 localStorage 2026-03-03 17:00:19 +08:00
9f5d213d99 优化:自动钓鱼停止按钮改为可拖拽悬浮,位置持久化到 localStorage 2026-03-03 16:56:10 +08:00