|
|
c4edda8b4e
|
特性:优化注册与改名卡逻辑,在触发敏感词或拦截重名时明确提示具体是触发了哪个词汇
|
2026-04-02 16:38:17 +08:00 |
|
|
|
63292ab810
|
优化:注册与登录拦截处支持针对后台管理的永久禁用黑名单词汇采用“模糊匹配”(只要包含该词汇即拦截)
|
2026-04-02 16:35:58 +08:00 |
|
|
|
c9a569fc42
|
feat(百家乐AI预测): 指定使用 glm-5.1-free 模型,回退默认
- BaccaratPredictionService 新增 PREFERRED_MODEL 常量(glm-5.1-free)
- predict() 优先通过 findByModel() 找到指定模型,找不到再用 getDefault()
- AiProviderConfig 新增 findByModel() 静态方法(按模型名称查找已启用配置)
- 经实测:dmxapi/glm-5.1-free 返回正常,耗时约 1.6~7s,格式完全正确
|
2026-03-28 20:59:50 +08:00 |
|
|
|
8fcccf72a5
|
feat(baccarat): 实现百家乐实时下注人数统计功能
- 新增 BaccaratPoolUpdated 事件,用于通过 WebSocket 广播实时下注数据更新
- 增加数据库迁移以在 baccarat_rounds 表中添加对应的下注人数统计字段
- 更新 BaccaratRound 模型以及 BaccaratController,支持实时下注统计更新与 WebSocket 事件分发
- 更新前端 chat.js 以及 baccarat-panel.blade.php,利用 Alpine.js 和 Echo 接收事件并动态渲染 "大"、"小"、"豹子" 的实时下注计数
|
2026-03-28 17:02:10 +08:00 |
|
|
|
d7a575d8c8
|
新增银行功能:存取金币、流水记录、PC/手机端双入口;迁移 bank_jjb 字段和 bank_logs 表
|
2026-03-18 20:31:19 +08:00 |
|
|
|
78564e2a1d
|
feat: 增加自定义头像上传、自动压缩与自动清理功能,统一全站头像路径读取逻辑
|
2026-03-12 15:26:54 +08:00 |
|
|
|
0ab0483603
|
feat: 完成独立的邀请与达人榜系统架构
|
2026-03-12 09:33:38 +08:00 |
|
|
|
1c42f05e20
|
feat(chat): 完善五子棋功能,包含AI对战、PvP邀请、断线重连及界面美化
|
2026-03-12 08:35:21 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
03ec3a9fbb
|
功能:钓鱼游戏后台管理系统
一、钓鱼全局开关
- 钓鱼纳入 GameConfig(game_key=fishing),游戏管理页可一键开关
- cast() 接口加开关校验,关闭时返回 403 友好提示
- GameConfigSeeder 新增 fishing 配置(含4个参数)
二、钓鱼事件数据库化
- 新建 fishing_events 表(emoji/name/message/exp/jjb/weight/is_active/sort)
- FishingEvent 模型含 rollOne() 加权随机方法
- FishingEventSeeder 填充7条初始事件(经验降低、金币提升)
- FishingController::randomFishResult() 改为读数据库事件
三、钓鱼参数迁移至 GameConfig
- fishing_cost/wait_min/wait_max/cooldown 改为 GameConfig::param() 读取
- 保留 Sysparam fallback 兼容旧数据
四、后台管理页面
- 新建 FishingEventController(CRUD + AJAX toggle)
- 新建 admin/fishing/index.blade.php(事件列表+概率显示+编辑弹窗)
- 侧边栏「游戏管理」下方新增「🎣 钓鱼事件」入口
- 游戏管理视图 gameParamLabels 新增钓鱼参数标签
|
2026-03-03 16:46:36 +08:00 |
|
|
|
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 |
|
|
|
9359184e38
|
新增老虎机游戏:①slot_machine_logs表+模型(8种权重图案/判奖) ②SlotMachineController(扣费/随机/赔付/诅咒/三7全服广播) ③前台面板(三列滚轮动画/逐列停止/赔率说明/历史记录) ④CurrencySource三个枚举
|
2026-03-01 21:00:21 +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 |
|
|
|
c5fe9faf94
|
新增节日福利系统:①数据库表+模型 ②TriggerHolidayEventJob队列任务(在线用户筛选/金额分配/WebSocket广播) ③后台管理页面(列表/创建/手动触发) ④前台领取弹窗+WebSocket监听 ⑤定时调度每分钟扫描 ⑥CurrencySource补充HOLIDAY_BONUS
|
2026-03-01 20:06:53 +08:00 |
|
|
|
e81887034c
|
修复 WeddingCeremony 模型:补全 fillable/casts 及关联关系,解决批量赋值报错
|
2026-03-01 19:05:52 +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 |
|
|
|
e5a35779f8
|
修复:UserPurchase 模型补充 item() 关联别名
婚姻系统 whereHas('item') / with('item') 需要此方法,
原模型只有 shopItem(),现在加 item() 作为别名指向同一外键。
|
2026-03-01 15:36:22 +08:00 |
|
|
|
2d07b032d9
|
功能:婚姻系统第4-6步(Services + Models)
Step 4 - MarriageConfigService:
- 带60min Cache 的配置读取/写入
- 支持单项/分组/全量读取,管理员保存后自动清缓存
Step 5 - MarriageIntimacyService:
- 亲密度增加 + 日志写入 + 等级自动更新
- Redis 每日上限计数器(各来源独立控制)
- onFlowerSent/onPrivateChat/onlineTick 接入点方法
- dailyBatch 批量处理(Horizon Job 用)
Step 6 - MarriageService(核心业务):
- propose/accept/reject/divorce/confirmDivorce/forceDissolve
- 所有金币魅力通过 UserCurrencyService 统一记账
- 冷静期检查/超时处理/强制离婚金币全转对方
Models 改良(Marriage/MarriageConfig/MarriageIntimacyLog)
|
2026-03-01 15:03:34 +08:00 |
|
|
|
fc495ccceb
|
功能:禁用用户名管理(永久禁词列表)
数据库:
- 新增迁移 username_blacklist 表加 type/reason 列
type: temp(改名30天保留)| permanent(管理员永久禁用)
reason: 禁用原因备注(最长100字符)
核心逻辑:
- UsernameBlacklist::isBlocked() 同时拦截两种类型
也包含 isReserved() 兼容旧调用
增加 scopePermanent()/scopeTemp() 查询作用域
- AuthController 注册时加 isBlocked() 拦截
禁词/保留期内均不可注册
- ShopService::useRenameCard() 已有 isReserved() 调用
因已改用 isBlocked() 别名,无需修改
后台:
- ForbiddenUsernameController:index/store/update/destroy
- 路由:/admin/forbidden-usernames(chat.site_owner 中间件)
- 视图:admin/forbidden-usernames/index.blade.php
新增表单、关键词搜索、分页、行内编辑原因、删除
- 侧边栏加「🚫 禁用用户名」入口(仅站长可见)
|
2026-03-01 14:00:38 +08:00 |
|
|
|
ff57afe388
|
功能:职务奖励金币发放系统
数据库:
- positions 新增 daily_reward_limit(单日累计上限)
- positions 新增 recipient_daily_limit(同一接收者每日次数上限)
后端:
- CurrencySource::POSITION_REWARD 新枚举值
- AdminCommandController::reward() 三层限额校验
① 单次上限 ② 单日累计上限 ③ 同一接收者每日次数
写履职记录(PositionAuthorityLog)+ UserCurrencyService
聊天室悄悄话通知接收者
- POST /command/reward 路由注册
前端(user-actions.blade.php):
- 名片按钮行 2+1 布局(加好友/送礼物/送金币)
- 送金币仅在 myMaxReward>0 时显示(职务持有者)
- 内联奖励金币面板:金额输入 + 确认发放 + 说明文字
- sendReward() 前端校验 + API 调用 + chatDialog 反馈
后台(positions/index):
- 编辑表单新增两个奖励限额字段
- PositionController 验证规则同步更新
|
2026-03-01 11:09:29 +08:00 |
|
|
|
94414057e6
|
修复:User 模型 fillable 缺少 in_time/out_time,导致进房时间静默写入失败
|
2026-03-01 00:10:44 +08:00 |
|
|
|
5f30220609
|
feat: 任命/撤销通知系统 + 用户名片UI优化
- 任命/撤销事件增加 type 字段区分类型
- 任命:全屏礼花 + 紫色弹窗 + 紫色系统消息
- 撤销:灰色弹窗 + 灰色系统消息,无礼花
- 消息分发:操作者/被操作者显示在私聊面板,其他人显示在公屏
- 系统消息加随机鼓励语(各5条轮换)
- ChatStateService 修复 Redis key 前缀扫描问题(getAllActiveRoomIds)
- 用户名片折叠优化:管理员视野、职务履历均可折叠
- 管理操作 + 职务操作合并为「🔧 管理操作」折叠区
- 悄悄话改为「🎁 送礼物」按钮,礼物面板内联展开
|
2026-02-28 23:44:38 +08:00 |
|
|
|
0c5e218aa8
|
功能:新增用户积分流水系统
- 新建 user_currency_logs 流水表 (Migration)
- App\Enums\CurrencySource 来源枚举(可扩展)
- App\Models\UserCurrencyLog 流水模型
- App\Services\UserCurrencyService 统一积分变更服务
- FishingController:抛竿/收竿接入流水记录
- AutoSaveExp:自动存点接入流水记录
- Admin/UserManagerController:管理员调整接入流水记录
- LeaderboardController:新增今日三榜(经验/金币/魅力)+ 个人流水日志页
- Admin/CurrencyStatsController:后台活动统计页
- views:新增个人日志页、后台统计页;排行榜新增今日榜数据传递
- routes:新增个人日志路由 /my/currency-logs、后台路由 /admin/currency-stats
|
2026-02-28 12:49:26 +08:00 |
|
|
|
4ef95eaa27
|
新增:新人首次入住聊天室大礼包自动发放功能(6666金币 + 满场烟花 + 公屏欢迎)
|
2026-02-27 17:21:33 +08:00 |
|
|
|
7fb86bfe21
|
Feat: 商店功能完整实现(单次特效卡888/周卡8888/改名卡5000,含购买、周卡覆盖、改名黑名单)
|
2026-02-27 15:57:12 +08:00 |
|
|
|
c5cc55fc84
|
功能:送花/礼物系统完整开发
- 新增 Gift 模型和 gifts 数据表(7种默认花卉,各有图片/金币/魅力配置)
- 7张花卉图片生成并存放于 public/images/gifts/
- 名片弹窗新增送礼物 UI:图片选择列表、金币/魅力标注、数量选择
- sendFlower 控制器方法:按 gift_id 查找礼物、扣金币、加魅力、广播消息
- 聊天消息渲染支持显示礼物图片(含弹跳动画效果)
- 后台可在 gifts 表中管理花卉类型(名称、图标、图片、金币、魅力、排序、启禁用)
|
2026-02-27 01:01:56 +08:00 |
|
|
|
2735cbf1dd
|
修复:headface accessor 自动转小写后缀
- getter 使用 strtolower() 兼容数据库中存量的 .GIF 大写记录
- setter 也自动转小写,确保新数据统一
|
2026-02-26 23:30:41 +08:00 |
|
|
|
bfd90ca882
|
统一:所有图片后缀从 .GIF 改为 .gif
- headface 目录 371 个文件重命名为小写后缀
- 代码中所有 .GIF 引用改为 .gif(User.php/AuthController/channels.php/frame.blade/scripts.blade)
- 新增迁移:将 users 表 usersf 列中的 .GIF 批量替换为 .gif
- 解决 Linux 大小写敏感导致图片加载失败的问题
|
2026-02-26 23:27:35 +08:00 |
|
|
|
c38a53fa74
|
功能:注册保存性别 + 聊天室个人设置弹窗
- 登录表单的性别选择(bSex)在注册时保存到数据库(男/女/保密)
- 新增 question/answer 密保字段迁移(hasColumn 安全检查)
- User 模型 fillable 增加 sign/question/answer
- UpdateProfileRequest 增加 email/question/answer 验证
- 聊天室工具栏新增设置按钮
- 设置弹窗包含:修改密码、性别、邮箱、密保问题
|
2026-02-26 22:50:35 +08:00 |
|
|
|
2386948fde
|
修复:用户名单头像全显示默认的问题
- User::headface accessor 补充 setter,确保后台管理赋值时正确写入 usersf 字段
- changeAvatar() 修改头像后同步更新 Redis 在线用户列表
- ChatStateService 新增 getUserRooms() 方法,支持查找用户所在房间
|
2026-02-26 21:49:37 +08:00 |
|
|
|
fd3214eaff
|
功能:VIP 赞助会员系统
- 新建 vip_levels 表(名称、图标、颜色、经验/金币倍率、专属进入/离开模板)
- 默认4个等级种子:白银🥈(×1.5)、黄金🥇(×2.0)、钻石💎(×3.0)、至尊👑(×5.0)
- 后台 VIP 等级 CRUD 管理(新增/编辑/删除,配置模板和倍率)
- 后台用户编辑弹窗支持设置 VIP 等级和到期时间
- ChatController 心跳经验按 VIP 倍率加成
- FishingController 正向奖励按 VIP 倍率加成(负面惩罚不变)
- 在线名单显示 VIP 图标和管理员🛡️标识
- VIP 用户进入/离开使用专属颜色和标题
- 后台侧栏新增「👑 VIP 会员等级」入口
|
2026-02-26 21:30:07 +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 |
|
|
|
d884853968
|
修复:排行榜/留言板缺失布局、退出登录跳转、WebSocket 配置与部署文档
- 修复 LeaderboardController 查询不存在的 sign 字段导致 500 错误
- 修复 leaderboard/index 和 guestbook/index 引用不存在的 layouts.app 布局
- 将排行榜和留言板改为独立 HTML 页面结构(含 Tailwind CDN)
- 修复退出登录返回 JSON 而非重定向的问题,现在会正确跳转回登录页
- 将 REDIS_CLIENT 从 phpredis 改为 predis(兼容无扩展环境)
- 新增 RoomSeeder 自动创建默认公共大厅房间
- 新增 Nginx 生产环境配置示例(含 WebSocket 反向代理)
- 重写 README.md 为完整的中文部署指南
- 修复 rooms/index 和 chat/frame 中 Alpine.js 语法错误
- 将 chat.js 加入 Vite 构建配置
- 新增验证码配置文件
|
2026-02-26 14:57:24 +08:00 |
|
|
|
50fc804402
|
feat: 实现挂机修仙、排行榜、大厅重构与全站留言板系统
- (Phase 8) 后台各维度管理与配置
- (Phase 9) 全自动静默挂机修仙升级
- (Phase 9) 四大维度风云排行榜页面
- (Phase 10) 全站留言板与悄悄话私信功能
- 运行 Pint 代码格式化
|
2026-02-26 13:35:38 +08:00 |
|
|
|
7d6423902d
|
first commit
|
2026-02-26 12:02:00 +08:00 |
|