表概述

gm_ticket 表是GM(游戏管理员)工单系统的核心表,记录了玩家对游戏问题、Bug或违规行为的举报信息。每条记录代表一个工单,包含提交者信息、问题描述、发生位置、处理状态、GM回复等完整数据,支持工单的完整生命周期管理。

主键为 id(自增)。type 字段表示工单状态(0=打开,1=已关闭,2=角色已删除)。通过 playerGuid 关联 characters.guid。

表结构

字段名类型默认值说明
idint UNSIGNEDAUTO_INCREMENT工单ID(主键,自增)
typetinyint UNSIGNED0工单状态(0=打开,1=已关闭,2=角色已删除)
playerGuidint UNSIGNED0提交工单的玩家角色GUID
namevarchar(12)NOT NULL提交工单的玩家角色名称
descriptiontextNOT NULL工单详细描述(玩家提交的问题说明)
createTimeint UNSIGNED0工单创建时间(Unix时间戳)
mapIdsmallint UNSIGNED0提交工单时所在的地图ID
posXfloat0提交工单时的X坐标
posYfloat0提交工单时的Y坐标
posZfloat0提交工单时的Z坐标
lastModifiedTimeint UNSIGNED0工单最后修改时间(Unix时间戳)
closedByint0关闭工单者(-1=控制台关闭, >0=GM角色GUID)
assignedToint UNSIGNED0被分配处理此工单的GM角色GUID
commenttextNOT NULLGM内部备注信息(仅GM可见)
responsetextNOT NULLGM回复内容(发送给玩家的回复)
completedtinyint UNSIGNED0是否已完成处理(0=未完成,1=已完成)
escalatedtinyint UNSIGNED0是否已升级(0=未升级,1=已升级到更高级GM)
viewedtinyint UNSIGNED0是否已被GM查看(0=未查看,1=已查看)
needMoreHelptinyint UNSIGNED0玩家是否需要更多帮助(0=否,1=是)
resolvedByint0解决工单者(-1=控制台解决, >0=GM角色GUID)

实际案例

案例1:查询所有待处理的打开工单

SELECT t.id, t.name AS player_name, t.type, t.description, t.mapId, t.posX, t.posY, t.posZ, FROM_UNIXTIME(t.createTime) AS created, t.assignedTo, t.escalated, t.viewed FROM gm_ticket t WHERE t.type = 0 AND t.completed = 0 ORDER BY t.createTime ASC;

案例2:统计各GM的工单处理量

SELECT t.resolvedBy, COUNT(*) AS resolved_count, AVG(t.lastModifiedTime - t.createTime) / 3600 AS avg_hours_to_resolve FROM gm_ticket t WHERE t.resolvedBy > 0 AND t.lastModifiedTime > UNIX_TIMESTAMP() - 30 * 86400 GROUP BY t.resolvedBy ORDER BY resolved_count DESC;

案例3:查询指定玩家提交的所有工单记录

SELECT t.id, t.description, CASE t.type WHEN 0 THEN '打开' WHEN 1 THEN '已关闭' WHEN 2 THEN '角色已删除' END AS status, t.response, t.completed, FROM_UNIXTIME(t.createTime) AS created, FROM_UNIXTIME(t.lastModifiedTime) AS last_modified FROM gm_ticket t WHERE t.playerGuid = 100 ORDER BY t.createTime DESC;

常见问题

Q1: type 字段与 completed 字段有什么区别?
type 表示工单的生命周期状态(0=打开中, 1=已关闭, 2=角色已删除),completed 表示GM是否已完成处理(但不一定关闭)。一个工单可以 completed=1 但 type=0(处理完毕等待玩家确认)。
Q2: needMoreHelp 字段如何工作?
当GM处理完工单后,玩家可以在邮件中点击"仍需帮助",此时 needMoreHelp 被设为 1,工单被重新打开,type 重置为 0,completed 重置为 0
Q3: comment 和 response 有什么区别?
comment 是GM内部备注,仅供GM之间交流使用,玩家看不到。response 是GM发送给玩家的正式回复内容,通过游戏内邮件或聊天发送给玩家。