rentease-backend/controllers/logController.js

163 lines
3.7 KiB
JavaScript
Raw Normal View History

2026-03-08 16:28:33 +00:00
const { Op } = require('sequelize');
const OperationLog = require('../models/OperationLog');
const LoginLog = require('../models/LoginLog');
// 获取操作日志列表
exports.getOperationLogs = async (req, res) => {
try {
const { page = 1, pageSize = 20, username, module, action, status, startTime, endTime } = req.query;
// 构建查询条件
const where = {};
if (username) {
where.username = { [Op.like]: `%${username}%` };
}
if (module) {
where.module = module;
}
if (action) {
where.action = action;
}
if (status) {
where.status = status;
}
if (startTime && endTime) {
where.createTime = {
[Op.between]: [new Date(startTime), new Date(endTime)]
};
}
// 查询日志列表
const { count, rows } = await OperationLog.findAndCountAll({
where,
order: [['createTime', 'DESC']],
offset: (page - 1) * pageSize,
limit: parseInt(pageSize)
});
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
});
}
};
// 获取登录日志列表
exports.getLoginLogs = async (req, res) => {
try {
const { page = 1, pageSize = 20, username, loginType, status, startTime, endTime } = req.query;
// 构建查询条件
const where = {};
if (username) {
where.username = { [Op.like]: `%${username}%` };
}
if (loginType) {
where.loginType = loginType;
}
if (status) {
where.status = status;
}
if (startTime && endTime) {
where.createTime = {
[Op.between]: [new Date(startTime), new Date(endTime)]
};
}
// 查询日志列表
const { count, rows } = await LoginLog.findAndCountAll({
where,
order: [['createTime', 'DESC']],
offset: (page - 1) * pageSize,
limit: parseInt(pageSize)
});
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
});
}
};
// 清空操作日志
exports.clearOperationLogs = async (req, res) => {
try {
const { startTime, endTime } = req.body;
const where = {};
if (startTime && endTime) {
where.createTime = {
[Op.between]: [new Date(startTime), new Date(endTime)]
};
}
await OperationLog.destroy({ where });
res.json({
code: 200,
message: '清空成功'
});
} catch (error) {
console.error('清空操作日志错误:', error);
res.status(500).json({
code: 500,
message: '清空操作日志失败',
error: error.message
});
}
};
// 清空登录日志
exports.clearLoginLogs = async (req, res) => {
try {
const { startTime, endTime } = req.body;
const where = {};
if (startTime && endTime) {
where.createTime = {
[Op.between]: [new Date(startTime), new Date(endTime)]
};
}
await LoginLog.destroy({ where });
res.json({
code: 200,
message: '清空成功'
});
} catch (error) {
console.error('清空登录日志错误:', error);
res.status(500).json({
code: 500,
message: '清空登录日志失败',
error: error.message
});
}
};