102 lines
3.3 KiB
JavaScript
102 lines
3.3 KiB
JavaScript
const express = require('express');
|
||
const router = express.Router();
|
||
const {
|
||
getQuestions,
|
||
createQuestion,
|
||
addAnswer,
|
||
deleteQuestion,
|
||
deleteAnswer
|
||
} = require('../utils/db-utils');
|
||
|
||
// 获取所有问题
|
||
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', (req, res) => {
|
||
try {
|
||
const { title, content } = req.body;
|
||
const userInfo = req.body.userInfo || {};
|
||
|
||
if (!title || !content) {
|
||
return res.status(400).json({ success: false, message: '标题和内容不能为空' });
|
||
}
|
||
|
||
const result = createQuestion(title, content, userInfo.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', (req, res) => {
|
||
try {
|
||
const { questionId } = req.params;
|
||
const { content } = req.body;
|
||
const userInfo = req.body.userInfo || {};
|
||
|
||
if (!content) {
|
||
return res.status(400).json({ success: false, message: '回答内容不能为空' });
|
||
}
|
||
|
||
// 检查用户权限
|
||
if (!userInfo.access_level || userInfo.access_level < 2) {
|
||
return res.status(403).json({ success: false, message: '权限不足,需要权限级别大于等于2' });
|
||
}
|
||
|
||
const result = addAnswer(questionId, content, userInfo.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', (req, res) => {
|
||
try {
|
||
const { questionId } = req.params;
|
||
const userInfo = req.body.userInfo || {};
|
||
|
||
// 检查用户权限
|
||
if (!userInfo.access_level || userInfo.access_level < 3) {
|
||
return res.status(403).json({ success: false, message: '权限不足,需要权限级别大于等于3' });
|
||
}
|
||
|
||
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', (req, res) => {
|
||
try {
|
||
const { answerId } = req.params;
|
||
const userInfo = req.body.userInfo || {};
|
||
|
||
// 检查用户权限
|
||
if (!userInfo.access_level || userInfo.access_level < 3) {
|
||
return res.status(403).json({ success: false, message: '权限不足,需要权限级别大于等于3' });
|
||
}
|
||
|
||
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;
|