163 lines
3.7 KiB
JavaScript
163 lines
3.7 KiB
JavaScript
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
|
|
});
|
|
}
|
|
};
|