|
|
6fa42b90d5
|
功能:站长礼包系统(金币/经验双类型)+ 后台用户编辑权限收紧(仅 id=1 超管)
新增功能:
- 礼包系统:superlevel 站长可发 888 数量 10 份礼包,支持金币/经验双类型
- 发包前三按钮选择(金币礼包 / 经验礼包 / 取消),使用 chatBanner 弹窗
- 聊天室系统公告含「立即抢包」按钮,金币红色/经验紫色配色区分
- WebSocket 实时推送红包弹窗卡片至所有在线用户
- Redis LPOP 原子分发 + 数据库 unique 约束防重领,并发安全
- 弹窗打开自动拉取服务端最新状态(剩余数量/已领/过期实时刷新)
- 新增 GET /red-packet/{id}/status 状态查询接口
- 新增 CurrencySource::RED_PACKET_RECV / RED_PACKET_RECV_EXP 枚举
安全加固:
- 后台用户编辑/强杀按钮仅 id=1 超管可见(前端隐藏 + 后端 403 双重拦截)
|
2026-03-01 22:20:54 +08:00 |
|
|
|
ed195bb5f4
|
新增 GAMES_TODO.md:记录游戏开发进度(百家乐/老虎机已完成,神秘箱子/赛马/占卜待开发)
|
2026-03-01 21:15:17 +08:00 |
|
|
|
148947781a
|
老虎机三项修复:①来源label已有枚举(刷新即显中文) ②普通中奖/诅咒向本人发私聊通知+三7全服广播 ③FAB按钮支持拖动+位置localStorage持久化
|
2026-03-01 21:10:41 +08:00 |
|
|
|
9359184e38
|
新增老虎机游戏:①slot_machine_logs表+模型(8种权重图案/判奖) ②SlotMachineController(扣费/随机/赔付/诅咒/三7全服广播) ③前台面板(三列滚轮动画/逐列停止/赔率说明/历史记录) ④CurrencySource三个枚举
|
2026-03-01 21:00:21 +08:00 |
|
|
|
dfa7278184
|
修复星海小博士随机事件金币/经验不记日志:改走UserCurrencyService.change(),新增CurrencySource::AUTO_EVENT枚举
|
2026-03-01 20:54:15 +08:00 |
|
|
|
955aec6b73
|
百家乐结算UI大改:①骰子改数字方块(跨平台兼容,白底深字带弹出动画) ②未中奖卡片:😔+红渐变+显示你押了X开了X+损失金额 ③中奖卡片:🎉+绿渐变+金币数字大字 ④结果标签按大小豹子庄家变色
|
2026-03-01 20:48:38 +08:00 |
|
|
|
04ab62c988
|
修复百家乐下注余额检查:gold→jjb,与UserCurrencyService字段映射一致
|
2026-03-01 20:44:26 +08:00 |
|
|
|
39d36578fd
|
百家乐押注按钮改为对象式:style绑定,参照求婚弹窗风格:未选择时灰色+不可点击,正常时紫色渐变+阴影
|
2026-03-01 20:43:02 +08:00 |
|
|
|
4ffc4abff4
|
修复百家乐/节日福利广播频道错误:Channel→PresenceChannel,与前端Echo.join()订阅的presence-room.1频道一致
|
2026-03-01 20:40:34 +08:00 |
|
|
|
37b1595709
|
百家乐修复:①页面加载时检查进行中的局并显示FAB ②FAB点击同时恢复倒计时 ③解决刷新页面/错过WebSocket而看不到下注入口的问题
|
2026-03-01 20:31:45 +08:00 |
|
|
|
ff28775635
|
新增百家乐游戏:①数据库表+模型 ②OpenBaccaratRoundJob开局(广播+公屏) ③CloseBaccaratRoundJob结算(摇骰+赔付+CAS防并发) ④BaccaratController下注接口 ⑤前端弹窗(倒计时/骰子动画/历史趋势) ⑥调度器每分钟检查开局 ⑦GameConfig管控开关
|
2026-03-01 20:25:09 +08:00 |
|
|
|
8a74bfd639
|
新增游戏管理系统:①game_configs表+模型(forGame/isEnabled/param静态方法) ②GameConfigSeeder初始化5款游戏参数 ③后台卡片式管理页(开关+参数表单) ④侧边栏菜单「游戏管理」
|
2026-03-01 20:17:18 +08:00 |
|
|
|
8c99e1fad7
|
后台侧边栏菜单新增「节日福利」入口(婚姻管理之后)
|
2026-03-01 20:08:46 +08:00 |
|
|
|
c5fe9faf94
|
新增节日福利系统:①数据库表+模型 ②TriggerHolidayEventJob队列任务(在线用户筛选/金额分配/WebSocket广播) ③后台管理页面(列表/创建/手动触发) ④前台领取弹窗+WebSocket监听 ⑤定时调度每分钟扫描 ⑥CurrencySource补充HOLIDAY_BONUS
|
2026-03-01 20:06:53 +08:00 |
|
|
|
a37b04aca0
|
修复红包领取三重问题:①getOnlineUserIds 兼容旧版用户(fallback数据库查询) ②聊天领取按钮用全局Map替代内嵌JSON避免HTML属性破坏 ③doClaim改判 data.ok 而非不存在的 data.status
|
2026-03-01 19:36:44 +08:00 |
|
|
|
23fca927d5
|
升级红包领取按钮:深色外框+内部金色实心按钮,仿同意离婚按钮质感
|
2026-03-01 19:31:52 +08:00 |
|
|
|
392b1b06bb
|
修复婚礼红包领取:①ChatController userJoin 写入 user_id ②WeddingService 从 room:1:users Hash 读在线用户 ③新郎新娘也可领红包 ④删除结婚弹窗冗余的'举办婚礼'按钮 ⑤升级红包领取按钮为橙色渐变样式
|
2026-03-01 19:27:28 +08:00 |
|
|
|
0990a13c2e
|
修复弹窗闪烁:添加 [x-cloak] CSS 规则 + 删除重复的 chat:marriage-accepted 监听器
|
2026-03-01 19:22:40 +08:00 |
|
|
|
68c4ca7a96
|
结婚/婚礼/离婚通知持久化:新增事件监听器自动写入聊天消息数据库,用户重新登录后可在历史记录中看到通知
|
2026-03-01 19:16:27 +08:00 |
|
|
|
eefdae93fe
|
简化婚礼流程:去掉立即/定时选择,同意结婚后直接立即举办婚礼
|
2026-03-01 19:11:29 +08:00 |
|
|
|
e9a41995be
|
修复婚礼红包弹窗:①名字字段兼容 user.username/groom_name 双格式 ②领取路由修正为 /wedding/ceremony/{id}/claim
|
2026-03-01 19:08:59 +08:00 |
|
|
|
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 |
|