const express = require('express'); const router = express.Router(); const { getQuestions, createQuestion, addAnswer, deleteQuestion, deleteAnswer } = require('../utils/qa-utils'); // 认证中间件 const authMiddleware = (req, res, next) => { if (!req.session.user) { return res.status(401).json({ success: false, message: '未登录' }); } next(); }; // 获取所有问题 router.get('/questions', (req, res) => { try { const questions = getQuestions(); res.json({ success: true, questions }); } catch (error) { console.error('获取问题列表失败:', error); res.status(500).json({ success: false, message: '获取问题列表失败', error: error.message }); } }); // 创建新问题 router.post('/questions', authMiddleware, (req, res) => { try { const { title, content } = req.body; const username = req.session.user.username; if (!title || !content) { return res.status(400).json({ success: false, message: '标题和内容不能为空' }); } const result = createQuestion(title, content, username); res.status(201).json(result); } catch (error) { console.error('创建问题失败:', error); res.status(500).json({ success: false, message: '创建问题失败', error: error.message }); } }); // 添加回答 router.post('/questions/:questionId/answers', authMiddleware, (req, res) => { try { const { questionId } = req.params; const { content } = req.body; const username = req.session.user.username; const accessLevel = req.session.user.access_level; if (!content) { return res.status(400).json({ success: false, message: '回答内容不能为空' }); } // 检查用户权限 if (!accessLevel || accessLevel < 2) { return res.status(403).json({ success: false, message: '权限不足,需要开发者及以上权限' }); } const result = addAnswer(questionId, content, username); res.status(201).json(result); } catch (error) { console.error('添加回答失败:', error); res.status(500).json({ success: false, message: '添加回答失败', error: error.message }); } }); // 删除问题 router.delete('/questions/:questionId', authMiddleware, (req, res) => { try { const { questionId } = req.params; const accessLevel = req.session.user.access_level; // 检查用户权限 if (!accessLevel || accessLevel < 3) { return res.status(403).json({ success: false, message: '权限不足,需要组长及以上权限' }); } const result = deleteQuestion(questionId); res.json(result); } catch (error) { console.error('删除问题失败:', error); res.status(500).json({ success: false, message: '删除问题失败', error: error.message }); } }); // 删除回答 router.delete('/answers/:answerId', authMiddleware, (req, res) => { try { const { answerId } = req.params; const accessLevel = req.session.user.access_level; // 检查用户权限 if (!accessLevel || accessLevel < 3) { return res.status(403).json({ success: false, message: '权限不足,需要组长及以上权限' }); } const result = deleteAnswer(answerId); res.json(result); } catch (error) { console.error('删除回答失败:', error); res.status(500).json({ success: false, message: '删除回答失败', error: error.message }); } }); module.exports = router;