node-blog/controllers/adminController.js
2025-06-24 11:42:12 +08:00

236 lines
6.7 KiB
JavaScript

const User = require('../models/User');
const Category = require('../models/Category');
const Post = require('../models/Post');
const Comment = require('../models/Comment');
const Link = require('../models/Link');
// 用户管理
exports.userList = async (req, res) => {
try {
const users = await User.find().sort({ createdAt: -1 });
res.render('admin/users/list', { users });
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.updateUserStatus = async (req, res) => {
try {
const user = await User.findByIdAndUpdate(
req.params.id,
{ isActive: req.body.isActive },
{ new: true }
);
if (!user) return res.status(404).json({ error: '用户不存在' });
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.resetPassword = async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ error: '用户不存在' });
user.password = req.body.newPassword;
await user.save();
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
// 分类管理
exports.categoryList = async (req, res) => {
try {
const categories = await Category.find().sort({ order: 1 });
res.render('admin/categories/list', { categories });
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.createCategory = async (req, res) => {
try {
const { name, slug, order, isTop } = req.body;
const category = new Category({ name, slug, order, isTop });
await category.save();
res.redirect('/admin/categories');
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.updateCategoryTopStatus = async (req, res) => {
try {
const category = await Category.findByIdAndUpdate(
req.params.id,
{ isTop: req.body.isTop },
{ new: true }
);
if (!category) return res.status(404).json({ error: '分类不存在' });
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.deleteCategory = async (req, res) => {
try {
await Category.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
// 文章管理
exports.postList = async (req, res) => {
try {
const posts = await Post.find().sort({ createdAt: -1 });
res.render('admin/posts/list', { posts });
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.updatePostTopStatus = async (req, res) => {
try {
const post = await Post.findByIdAndUpdate(
req.params.id,
{ isTop: req.body.isTop },
{ new: true }
);
if (!post) return res.status(404).json({ error: '文章不存在' });
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.updatePostPublishStatus = async (req, res) => {
try {
const post = await Post.findByIdAndUpdate(
req.params.id,
{ isPublished: req.body.isPublished },
{ new: true }
);
if (!post) return res.status(404).json({ error: '文章不存在' });
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.deletePost = async (req, res) => {
try {
await Post.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.createPost = async (req, res) => {
try {
const { title, content, category, isPublished, isTop } = req.body;
const author = req.user._id;
const post = new Post({
title,
content,
category,
author,
isPublished: isPublished || false,
isTop: isTop || false
});
await post.save();
res.json({ success: true, post });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
exports.updatePost = async (req, res) => {
try {
const { title, content, category, isPublished, isTop } = req.body;
const post = await Post.findByIdAndUpdate(
req.params.id,
{ title, content, category, isPublished, isTop },
{ new: true }
);
if (!post) return res.status(404).json({ error: '文章不存在' });
res.json({ success: true, post });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
// 评论管理
exports.commentList = async (req, res) => {
try {
const comments = await Comment.find().populate('user post').sort({ createdAt: -1 });
res.render('admin/comments/list', { comments });
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.deleteComment = async (req, res) => {
try {
await Comment.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};
// 友情链接管理
exports.linkList = async (req, res) => {
try {
const links = await Link.find().sort({ order: 1 });
res.render('admin/links/list', { links });
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.createLink = async (req, res) => {
try {
const { name, url, description, order } = req.body;
const link = new Link({ name, url, description, order });
await link.save();
res.redirect('/admin/links');
} catch (err) {
console.error(err);
res.status(500).send('服务器错误');
}
};
exports.deleteLink = async (req, res) => {
try {
await Link.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (err) {
console.error(err);
res.status(500).json({ error: '服务器错误' });
}
};