Commit Graph
12 Commits
Author SHA1 Message Date
ypshidifu afdae1b63b fix(sync): 拉取交易即刻贴标防重复处理 — 新增confirmed_transactions表+ack_transaction接口 2026-07-14 11:38:30 +08:00
ypshidifu 6984bc79fd feat(admin): 搜索框支持ban/tempban关键字筛选封禁玩家 2026-07-14 00:48:28 +08:00
ypshidifu 8261b4dbfd feat(admin): 用户管理添加封禁玩家/临时封禁筛选标签页 2026-07-14 00:37:10 +08:00
ypshidifu 984c629cc0 修复(today_bonds): 改用game_transactions单一数据源消除重复计算
【根因】同一笔Web商城购买被写入两张表:
- web_transactions(PHP端cashier.php直接写入)
- game_transactions(Java端同步,含balance_before/after)
导致消费金额被重复统计(如youpaishidifu今日消费显示410而非205)。

【修复】移除所有web_transactions查询,只用game_transactions作为
唯一数据源。每笔交易通过balance_after-balance_before判断方向,
余额增加→收入,余额减少→消费,100%准确且无重复。

验证结果(youpaishidifu今日):
- 消费:205 ✓(之前显示410,实际应为205)
- 收入:5302 ✓(与XLS流水一致)
2026-07-13 21:38:45 +08:00
ypshidifu 6ad469452f 修复(today_bonds,admin.php): PHP数组key自动转整数导致r.name为number→escAdmHtml爆炸\n\n【根因】PHP中[['player_name']]当玩家名为纯数字时,PHP自动将\narray key转为integer,array_keys返回整数。JSON编码后name字段为number。\nJS端(r.name||'') → 123||'' = 123,123.replace() → TypeError。\n\n【修复】\n- today_bonds.php: 'name' => (string) 显式字符串化\n- admin.php: escAdmHtml 改用 String(s??'') 防御所有非字符串类型 2026-07-13 21:18:26 +08:00
ypshidifu 8f0bf8cd52 修复(today_bonds): web_transactions用type区分方向, game_transactions用balance差值
【问题】两表的 amount 始终为正,不能用金额符号判断收支方向。
【修复】
- web_transactions: amount<0 →消费, amount>0中用type区分(shop_buy/shop_cart=消费,其他=收入)
- game_transactions: balance_after > balance_before →收入, 反之为消费
- 覆盖 admin_add/deduct/refund 和 Java同步的所有交易类型
2026-07-13 20:51:31 +08:00
ypshidifu ffa8b4cce0 修复(today_bonds): 消费收入需同时统计web_transactions和game_transactions
用户截图中的 shop_buy 等支出记录在 game_transactions 表而非
web_transactions 表,之前的查询只覆盖 web_transactions 导致消费为0。
现在合并两个表的数据:game_transactions.amount < 0 也计入消费,
amount > 0 也计入收入。
2026-07-13 20:35:27 +08:00
ypshidifu ba484e957d 修复(today_bonds,online_curve): 债券看板消费数据源错误+在线曲线不记录快照
今日债券:
- 消费改为从 web_transactions.amount<0 取绝对值
- 收入从 web_transactions.amount>0 取
- 移除 orders.db.cashier_orders 消费查询(导致消费总是0)

在线曲线:
- 新增 ensureRecentSnapshot() 自动记录机制
- 每次 action=data 时检查上次快照是否>55秒前,是则自动记录
- 避免后台只调 action=data 导致永不记录快照的 bug
2026-07-13 20:25:58 +08:00
ypshidifu dff381adeb 修复(admin.php): 三个看板函数使用未定义的 esc() → escAdmHtml()
- today_bonds / active_players / online_curve 三个 load 函数
- 全部 8 处 esc(...) 替换为后台已定义的 escAdmHtml(...)
2026-07-13 20:04:23 +08:00
ypshidifu 19472baab0 后台集成: 三个数据看板页面(今日债券/本时活跃/在线曲线)
- admin.php 侧边栏新增三个导航项
- 新增 loadBondsToday/loadActiveHour/loadOnlineCurve 三个加载函数
- 直接从独立PHP端点(today_bonds/active_players/online_curve)获取数据
- 纯CSS条形图展示24小时在线曲线,无需Chart.js CDN依赖
- 各看板自动定时刷新(30s/10s/60s),切换页面时清理定时器
2026-07-13 19:53:28 +08:00
ypshidifu 5e581adef3 新增: 三个PHP数据看板页面
- today_bonds.php: 今日债券变动看板(消费/收入/净变动)
- active_players.php: 本小时在线活跃看板(实时在线玩家)
- online_curve.php: 24小时在线曲线图(Chart.js柱状图+自动快照)
2026-07-13 19:12:21 +08:00
ypshidifu 9b39c9e56f 修复: 权限管理多项问题
1. 权限字段补齐: PHP $PERM_TYPES对齐Java全部32个权限键
   - 新增denyEntityInteract(实体交互)、denyMobAttack(攻击生物)
   - 修正denyPeaceMode→peaceMode(键名与Java对齐)
   - 数据迁移: 自动重命名DB中已有的denyPeaceMode为peaceMode

2. 权限编辑二态化: 成员权限只有允许/禁止,不存在"领地默认"
   - 移除前端"默认"状态,改为允许(green)/禁止(red)二态切换
   - 后端: 禁用时存false而非删除键,确保Java端正确识别

3. 角色切换修复: 移除visitor选项(访客=未授权玩家)
   - 下拉菜单只保留admin/member
   - 确认对话框文案对应调整

4. 同步删除逻辑: handleSyncPermissions新增清理机制
   - 删除incoming列表中不存在的旧记录(120秒宽限期)
   - synced_at=NULL的记录不参与删除(防误删PHP本地创建)
   - role CASE简化为role=excluded.role(信任Java为角色权威源)

5. 部署: json_encode加JSON_UNESCAPED_UNICODE防双重编码
2026-07-12 01:07:27 +08:00