114 lines
3.6 KiB
JavaScript
Raw Normal View History

2025-05-07 16:02:39 +08:00
const express = require('express');
const router = express.Router();
const {
getQuestions,
createQuestion,
addAnswer,
deleteQuestion,
deleteAnswer
} = require('../utils/qa-utils');
2025-05-07 16:02:39 +08:00
// 认证中间件
const authMiddleware = (req, res, next) => {
if (!req.session.user) {
return res.status(401).json({
success: false,
message: '未登录'
});
}
next();
};
2025-05-07 16:02:39 +08:00
// 获取所有问题
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) => {
2025-05-07 16:02:39 +08:00
try {
const { title, content } = req.body;
const username = req.session.user.username;
2025-05-07 16:02:39 +08:00
if (!title || !content) {
return res.status(400).json({ success: false, message: '标题和内容不能为空' });
}
const result = createQuestion(title, content, username);
2025-05-07 16:02:39 +08:00
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) => {
2025-05-07 16:02:39 +08:00
try {
const { questionId } = req.params;
const { content } = req.body;
const username = req.session.user.username;
const accessLevel = req.session.user.access_level;
2025-05-07 16:02:39 +08:00
if (!content) {
return res.status(400).json({ success: false, message: '回答内容不能为空' });
}
// 检查用户权限
if (!accessLevel || accessLevel < 2) {
2025-05-13 10:46:08 +08:00
return res.status(403).json({ success: false, message: '权限不足,需要开发者及以上权限' });
2025-05-07 16:02:39 +08:00
}
const result = addAnswer(questionId, content, username);
2025-05-07 16:02:39 +08:00
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) => {
2025-05-07 16:02:39 +08:00
try {
const { questionId } = req.params;
const accessLevel = req.session.user.access_level;
2025-05-07 16:02:39 +08:00
// 检查用户权限
if (!accessLevel || accessLevel < 3) {
2025-05-13 10:46:08 +08:00
return res.status(403).json({ success: false, message: '权限不足,需要组长及以上权限' });
2025-05-07 16:02:39 +08:00
}
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) => {
2025-05-07 16:02:39 +08:00
try {
const { answerId } = req.params;
const accessLevel = req.session.user.access_level;
2025-05-07 16:02:39 +08:00
// 检查用户权限
if (!accessLevel || accessLevel < 3) {
2025-05-13 10:46:08 +08:00
return res.status(403).json({ success: false, message: '权限不足,需要组长及以上权限' });
2025-05-07 16:02:39 +08:00
}
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;