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

243 lines
5.2 KiB
JavaScript

const EpidemicActivity = require('../models/EpidemicActivity');
const { Op } = require('sequelize');
// 获取防疫活动列表
const getEpidemicActivities = async (req, res) => {
try {
const {
page = 1,
pageSize = 20,
activityName,
livestockCategory,
diseaseCategory,
activityStatus
} = req.query;
const offset = (page - 1) * pageSize;
const where = {};
// 构建查询条件
if (activityName) {
where.activityName = {
[Op.like]: `%${activityName}%`
};
}
if (livestockCategory) {
where.livestockCategory = livestockCategory;
}
if (diseaseCategory) {
where.diseaseCategory = diseaseCategory;
}
if (activityStatus) {
where.activityStatus = activityStatus;
}
const { count, rows } = await EpidemicActivity.findAndCountAll({
where,
limit: parseInt(pageSize),
offset: parseInt(offset),
order: [['updatedAt', '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 getEpidemicActivityById = async (req, res) => {
try {
const { id } = req.params;
const activity = await EpidemicActivity.findByPk(id);
if (!activity) {
return res.status(404).json({
code: 404,
message: '防疫活动不存在'
});
}
res.json({
code: 200,
message: '获取成功',
data: activity
});
} catch (error) {
console.error('获取防疫活动详情失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 创建防疫活动
const createEpidemicActivity = async (req, res) => {
try {
const {
activityName,
livestockCategory,
diseaseCategory,
vaccineUsed,
vaccineBatch,
preventionDate,
activityStatus = 'active'
} = req.body;
const activity = await EpidemicActivity.create({
activityName,
livestockCategory,
diseaseCategory,
vaccineUsed,
vaccineBatch,
preventionDate,
activityStatus
});
res.status(201).json({
code: 201,
message: '创建成功',
data: activity
});
} catch (error) {
console.error('创建防疫活动失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 更新防疫活动
const updateEpidemicActivity = async (req, res) => {
try {
const { id } = req.params;
const {
activityName,
livestockCategory,
diseaseCategory,
vaccineUsed,
vaccineBatch,
preventionDate,
activityStatus
} = req.body;
const activity = await EpidemicActivity.findByPk(id);
if (!activity) {
return res.status(404).json({
code: 404,
message: '防疫活动不存在'
});
}
await activity.update({
activityName,
livestockCategory,
diseaseCategory,
vaccineUsed,
vaccineBatch,
preventionDate,
activityStatus
});
res.json({
code: 200,
message: '更新成功',
data: activity
});
} catch (error) {
console.error('更新防疫活动失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 删除防疫活动
const deleteEpidemicActivity = async (req, res) => {
try {
const { id } = req.params;
const activity = await EpidemicActivity.findByPk(id);
if (!activity) {
return res.status(404).json({
code: 404,
message: '防疫活动不存在'
});
}
await activity.destroy();
res.json({
code: 200,
message: '删除成功'
});
} catch (error) {
console.error('删除防疫活动失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 切换活动状态
const toggleActivityStatus = async (req, res) => {
try {
const { id } = req.params;
const activity = await EpidemicActivity.findByPk(id);
if (!activity) {
return res.status(404).json({
code: 404,
message: '防疫活动不存在'
});
}
const newStatus = activity.activityStatus === 'active' ? 'inactive' : 'active';
await activity.update({ activityStatus: newStatus });
res.json({
code: 200,
message: '状态更新成功',
data: activity
});
} catch (error) {
console.error('切换活动状态失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
module.exports = {
getEpidemicActivities,
getEpidemicActivityById,
createEpidemicActivity,
updateEpidemicActivity,
deleteEpidemicActivity,
toggleActivityStatus
};