fix: add appealing to active_count, limit check, export processing count

This commit is contained in:
2026-07-12 23:28:52 +08:00
parent 728a4c46f1
commit 8ae02dd115
2 changed files with 3 additions and 3 deletions

View File

@@ -35,7 +35,7 @@ router.get('/tickets', authenticate, requireRole('owner'), async (req, res) => {
});
router.get('/reported-players', authenticate, requireRole('owner'), async (req, res) => {
const rows = await query(`SELECT target_game_name as '被举报人游戏名', target_game_uid as '被举报人UID', COUNT(*) as '被举报次数', SUM(CASE WHEN status='resolved' THEN 1 ELSE 0 END) as '已处理', SUM(CASE WHEN status IN ('pending','processing','awaiting_info') THEN 1 ELSE 0 END) as '处理中', SUM(CASE WHEN status='rejected' THEN 1 ELSE 0 END) as '已驳回', MAX(created_at) as '最近举报时间', GROUP_CONCAT(reason SEPARATOR ' | ') as '常见原因' FROM tickets WHERE type='report' AND target_game_name IS NOT NULL AND target_game_name != '' GROUP BY target_game_name, target_game_uid ORDER BY COUNT(*) DESC`);
const rows = await query(`SELECT target_game_name as '被举报人游戏名', target_game_uid as '被举报人UID', COUNT(*) as '被举报次数', SUM(CASE WHEN status='resolved' THEN 1 ELSE 0 END) as '已处理', SUM(CASE WHEN status IN ('pending','processing','awaiting_info','appealing') THEN 1 ELSE 0 END) as '处理中', SUM(CASE WHEN status='rejected' THEN 1 ELSE 0 END) as '已驳回', MAX(created_at) as '最近举报时间', GROUP_CONCAT(reason SEPARATOR ' | ') as '常见原因' FROM tickets WHERE type='report' AND target_game_name IS NOT NULL AND target_game_name != '' GROUP BY target_game_name, target_game_uid ORDER BY COUNT(*) DESC`);
if (req.query.format === 'csv') {
const { csv, filename } = toCSV(['被举报人游戏名','被举报人UID','被举报次数','已处理','处理中','已驳回','最近举报时间','常见原因'], rows, `reported_players_${new Date().toISOString().slice(0,10)}.csv`);
res.setHeader('Content-Type','text/csv; charset=utf-8');

View File

@@ -66,7 +66,7 @@ router.get('/unclaimed', authenticate, requireRole('owner','admin'), async (req,
router.get('/reported-players', authenticate, requireRole('owner','admin'), async (req, res) => {
const rows = await query(`SELECT target_game_name as name, target_game_uid as uid,
COUNT(*) as total_reports,
SUM(CASE WHEN status IN ('pending','processing','awaiting_info') THEN 1 ELSE 0 END) as active_count,
SUM(CASE WHEN status IN ('pending','processing','awaiting_info','appealing') THEN 1 ELSE 0 END) as active_count,
SUM(CASE WHEN status='resolved' THEN 1 ELSE 0 END) as resolved_count,
SUM(CASE WHEN status='rejected' THEN 1 ELSE 0 END) as rejected_count,
MAX(created_at) as last_report,
@@ -124,7 +124,7 @@ router.post('/', optionalAuth, upload.array('files', 5), finalizeUpload, validat
if (!description) return res.status(400).json({ error: '请填写详细申诉内容' });
}
const countRow = await getRow("SELECT COUNT(*) as c FROM tickets WHERE (reporter_game_name = ? OR reporter_game_uid = ?) AND status IN ('pending','processing','awaiting_info')", [rgn, rgu]);
const countRow = await getRow("SELECT COUNT(*) as c FROM tickets WHERE (reporter_game_name = ? OR reporter_game_uid = ?) AND status IN ('pending','processing','awaiting_info','appealing')", [rgn, rgu]);
if (countRow.c >= 5) return res.status(400).json({ error: '您的待处理/处理中工单已达上限(5个),请等待已有工单处理完毕后再提交' });
const trackingToken = uuid();