|
|
5c53b8cf2f
|
功能:window.chatBanner 全局大卡片公共组件
前端:
- window.chatBanner.show(options) 全局 API,完全自定义:
icon/title/name/body/sub/gradient/titleColor/autoClose/buttons
- window.chatBanner.close(id) 关闭指定 banner
- showFriendBanner / showAppointmentBanner 均改用 chatBanner 实现
- setupBannerNotification() 监听私有+房间频道的 BannerNotification 事件
后端:
- BannerNotification 事件(ShouldBroadcastNow),支持 user/room 双目标
- BannerBroadcastController(仅超级管理员路由,三层中间件保护)
- 内容字段 strip_tags 净化防 XSS,按钮 action 白名单校验
安全:
- window.chatBanner.show() 被人控制台调用只影响自己,无法推给他人
- HTTP 入口 POST /admin/banner/broadcast 仅超管可访问
|
2026-03-01 01:28:23 +08:00 |
|
|
|
d60a225368
|
修复:好友悄悄话链接 href 出现字面 \'#\' 导致404问题
PHP 双引号字符串里单引号不需要反斜杠转义,
\'#\' 会原样输出 \'#\' 而非 '#',导致 href 跳转到错误 URL。
改为直接写 '#' 即可。
|
2026-03-01 01:05:47 +08:00 |
|
|
|
212f7a0096
|
功能:好友悄悄话内嵌快捷操作链接
后端:
- notifyOnlineUser 生成带内联 <a> 标签的内容
- added 未互相 → 嵌入 '➕ 回加好友' 链接
- removed 互相 → 嵌入 '🗑️ 同步移除' 链接
- 链接调用全局 quickFriendAction(act, username, el)
前端:
- 新增 window.quickFriendAction() 全局函数
- 防重复点击(dataset.done 标记)
- 成功后更新链接文字 '✅ 已回加' / '✅ 已移除',不刷新页面
|
2026-03-01 01:03:10 +08:00 |
|
|
|
cc16f89bbe
|
修复:好友悄悄话文案根据互相状态精确区分
- notifyOnlineUser 加 $mutual 参数
- added + mutual=false → '但你还没有添加对方为好友'
- added + mutual=true → '你们现在互为好友 🎉'
- removed + mutual=true → '你的好友列表中仍保留对方'
- removed + mutual=false → '已将你从他的好友列表移除'
- 删除操作悄悄话改为灰色 (#6b7280),语义更准确
|
2026-03-01 00:59:10 +08:00 |
|
|
|
3c2038e8fe
|
优化:好友通知弹窗根据互相状态显示不同内容
FriendAdded 事件:
- 新增 hasAddedBack 字段(B 是否已回加 A)
- Toast:已互相好友 → '你们现在互为好友 🎉'
- Toast:未回加 → '但你还没有添加对方为好友' + [➕ 回加] 一键操作按钮
FriendRemoved 事件:
- 新增 hadAddedBack 字段(之前是否互相好友)
- Toast:之前互相好友 → 提示 + [🗑️ 同步移除] 一键操作按钮
- Toast:单向好友 → 简单通知,无操作按钮
Toast 改进:
- 右上角 × 关闭按钮
- 快捷操作按钮支持 fetch 直接请求
- 完成后显示结果并自动关闭,延时改为 8 秒
|
2026-03-01 00:54:10 +08:00 |
|
|
|
700ab9def4
|
feat: 好友系统全实现
后端:
- FriendController:add/remove/status/index 四个接口
- FriendAdded / FriendRemoved 广播事件(私有频道)
- channels.php 注册 user.{username} 私有频道鉴权
- routes/web.php 注册好友路由
- ChatController::init() 修复 DutyLog 在 return 后执行的 bug
- ChatController::notifyFriendsOnline() 上线时悄悄话通知好友
前端:
- user-actions:写私信 → 加好友/删好友按钮(动态状态)
- toggleFriend() 方法 + fetchUser 后加载好友状态
- scripts:监听私有频道 FriendAdded/FriendRemoved
- showFriendToast() 右下角浮窗通知(5秒自动消失)
- global-dialog 加 fdSlideIn 动画
|
2026-03-01 00:48:51 +08:00 |
|
|
|
76fd17c727
|
功能:存点时自动同步在职用户勤务日志
- heartbeat 手动存点:调用 tickDutyLog()
- AutoSaveExp 自动存点:调用 tickDutyLog()
- 逻辑:今日已有开放日志则刷新 duration_seconds,无则新建(login_at 取 in_time 进房时间)
- 修复:TIMESTAMPDIFF 结果用 GREATEST(0, ...) 防 unsigned 溢出
- 修复:database.php MySQL 连接加 timezone=+08:00,与 PHP Asia/Shanghai 时区对齐
|
2026-03-01 00:04:59 +08:00 |
|
|
|
5f30220609
|
feat: 任命/撤销通知系统 + 用户名片UI优化
- 任命/撤销事件增加 type 字段区分类型
- 任命:全屏礼花 + 紫色弹窗 + 紫色系统消息
- 撤销:灰色弹窗 + 灰色系统消息,无礼花
- 消息分发:操作者/被操作者显示在私聊面板,其他人显示在公屏
- 系统消息加随机鼓励语(各5条轮换)
- ChatStateService 修复 Redis key 前缀扫描问题(getAllActiveRoomIds)
- 用户名片折叠优化:管理员视野、职务履历均可折叠
- 管理操作 + 职务操作合并为「🔧 管理操作」折叠区
- 悄悄话改为「🎁 送礼物」按钮,礼物面板内联展开
|
2026-02-28 23:44:38 +08:00 |
|
|
|
7643740eda
|
功能:今日风云榜独立页 /leaderboard/today,导航新增「今日榜」按钮
|
2026-02-28 13:50:51 +08:00 |
|
|
|
72d23af335
|
功能:ChatController 新人礼包 6666 金币接入积分流水,记录 newbie_bonus 来源
|
2026-02-28 13:34:40 +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 |
|
|
|
ffe35c048d
|
修复:历史消息服务端过滤,只加载与当前用户相关的记录,避免他人私聊和系统通知混入包厢窗
|
2026-02-28 11:54:29 +08:00 |
|
|
|
9a98bdfbe6
|
修复:聊天室初次加载时附带历史消息,解决因网络延迟错失入场欢迎语的问题
|
2026-02-28 11:17:09 +08:00 |
|
|
|
4ef95eaa27
|
新增:新人首次入住聊天室大礼包自动发放功能(6666金币 + 满场烟花 + 公屏欢迎)
|
2026-02-27 17:21:33 +08:00 |
|
|
|
3ad67a1610
|
优化:修改单次特效卡的公屏广播文案,避免让大家误以为是赠送了道具卡实体
|
2026-02-27 17:00:26 +08:00 |
|
|
|
43956d286e
|
修复:礼物系统消息字段名改为 from_user/to_user/sent_at 与前端 appendMessage() 匹配,触发金色边框样式
|
2026-02-27 16:30:41 +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 |
|
|
|
7fb86bfe21
|
Feat: 商店功能完整实现(单次特效卡888/周卡8888/改名卡5000,含购买、周卡覆盖、改名黑名单)
|
2026-02-27 15:57:12 +08:00 |
|
|
|
b366c9888f
|
Feat: 后台用户列表增加金币/魅力列,表头支持点击排序(等级/经验/金币/魅力)
|
2026-02-27 15:31:29 +08:00 |
|
|
|
4668c163aa
|
Feat: 管理员进入聊天室自动触发烟花+公屏欢迎公告
|
2026-02-27 14:34:04 +08:00 |
|
|
|
4da2d19b1f
|
Feat: 新增下雪特效,加强烟花/下雨在浅色背景的显色(发光粒子+深色雨线)
|
2026-02-27 14:22:13 +08:00 |
|
|
|
709e0d4975
|
Feat: 实现全屏特效系统(烟花/下雨/雷电),管理员一键触发全房间广播
|
2026-02-27 14:14:35 +08:00 |
|
|
|
dc9294207b
|
Fix: ip2region改用包自带内置数据库,避免自定义xdb格式不兼容问题
|
2026-02-27 12:26:37 +08:00 |
|
|
|
e1dbd9889d
|
Fix: 修正ip2region调用方式,改用getIpInfo()兼容各版本,并正确传入xdb路径
|
2026-02-27 12:24:46 +08:00 |
|
|
|
cb25e5b408
|
Feat: 切换IP归属地解析引擎为ip2region,原生返回中文省市运营商,精度到市级
|
2026-02-27 12:22:46 +08:00 |
|
|
|
96712df9cf
|
Fix: 强制Flex横排三列显示,修复GeoLite2本地库返回英文省市名改为中文翻译
|
2026-02-27 12:08:38 +08:00 |
|
|
|
1834a8e9ff
|
Fix: 修正名片资产格子在部分环境下垂直堆叠的BUG改为Flex布局,并修复省市所在地因为缓存匹配不上导致不显示的问题
|
2026-02-27 12:05:57 +08:00 |
|
|
|
006da4f5d6
|
Feat: 切换 IP 归属地解析引擎至本地离线库 MaxMind GeoLite2 并开启原生中文支持
|
2026-02-27 12:00:20 +08:00 |
|
|
|
63f7cfbb25
|
UI&Feat: 压缩资产数据显示在一行以节省空间,同时增加 IP 归属地中英文本地化翻译映射
|
2026-02-27 11:56:29 +08:00 |
|
|
|
d73dda6cd2
|
Fix: 防止生产环境未运行 composer install 导致 Location facade 找不到引发 500 错误
|
2026-02-27 11:44:28 +08:00 |
|
|
|
731792fab6
|
Feature: 权限优化 - 名片弹窗按等级展示资料,高管可查IP及归属地
|
2026-02-27 11:29:48 +08:00 |
|
|
|
74217896d1
|
Feature: 调整AI聊天机器人的形象为“AI小班长”并更新了军人卡通风格头像
|
2026-02-27 10:54:41 +08:00 |
|
|
|
5c2172c2af
|
增强:完善用户考勤记录机制,增加进出房间时间和登录次数统计
|
2026-02-27 10:11:09 +08:00 |
|
|
|
ea7331dd98
|
增强:聊天室内修改绑定邮箱时强制要求邮件验证码校验,并增加 60 秒发送频率限制防滥发机制
|
2026-02-27 10:02:33 +08:00 |
|
|
|
02356666ca
|
修复:增强 SMTP 连通性测试容错,加入 10 秒超时限制避免端口不通导致页面死锁,并捕获 Throwable 防止致命异常
|
2026-02-27 09:53:46 +08:00 |
|
|
|
baae2cc26f
|
特性:增加创始人专享的在线 SMTP 配置系统并在 AppServiceProvider 中动态加载以拦截系统发件
|
2026-02-27 09:47:47 +08:00 |
|
|
|
5e6101483d
|
UI调整:在系统参数配置中移除 chatbot_enabled 显示,统一由AI厂商配置专用入口管理
|
2026-02-27 09:41:47 +08:00 |
|
|
|
44ac4742d8
|
增强:实现真正的创始人(ID=1)特权控制:限制非 ID=1 管理员访问部分后台模块及修改他人等级的能力
|
2026-02-27 09:39:26 +08:00 |
|
|
|
4c48530a4f
|
优化:登录豁免等级改为动态读取 sysparam 中的 superlevel (管理员级别)
|
2026-02-27 09:34:24 +08:00 |
|
|
|
3925ecaeb2
|
增强:登录接口增加封号和封IP拦截检测,并为管理员提供强登豁免
|
2026-02-27 09:30:14 +08:00 |
|
|
|
fefa275771
|
功能:留言板新建留言改为弹窗形式,并新增用户选择下拉列表
- GuestbookController::index() 追加传入 $users 用户名列表
- 顶部内联展开表单改为居中 Modal 弹窗,带遮罩层和过渡动画
- 收件人从普通文本输入改为下拉选择器(含全部注册用户)
- 悄悄话改为 toggle 开关样式
- 增加顶级渐变色标题栏
|
2026-02-27 02:02:38 +08:00 |
|
|
|
f745db3990
|
功能:聊天获取魅力值(方案 B)
- 对指定用户发言时根据性别给魅力:异性 +2,同性 +1(后台可配)
- Redis 每小时上限 20(后台可配 charm_hourly_limit)
- 系统用户、对'大家'发言、悄悄话不触发
- 新增 sysparam:charm_cross_sex / charm_same_sex / charm_hourly_limit
|
2026-02-27 01:14:24 +08:00 |
|
|
|
b72e2a5936
|
优化:送花消息改为普通通知样式 + 在收花人私聊屏显示
- from_user 从'系统传音'改为'送花播报',不再使用红色公告样式
- to_user 从'大家'改为收花人用户名,消息在收花人 say2 显示
- 礼物图片渲染逻辑移到普通系统用户分支
|
2026-02-27 01:09:26 +08:00 |
|
|
|
c5cc55fc84
|
功能:送花/礼物系统完整开发
- 新增 Gift 模型和 gifts 数据表(7种默认花卉,各有图片/金币/魅力配置)
- 7张花卉图片生成并存放于 public/images/gifts/
- 名片弹窗新增送礼物 UI:图片选择列表、金币/魅力标注、数量选择
- sendFlower 控制器方法:按 gift_id 查找礼物、扣金币、加魅力、广播消息
- 聊天消息渲染支持显示礼物图片(含弹跳动画效果)
- 后台可在 gifts 表中管理花卉类型(名称、图标、图片、金币、魅力、排序、启禁用)
|
2026-02-27 01:01:56 +08:00 |
|
|
|
a2190f7b88
|
优化:存点称号改为后端动态返回
- 后端根据 VIP 等级/管理员身份返回 title 字段
- 前端移除硬编码的等级-称号映射,直接使用返回值
- 管理员显示'管理员',VIP 显示会员名称,其他显示'普通会员'
|
2026-02-27 00:49:35 +08:00 |
|
|
|
4cc2982d9f
|
功能:自动存点增加金币奖励 + VIP 加成
- heartbeat 增加金币奖励逻辑,读取 jjb_per_heartbeat 配置
- 支持固定值('5')和范围('1-10')两种奖励配置格式
- VIP 会员自动应用经验和金币加成倍率
- 前端手动存点显示金币余额和本次获得的奖励增量
- 新增迁移文件插入 jjb_per_heartbeat 配置项(默认 1-3)
- 更新 exp_per_heartbeat 描述说明支持范围格式
|
2026-02-27 00:44:45 +08:00 |
|
|
|
b72330342b
|
优化:排行榜显示人数改为后台可配置
- 新增 sysparam leaderboard_limit 配置项,默认 20
- 后台修改后清缓存即可生效
|
2026-02-27 00:36:26 +08:00 |
|
|
|
8c05e0fb83
|
优化排行榜:隐藏管理员 + 盖世神豪榜单位改为枚
- 所有榜单查询排除 user_level >= superLevel 的管理员
- 盖世神豪榜单位从'万'改为'枚'
- 缓存的查询也会过滤管理员(缓存到期后自动生效)
|
2026-02-27 00:33:25 +08:00 |
|
|
|
add92488a6
|
修复:UserController::show 返回格式改为 {status, data} 包装
- 匹配 Alpine.js fetchUser 期望的 data.status === 'success' 判断
- 这是双击用户名弹窗不显示的根本原因
|
2026-02-27 00:05:31 +08:00 |
|