using Azure; using FastEndpoints; using MoviconWebApi.Common; using MoviconWebApi.Entities; using System; namespace MoviconWebApi.API.DeviceAlarmApi { /// /// 设备报警列表查询端点 /// public class GetDeviceAlarmListEndpoint : Endpoint>> { private readonly IFreeSql _freeSql; public GetDeviceAlarmListEndpoint(IFreeSql freeSql) { _freeSql = freeSql; } public override void Configure() { Get("/devicealarm/list"); AllowAnonymous(); Summary(s => { s.Summary = "获取设备报警列表"; s.Description = "根据设备编号、时间范围和设备状态查询设备报警"; s.Response>>(200, "成功返回设备报警列表"); }); } public override async Task HandleAsync(DeviceAlarmRequest req, CancellationToken ct) { try { var data = await DeviceAlarmData.GetDeviceAlarmList(_freeSql, req); Response = ApiResponse>.Success(data, "success"); } catch (Exception ex) { Response = ApiResponse>.Error("500", $"获取数据失败: {ex.Message}"); } } } /// /// 设备报警分页查询端点 /// public class GetDeviceAlarmPagedEndpoint : Endpoint> { private readonly IFreeSql _freeSql; public GetDeviceAlarmPagedEndpoint(IFreeSql freeSql) { _freeSql = freeSql; } public override void Configure() { Post("/devicealarm/paged"); AllowAnonymous(); Summary(s => { s.Summary = "分页获取设备报警"; s.Description = "根据设备编号、时间范围和设备状态分页查询设备报警"; s.Response>(200, "成功返回设备报警分页数据"); }); } public override async Task HandleAsync(DeviceAlarmPagedRequest req, CancellationToken ct) { try { var (items, total) = await DeviceAlarmData.GetDeviceAlarmPagedList(_freeSql, req); var pagedResponse = new DeviceAlarmPagedResponse { Items = items, Total = total }; Response = ApiResponse.Success(pagedResponse, "success"); } catch (Exception ex) { Response = ApiResponse.Error("500", $"获取数据失败: {ex.Message}"); } } } /// /// 获取最新设备报警端点 /// public class GetLatestDeviceAlarmEndpoint : Endpoint> { private readonly IFreeSql _freeSql; public GetLatestDeviceAlarmEndpoint(IFreeSql freeSql) { _freeSql = freeSql; } public override void Configure() { Get("/devicealarm/latest"); AllowAnonymous(); Summary(s => { s.Summary = "获取最新设备报警"; s.Description = "根据设备编号获取最新的设备报警记录"; s.Response>(200, "成功返回最新设备报警"); }); } public override async Task HandleAsync(DeviceAlarmRequest req, CancellationToken ct) { try { var data = await DeviceAlarmData.GetLatestDeviceAlarm(_freeSql, req); if (data == null) { Response = ApiResponse.Error("404", "未找到设备报警记录"); } else { Response = ApiResponse.Success(data, "success"); } } catch (Exception ex) { Response = ApiResponse.Error("500", $"获取数据失败: {ex.Message}"); } } } /// /// 获取活动报警端点 /// public class GetActiveAlarmsEndpoint : Endpoint>> { private readonly IFreeSql _freeSql; public GetActiveAlarmsEndpoint(IFreeSql freeSql) { _freeSql = freeSql; } public override void Configure() { Get("/devicealarm/active"); AllowAnonymous(); Summary(s => { s.Summary = "获取活动报警"; s.Description = "获取指定设备的所有活动(未结束)报警"; s.Response>>(200, "成功返回活动报警列表"); }); } public override async Task HandleAsync(DeviceAlarmRequest req, CancellationToken ct) { try { var data = await DeviceAlarmData.GetActiveAlarms(_freeSql, req.DeviceCode); Response = ApiResponse>.Success(data, "success"); } catch (Exception ex) { Response = ApiResponse>.Error("500", $"获取数据失败: {ex.Message}"); } } } }