using System.Collections.Concurrent; using DMS.Application.DTOs; using DMS.Application.DTOs.Events; using DMS.Application.Interfaces; namespace DMS.Application.Services; /// /// 日志管理服务,负责日志相关的业务逻辑。 /// public class LogManagementService : ILogManagementService { private readonly INlogAppService _nlogAppService; private readonly IAppDataStorageService _appDataStorageService; /// /// 当日志数据发生变化时触发 /// public event EventHandler OnLogChanged; public LogManagementService(INlogAppService nlogAppService,IAppDataStorageService appDataStorageService) { _nlogAppService = nlogAppService; _appDataStorageService = appDataStorageService; } /// /// 异步根据ID获取日志DTO。 /// public async Task GetNlogByIdAsync(int id) { return await _nlogAppService.GetLogByIdAsync(id); } /// /// 异步获取所有日志DTO列表。 /// public async Task> GetAllNlogsAsync() { return await _nlogAppService.GetAllLogsAsync(); } /// /// 异步获取指定数量的最新日志DTO列表。 /// public async Task> GetLatestNlogsAsync(int count) { return await _nlogAppService.GetLatestLogsAsync(count); } /// /// 异步清空所有日志。 /// public async Task ClearAllNlogsAsync() { await _nlogAppService.ClearAllLogsAsync(); } /// /// 在内存中添加日志 /// public void AddNlogToMemory(NlogDto nlogDto) { if (_appDataStorageService.Nlogs.TryAdd(nlogDto.Id, nlogDto)) { OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Added, nlogDto)); } } /// /// 在内存中更新日志 /// public void UpdateNlogInMemory(NlogDto nlogDto) { _appDataStorageService.Nlogs.AddOrUpdate(nlogDto.Id, nlogDto, (key, oldValue) => nlogDto); OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Updated, nlogDto)); } /// /// 在内存中删除日志 /// public void RemoveNlogFromMemory(int nlogId) { if (_appDataStorageService.Nlogs.TryRemove(nlogId, out var nlogDto)) { OnLogChanged?.Invoke(this,new NlogChangedEventArgs(DataChangeType.Deleted, nlogDto)); } } }