236 lines
6.7 KiB
JavaScript
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: '服务器错误' });
|
|
}
|
|
};
|