📋 表概述

log_money 表全量记录了游戏中所有金币流转的审计日志,包括交易、拍卖行、邮件附金、公会银行存取、COD付款等。每条记录详细追踪发送方和接收方的账号、角色、IP等信息,用于安全审计和反欺诈分析。

无主键设计(日志表)。type 字段注释说明了6种交易类型:COD=付款取信, AH=拍卖行, GB DEPOSIT=公会银行存入, GB WITHDRAW=公会银行取出, MAIL=邮件, TRADE=玩家交易。

📊 表结构

字段名类型默认值说明
sender_accint UNSIGNEDNOT NULL发送方账号ID
sender_guidint UNSIGNEDNOT NULL发送方角色GUID
sender_nametextNOT NULL发送方角色名称
sender_iptextNOT NULL发送方IP地址
receiver_accint UNSIGNEDNOT NULL接收方账号ID
receiver_nametextNOT NULL接收方角色名称
moneybigint UNSIGNEDNOT NULL交易金币数(铜币单位)
topictextNOT NULL交易主题/备注
datedatetimeNOT NULL交易发生时间
typetinyintNOT NULL交易类型码

🔍 重要字段详解

💸 type - 交易类型

详细说明:tinyint 类型,区分不同的金币流转方式。
  • 1 = COD(付款取信)
  • 2 = AH(拍卖行)
  • 3 = GB DEPOSIT(公会银行存入)
  • 4 = GB WITHDRAW(公会银行取出)
  • 5 = MAIL(邮件附金)
  • 6 = TRADE(玩家间交易)

🔍 sender_ip - 安全审计

详细说明:TEXT类型,记录发送方IP地址,用于安全审计和反欺诈。
  • 追踪金币来源的IP地址
  • 辅助识别多开/工作室刷金行为
  • 配合账号信息全面追踪交易链

💡 SQL示例

示例1:查询某角色的金币交易记录

SELECT date, type, money / 10000 AS gold, sender_name, receiver_name, topic FROM log_money WHERE sender_guid = 100 OR sender_name LIKE '%角色名%' ORDER BY date DESC LIMIT 100;

示例2:审计同IP多账号异常金币流转

SELECT sender_ip, COUNT(*) AS tx_count, SUM(money) / 10000 AS total_gold, COUNT(DISTINCT sender_acc) AS unique_accounts FROM log_money WHERE date > DATE_SUB(NOW(), INTERVAL 7 DAY) GROUP BY sender_ip HAVING unique_accounts > 3 ORDER BY total_gold DESC;

❓ 常见问题

Q1: log_money 表会无限增长吗?
是的。日志表不设自动清理机制,建议定期归档或清理超过一定时间的旧数据,避免影响数据库性能。
Q2: 如何查看指定日期的金币交易量?
使用 WHERE DATE(date) = '2026-01-01'WHERE date BETWEEN '2026-01-01' AND '2026-01-02' 过滤。