Files
nxxmdata/government-backend/controllers/cattleAcademyController.js
2025-10-09 18:01:06 +08:00

299 lines
6.0 KiB
JavaScript

const CattleAcademy = require('../models/CattleAcademy');
const { Op } = require('sequelize');
// 获取养牛学院资讯列表
const getCattleAcademyList = async (req, res) => {
try {
const {
page = 1,
pageSize = 10,
title,
category,
status,
author
} = req.query;
const offset = (page - 1) * pageSize;
const where = {};
// 构建查询条件
if (title) {
where.title = {
[Op.like]: `%${title}%`
};
}
if (category) {
where.category = category;
}
if (status !== undefined) {
where.status = status === 'true' || status === true;
}
if (author) {
where.author = {
[Op.like]: `%${author}%`
};
}
const { count, rows } = await CattleAcademy.findAndCountAll({
where,
limit: parseInt(pageSize),
offset: parseInt(offset),
order: [['sort', 'DESC'], ['createdAt', 'DESC']]
});
res.json({
code: 200,
message: '获取成功',
data: {
list: rows,
total: count,
page: parseInt(page),
pageSize: parseInt(pageSize)
}
});
} catch (error) {
console.error('获取养牛学院资讯列表失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 根据ID获取养牛学院资讯详情
const getCattleAcademyById = async (req, res) => {
try {
const { id } = req.params;
const cattleAcademy = await CattleAcademy.findByPk(id);
if (!cattleAcademy) {
return res.status(404).json({
code: 404,
message: '资讯不存在'
});
}
// 增加浏览次数
await cattleAcademy.increment('viewCount');
res.json({
code: 200,
message: '获取成功',
data: cattleAcademy
});
} catch (error) {
console.error('获取养牛学院资讯详情失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 创建养牛学院资讯
const createCattleAcademy = async (req, res) => {
try {
const {
title,
coverImage,
content,
summary,
category,
tags,
sort = 0,
status = true,
author,
publishTime,
isTop = false,
isRecommend = false,
remarks
} = req.body;
const cattleAcademy = await CattleAcademy.create({
title,
coverImage,
content,
summary,
category,
tags,
sort,
status,
author,
publishTime: publishTime || new Date(),
isTop,
isRecommend,
remarks
});
res.status(201).json({
code: 201,
message: '创建成功',
data: cattleAcademy
});
} catch (error) {
console.error('创建养牛学院资讯失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 更新养牛学院资讯
const updateCattleAcademy = async (req, res) => {
try {
const { id } = req.params;
const {
title,
coverImage,
content,
summary,
category,
tags,
sort,
status,
author,
publishTime,
isTop,
isRecommend,
remarks
} = req.body;
const cattleAcademy = await CattleAcademy.findByPk(id);
if (!cattleAcademy) {
return res.status(404).json({
code: 404,
message: '资讯不存在'
});
}
await cattleAcademy.update({
title,
coverImage,
content,
summary,
category,
tags,
sort,
status,
author,
publishTime,
isTop,
isRecommend,
remarks
});
res.json({
code: 200,
message: '更新成功',
data: cattleAcademy
});
} catch (error) {
console.error('更新养牛学院资讯失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 删除养牛学院资讯
const deleteCattleAcademy = async (req, res) => {
try {
const { id } = req.params;
const cattleAcademy = await CattleAcademy.findByPk(id);
if (!cattleAcademy) {
return res.status(404).json({
code: 404,
message: '资讯不存在'
});
}
await cattleAcademy.destroy();
res.json({
code: 200,
message: '删除成功'
});
} catch (error) {
console.error('删除养牛学院资讯失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 切换资讯状态
const toggleCattleAcademyStatus = async (req, res) => {
try {
const { id } = req.params;
const { status } = req.body;
const cattleAcademy = await CattleAcademy.findByPk(id);
if (!cattleAcademy) {
return res.status(404).json({
code: 404,
message: '资讯不存在'
});
}
await cattleAcademy.update({ status });
res.json({
code: 200,
message: '状态更新成功',
data: cattleAcademy
});
} catch (error) {
console.error('切换资讯状态失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 批量更新排序
const updateSort = async (req, res) => {
try {
const { items } = req.body; // [{id, sort}, ...]
for (const item of items) {
await CattleAcademy.update(
{ sort: item.sort },
{ where: { id: item.id } }
);
}
res.json({
code: 200,
message: '排序更新成功'
});
} catch (error) {
console.error('更新排序失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
module.exports = {
getCattleAcademyList,
getCattleAcademyById,
createCattleAcademy,
updateCattleAcademy,
deleteCattleAcademy,
toggleCattleAcademyStatus,
updateSort
};