update
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { AuditLogRepository } from '../repositories/audit.repository';
|
||||
import { AuditLogActionType, AuditLogEntry } from '../types/audit.types';
|
||||
|
||||
export class AuditLogService {
|
||||
private repository: AuditLogRepository;
|
||||
|
||||
constructor() {
|
||||
this.repository = new AuditLogRepository();
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录一条审计日志
|
||||
* @param actionType 操作类型
|
||||
* @param details 可选的详细信息 (对象或字符串)
|
||||
*/
|
||||
async logAction(actionType: AuditLogActionType, details?: Record<string, any> | string | null): Promise<void> {
|
||||
// 在这里可以添加额外的逻辑,例如:
|
||||
// - 检查是否需要记录此类型的日志 (基于配置)
|
||||
// - 格式化 details
|
||||
// - 异步执行,不阻塞主流程
|
||||
try {
|
||||
// 使用 'await' 确保日志记录完成(如果需要保证顺序或处理错误)
|
||||
// 或者不使用 'await' 让其在后台执行
|
||||
await this.repository.addLog(actionType, details);
|
||||
} catch (error) {
|
||||
// Repository 内部已经处理了错误打印,这里可以根据需要再次处理或忽略
|
||||
console.error(`[Audit Service] Failed to log action ${actionType}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取审计日志列表
|
||||
* @param limit 每页数量
|
||||
* @param offset 偏移量
|
||||
* @param actionType 可选的操作类型过滤
|
||||
* @param startDate 可选的开始时间戳 (秒)
|
||||
* @param endDate 可选的结束时间戳 (秒)
|
||||
*/
|
||||
async getLogs(
|
||||
limit: number = 50,
|
||||
offset: number = 0,
|
||||
actionType?: AuditLogActionType,
|
||||
startDate?: number,
|
||||
endDate?: number
|
||||
): Promise<{ logs: AuditLogEntry[], total: number }> {
|
||||
return this.repository.getLogs(limit, offset, actionType, startDate, endDate);
|
||||
}
|
||||
}
|
||||
|
||||
// Optional: Export a singleton instance if needed throughout the backend
|
||||
// export const auditLogService = new AuditLogService();
|
||||
Reference in New Issue
Block a user