69 Commits

Author SHA1 Message Date
lkddi b0028c515f 将用户管理操作接入职务权限体系 2026-04-21 18:00:02 +08:00
lkddi a17a67f533 去除任命成功的重复弹窗提示 2026-04-21 17:16:18 +08:00
lkddi fed51dda18 新增聊天室刷新同步与全员刷新功能 2026-04-21 17:14:12 +08:00
lkddi d739fc7028 优化发送金币后自动关闭 2026-04-12 22:39:22 +08:00
lkddi 632c9e5a93 优化 2026-04-11 13:34:15 +08:00
lkddi 6af789dd83 优化个人中心页面 2026-04-11 13:30:32 +08:00
lkddi 12fd0558d9 个人页面增加 会员显示 2026-04-11 13:24:15 +08:00
lkddi c30b518105 个人页面增加 会员显示 2026-04-11 13:20:37 +08:00
lkddi c2a2b4818e 个人页面增加 会员显示 2026-04-11 13:14:05 +08:00
lkddi b4d6e0e23b feat: 支持上传及查看高清原图自定义头像 2026-04-02 17:07:24 +08:00
lkddi caf4742dd8 修复:移除前端对 headface 属性的强制小写转换,避免自定义上传头像(带有大小写字符)出现404问题 2026-04-02 17:01:13 +08:00
lkddi 60cec0276b feat: 名片支持展示存款信息并适配弹窗宽度 2026-03-21 08:29:29 +08:00
lkddi 4139949405 放开特权用户平级管理操作:允许同等级(如100级对100级)互相执行管理操作 2026-03-18 21:49:35 +08:00
lkddi 6c4183e175 删除管理操作区私信按钮 2026-03-18 20:20:31 +08:00
lkddi 0ca028f73d 新增赠送金币功能:任意用户可从自己余额赠送金币给他人,成功后聊天室系统传音广播;职务奖励金币移入管理区,删除管理区私信按钮 2026-03-18 20:12:17 +08:00
lkddi c2293f96cb 修复:统一使用 window.Alpine 防止 defer 加载时 Alpine 未定义报错 2026-03-15 17:05:33 +08:00
lkddi 51aa3931b9 送金币弹窗:彻底修复按钮蓝色背景失效变紫的Bug,将背景色移回静态style 2026-03-12 17:39:10 +08:00
lkddi 1328b3d8cb 送金币弹窗:修复因 Alpine.js 动态 :style 覆盖导致蓝色按钮背景透明丢失的问题 2026-03-12 17:36:29 +08:00
lkddi aa7a389ab2 送金币弹窗:确认发放按钮颜色改为蓝底白字渐变 2026-03-12 17:34:24 +08:00
lkddi 6400cb51ca 送金币弹窗:将操作按钮彻底改为发放礼包弹窗的同款样式(#d97706 和半透明底色,尺寸缩小,圆角8px) 2026-03-12 17:32:14 +08:00
lkddi 30d0e386fd 送金币弹窗:优化按钮配色对比度,确认按钮改为实心翠绿色,取消按钮改为半透明深色 2026-03-12 17:29:53 +08:00
lkddi 1b5f185a03 送金币弹窗:彻底重构UI,采用仿礼包弹窗的高级渐变、毛玻璃与居中排版风格 2026-03-12 17:27:35 +08:00
lkddi 29493b4fee 送金币弹窗:按钮改为全宽大圆角居中,发放记录改为卡片式 2026-03-12 17:19:16 +08:00
lkddi cc28a27ab0 送金币弹窗:确认发放按钮固定橙色白字+立体阴影按压效果 2026-03-12 17:15:42 +08:00
lkddi 6817e8e5cd 送金币弹窗:确认发放按钮禁用状态改为灰色背景,激活状态橙色 pill 按钮 2026-03-12 17:10:03 +08:00
lkddi 21111aecf5 送金币弹窗:确认发放按钮改为礼包风格大圆角 pill 按钮 2026-03-12 17:05:48 +08:00
lkddi 32ca130f90 送金币弹窗:确认发放按钮改为渐变圆角实心按钮,加悬浮上移效果 2026-03-12 17:03:25 +08:00
lkddi 78564e2a1d feat: 增加自定义头像上传、自动压缩与自动清理功能,统一全站头像路径读取逻辑 2026-03-12 15:26:54 +08:00
lkddi 0ab0483603 feat: 完成独立的邀请与达人榜系统架构 2026-03-12 09:33:38 +08:00
lkddi 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
lkddi bfb1a3bca4 重构(chat): 聊天室 Partials 第二阶段分类拆分及修复红包弹窗隐藏 Bug
- 完成对 scripts.blade.php 中非核心业务逻辑(钓鱼游戏、AI机器人、系统全局公告)的深度抽象隔离
- 修复抢红包逻辑中 setInterval 缺失时间参数(1000)引发浏览器前端主线程挂起的重度阻塞问题
- 修复 lottery-panel 组件结尾漏写 </div> 导致的连锁级渲染树崩溃(该崩溃导致红包节点被意外当作隐藏后代节点渲染,造成彻底不可见)
- 对相关模板规范代码结构,执行 Laravel Pint 格式化并提交
2026-03-09 11:30:11 +08:00
lkddi 040dbdef3c 优化:全站金币图标由 🪙(银灰色)统一替换为 💰(金黄色)
🪙 在多数平台/字体上渲染为银灰色,与「金币」语义不符;
💰 各平台均渲染为金黄色,更直观传达金币概念。

涉及文件(43处):
- app/Jobs:百家乐、赛马结算广播
- app/Http/Controllers:管理员命令、红包、老虎机、神秘箱子
- app/Listeners
- resources/views:聊天室各游戏面板、商店、toolbar、后台页面等
2026-03-04 15:00:02 +08:00
lkddi f45483bcba 功能更新与UI优化:游戏图标移除、用户名片修复、婚礼红包界面重设计
- 移除聊天室右下角浮动游戏图标(占卜、百家乐、赛马、老虎机)
- 用户名片按钮区:修复已婚/已好友时按钮换行问题,统一单行显示
- 婚礼红包弹窗:重设计为喜庆鲜红背景,领取按钮改为圆形米黄样式
- 新增婚礼红包恢复接口(/wedding/pending-envelopes),刷新后自动恢复领取按钮
- 修复 Alpine :style 字符串覆盖静态 style 导致圆形按钮失效的问题
- 撤职后用户等级改为根据经验值重新计算,不再无条件重置为1
- 管理员修改用户经验值后自动重算等级,有职务用户等级锁定
- 娱乐大厅钓鱼游戏按钮直接调用 startFishing() 简化操作流程
- 新增赛马、占卜、百家乐游戏及相关后端逻辑
2026-03-03 23:19:59 +08:00
lkddi 84a4b42f31 离婚流程全面升级:①发起方专属确认弹窗(含对方拒绝后果+魅力/金币惩罚实时值)②被申请方三选弹窗(同意/不同意/稍后)③不同意=强制离婚申请人赔一半金币④所有惩罚数值从后台实时查询 2026-03-01 19:02:43 +08:00
lkddi 5bcbf74dfc 新增:在用户名片面板展现「协议离婚」按钮及相关的交互弹窗提示 2026-03-01 18:02:47 +08:00
lkddi d703309a34 修复:当前用户未设性别时求婚按钮静默消失的问题
根因:lkddi 的 sex=0(未设置),mySex 为空字符串,
导致 && mySex 判断为 false,求婚按钮被隐藏无任何提示。

修复:
1. 将 lkddi.sex 更新为 1(男)
2. 新增「未设置性别」提示块:
   - 当前用户未设性别 + 对方有性别 + 对方未婚 时显示
   - 灰色虚线样式,hover 提示「请到个人资料页设置性别后即可求婚」
   - 不再静默隐藏,避免用户困惑
2026-03-01 17:12:23 +08:00
lkddi 9139108744 修复:求婚按钮异性判断,mySex 存入 Alpine data 避免 x-show 内 window 访问失效 2026-03-01 15:56:12 +08:00
lkddi e20f94fe17 修复:求婚限制异性(前端隐藏按钮 + 后端拦截校验)
前端(user-actions.blade.php):
- 求婚按钮增加三重条件:对方未婚 + 双方性别均已填写 + 性别不同

后端(MarriageService::propose):
- 增加异性校验:两方性别必须为「男/女」且不同
- 报错:只有男女双方才能互相求婚

frame.blade.php:
- chatContext 注入 userSex(当前用户性别)供前端判断
2026-03-01 15:34:36 +08:00
lkddi 877fd1935f 功能:婚姻系统第12步(前端交互)
chat.js:
- 监听婚姻全局广播(MarriageAccepted/Divorced/WeddingCelebration)
- initMarriagePrivateChannel() 监听私人频道
  (求婚/拒绝/过期/离婚申请/红包领取)

frame.blade.php:
- chatContext.marriage 注入所有婚姻 API URL
- 引入 marriage-modals.blade.php 弹窗组件

marriage-modals.blade.php(新建):
- 求婚弹窗(选戒指→求婚)
- 收到求婚弹窗(接受/拒绝)
- 结婚成功公告弹窗(可跳转婚礼设置)
- 婚礼设置弹窗(档位/支付方式/立即OR定时)
- 婚礼红包领取弹窗
- 所有 WebSocket 事件处理

user-actions.blade.php:
- 名片加「💍 求婚」按钮(对方未婚时)
- 名片加「💑 已婚状态」标签(对方已婚时)
- fetchUser 同步拉取对方婚姻状态

MarriageController:
- targetStatus 返回增加 status/partner_name/marriage_id
- myRings 返回增加 status/intimacy_bonus/charm_bonus
2026-03-01 15:31:07 +08:00
lkddi 2ae3d83349 优化:确认发放按钮圆角 6px→20px,视觉更圆润 2026-03-01 12:08:05 +08:00
lkddi 9da0d83914 优化:确认发放按钮风格改为与全局弹窗一致
- 输入框+按钮回到同一行(align-items:stretch)
- 按钮完全复刻 global-dialog 确认按钮样式:
  padding:9px, border-radius:6px, font-size:13px, font-weight:bold
- 背景色 #f59e0b(与弹窗标题栏橙色对应)
- :style 仅控制 opacity,background 两分支都明确写入
2026-03-01 12:07:12 +08:00
lkddi 5180526821 优化:确认发放按钮改为全宽独立一行,风格同弹窗按钮
输入框独占一行,按钮在输入框下方全宽显示:
- 宽度 100%,高度 48px,字号 16px,字间距 2px
- 琥珀橙色 #f59e0b,与弹窗头部色调呼应
- 禁用时 opacity:0.45,启用时 box-shadow 投影
- 符合截图中弹窗确定按钮的视觉风格
2026-03-01 12:04:05 +08:00
lkddi 0d693eef5f 优化:输入框与确认按钮等高(align-items:stretch)
flex 容器改为 align-items:stretch,按钮去掉固定 height
改为 align-self:stretch,自动撑满与输入框相同高度,
视觉上两者完全对齐。
2026-03-01 12:01:53 +08:00
lkddi 4207528043 修复:确认发放按钮背景色始终通过 :style 注入
将 background 从 static style 移入 :style 绑定,
两种状态(启用/禁用)均显式包含 background,
彻底避免 Alpine :style 动态绑定覆盖静态 style background 的问题。

按钮颜色:橙红渐变 #ea580c→#dc2626
- 启用:opacity:1 + box-shadow 投影
- 禁用:opacity:0.4 + no-shadow(未输入金额时)
2026-03-01 12:00:03 +08:00
lkddi 96c472bfb9 修复:弹窗额度4列布局+确认按钮背景色
1. 4列布局:x-show 与 display:grid 分离到两层 div,
   避免 Alpine x-show 显示时把 display:grid 覆盖为 block

2. 确认按钮::style 改为始终返回 opacity 值而非空字符串,
   避免 Alpine :style 绑定空值时清除静态 style 的 background,
   按钮现为橙红渐变(#ea580c→#dc2626)+红色投影,
   禁用状态 opacity:0.45 降亮+cursor:not-allowed
2026-03-01 11:58:08 +08:00
lkddi 4ba5a88fc2 优化:奖励弹窗加宽+4列额度+最近10条记录+确认按钮醒目
- 弹窗宽度 320→520px(max-width:95vw 自适应)
- 额度四格改为一行4列(单次上限/单日上限/今日已发/剩余额度)
- 确认按钮改为橙红渐变+投影,视觉更突出
- 输入框下方显示最近10条发放记录(目标/金额/时间)
- 发放成功后实时在历史列表头部插入新纪录
- rewardQuota 接口统一返回 recent_rewards(最近10条)
2026-03-01 11:55:29 +08:00
lkddi 21cabb08c9 功能:奖励金币改为独立弹窗(展示额度信息)
- 点击「送金币」按钮打开独立弹窗,不再内联在用户名片中
- 弹窗展示 4 格额度信息:单次上限、单日上限、今日已发、剩余额度
- 新增 GET /command/reward-quota 接口(rewardQuota 方法)
  返回当前操作人实时额度,超管返回全部不限
- 发放成功后页面内实时更新今日已发/剩余额度,无需刷新
- 移除原内联奖励面板,action 改为调用全局 openRewardModal()
2026-03-01 11:50:12 +08:00
lkddi cc1278ffcb 修复:openUserCard 剥除消息中的装饰括号避免 404
问题:部分自动动作/系统消息用「【username】」格式显示用户名,
      双击时把「【」前缀一并传给 openUserCard,导致:
      GET /user/【lkddi → 404

修复:在 openUserCard 入口统一用正则清洗 【】[]
      等装饰字符,再传给 fetchUser 查询。
2026-03-01 11:42:13 +08:00
lkddi 8dcf23d7e4 修复:单次上限三态逻辑(null=不限/-1=不限/0=禁止/正整数=有上限)
frame.blade.php:
- max_reward=null → myMaxReward=-1(不限,有权限)
- max_reward=0   → myMaxReward=0(禁止发放)
- max_reward=N   → myMaxReward=N(有具体上限)

user-actions.blade.php:
- 按钮显示条件:myMaxReward !== 0(-1 和正整数都显示)
- 面板上限文字:-1 显示「不限」,正整数显示具体数值
- sendReward 校验:0=禁止阻断,-1=不限跳过上限校验,N=有上限
- 输入框 :max:-1 时上限 999999(实际不限),N 时上限 N
2026-03-01 11:39:28 +08:00
lkddi 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