From da26dd5f69e4d9f6eeb7d4fab402f9582cd99b23 Mon Sep 17 00:00:00 2001 From: canglan Date: Sat, 22 Aug 2026 12:21:58 +0800 Subject: [PATCH] fix: anonymous ticket submit 500 - undefined rgu param MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: after UID internalization, anonymous form no longer sends reporter_game_uid, so req.body.reporter_game_uid was undefined. The countRow query (outside try/catch) passed undefined to mysql2 which throws 'Bind parameters must not contain undefined' - escaping to the global error middleware -> 500 '服务器内部错误' for ALL anonymous ticket types (appeal/report/suggestion). Fix: default rgn/rgu to '' when absent. --- backend/routes/tickets.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/routes/tickets.js b/backend/routes/tickets.js index ad5265c..f1b52a5 100644 --- a/backend/routes/tickets.js +++ b/backend/routes/tickets.js @@ -147,7 +147,8 @@ router.post('/', ticketAnonLimiter, optionalAuth, upload.array('files', 5), fina } } // 身份解析: 登录用户可选用自己绑定的任一身份(网易端/皮肤站); 匿名用表单值 - let rgn = reporter_game_name, rgu = reporter_game_uid; + // 注: 匿名表单无 reporter_game_uid 字段(UID 已内置化), 必须兜底 '' 避免 mysql2 对 undefined 参数抛错 + let rgn = reporter_game_name || '', rgu = reporter_game_uid || ''; if (req.user) { if (reporter_game_name && reporter_game_name !== req.user.game_name) { const ident = await getRow('SELECT id FROM user_identities WHERE user_id = ? AND game_name = ?', [req.user.id, reporter_game_name]);