diff --git a/Haoliang.Core/Services/StubServices.cs b/Haoliang.Core/Services/StubServices.cs index c27610d..ba7e7e1 100644 --- a/Haoliang.Core/Services/StubServices.cs +++ b/Haoliang.Core/Services/StubServices.cs @@ -278,19 +278,90 @@ namespace Haoliang.Core.Services #region ========== 告警服务 ========== public class AlarmService : IAlarmService { - public Task> GetAllAlarmsAsync() => Task.FromResult>(new List()); - public Task> GetAlarmsByTypeAsync(AlarmType type) => Task.FromResult>(new List()); - public Task> GetActiveAlarmsAsync() => Task.FromResult>(new List()); - public Task GetAlarmByIdAsync(int alarmId) => Task.FromResult(null); - public Task CreateAlarmAsync(Alarm alarm) => Task.FromResult(alarm); - public Task UpdateAlarmAsync(int alarmId, Alarm alarm) => Task.FromResult(null); - public Task DeleteAlarmAsync(int alarmId) => Task.FromResult(false); - public Task ResolveAlarmAsync(int alarmId, string? resolutionNote) => Task.FromResult(false); + private readonly IAlarmRepository _alarmRepository; + + public AlarmService(IAlarmRepository alarmRepository) + { + _alarmRepository = alarmRepository; + } + + public async Task> GetAllAlarmsAsync() + { + return await _alarmRepository.GetAllAsync(); + } + + public async Task> GetAlarmsByTypeAsync(AlarmType type) + { + return await _alarmRepository.GetAlarmsByTypeAsync(type.ToString()); + } + + public async Task> GetActiveAlarmsAsync() + { + return await _alarmRepository.GetActiveAlarmsAsync(); + } + + public async Task GetAlarmByIdAsync(int alarmId) + { + return await _alarmRepository.GetByIdAsync(alarmId); + } + + public async Task CreateAlarmAsync(Alarm alarm) + { + alarm.CreatedAt = DateTime.Now; + alarm.OccurrenceTime = DateTime.Now; + await _alarmRepository.AddAsync(alarm); + await _alarmRepository.SaveAsync(); + return alarm; + } + + public async Task UpdateAlarmAsync(int alarmId, Alarm alarm) + { + var existing = await _alarmRepository.GetByIdAsync(alarmId); + if (existing == null) return null; + + existing.AlarmType = alarm.AlarmType; + existing.AlarmContent = alarm.AlarmContent; + existing.AlarmLevel = alarm.AlarmLevel; + existing.IsResolved = alarm.IsResolved; + existing.ResolutionNote = alarm.ResolutionNote; + + _alarmRepository.Update(existing); + await _alarmRepository.SaveAsync(); + return existing; + } + + public async Task DeleteAlarmAsync(int alarmId) + { + var alarm = await _alarmRepository.GetByIdAsync(alarmId); + if (alarm == null) return false; + + _alarmRepository.Remove(alarm); + return await _alarmRepository.SaveAsync() > 0; + } + + public async Task ResolveAlarmAsync(int alarmId, string? resolutionNote) + { + return await _alarmRepository.ResolveAlarmAsync(alarmId, resolutionNote, "System"); + } + public Task AcknowledgeAlarmAsync(int alarmId, string? acknowledgeNote) => Task.FromResult(false); - public Task> GetDeviceAlarmsAsync(int deviceId, int days = 7) => Task.FromResult>(new List()); - public Task> GetCriticalAlarmsAsync() => Task.FromResult>(new List()); + + public async Task> GetDeviceAlarmsAsync(int deviceId, int days = 7) + { + return await _alarmRepository.GetAlarmsByDeviceIdAsync(deviceId); + } + + public async Task> GetCriticalAlarmsAsync() + { + return await _alarmRepository.GetAlarmsByLevelAsync("Critical"); + } + public Task GetAlarmStatisticsAsync(DateTime date) => Task.FromResult(null); - public Task> GetAlarmsByDateRangeAsync(DateTime startDate, DateTime endDate) => Task.FromResult>(new List()); + + public async Task> GetAlarmsByDateRangeAsync(DateTime startDate, DateTime endDate) + { + return await _alarmRepository.GetAlarmsByDateRangeAsync(startDate, endDate); + } } public class AlarmRuleService : IAlarmRuleService