using Azure;
using FastEndpoints;
using MoviconWebApi.Common;
namespace MoviconWebApi.API.DeviceStateApi
{
///
/// 获取设备状态列表
///
public class GetListEndpoint : Endpoint>>
{
private readonly IFreeSql _db;
public GetListEndpoint(IFreeSql db)
{
_db = db;
}
public override void Configure()
{
Get("/devicestate/list");
AllowAnonymous();
Summary(s =>
{
s.Summary = "获取设备状态列表";
s.Description = "根据设备编号和时间范围查询设备状态数据";
s.Response>>(200, "成功返回设备状态数据列表");
});
}
public override async Task HandleAsync(DeviceStateRequest req, CancellationToken ct)
{
try
{
var data = await Data.GetDeviceStateListAsync(_db, req);
Response = ApiResponse>.Success(data, "success");
}
catch (Exception ex)
{
Response = ApiResponse>.Error(
"500",
$"查询失败: {ex.Message}",
new List());
}
}
}
///
/// 分页获取设备状态
///
public class GetPagedEndpoint : Endpoint>
{
private readonly IFreeSql _db;
public GetPagedEndpoint(IFreeSql db)
{
_db = db;
}
public override void Configure()
{
Post("/devicestate/paged");
AllowAnonymous();
Summary(s =>
{
s.Summary = "分页获取设备状态";
s.Description = "分页查询设备状态数据,支持设备编号和时间范围筛选";
s.Response>(200, "成功返回分页数据");
});
}
public override async Task HandleAsync(DeviceStatePagedRequest req, CancellationToken ct)
{
try
{
var result = await Data.GetDeviceStatePagedAsync(_db, req);
var items = result.Item1;
var total = result.Item2;
var pagedResponse = new DeviceStatePagedResponse
{
Items = items,
Total = total
};
Response = ApiResponse.Success(pagedResponse, "success");
}
catch (Exception ex)
{
Response = ApiResponse.Error(
"500",
$"查询失败: {ex.Message}",
new DeviceStatePagedResponse());
}
}
}
///
/// 获取最新的设备状态记录
///
public class GetLatestEndpoint : Endpoint>
{
private readonly IFreeSql _db;
public GetLatestEndpoint(IFreeSql db)
{
_db = db;
}
public override void Configure()
{
Get("/devicestate/latest");
AllowAnonymous();
Summary(s =>
{
s.Summary = "获取最新的设备状态记录";
s.Description = "获取指定设备的最新状态记录";
s.Response>(200, "成功返回最新记录");
s.Response>(404, "未找到记录");
});
}
public override async Task HandleAsync(DeviceStateRequest req, CancellationToken ct)
{
try
{
var data = await Data.GetLatestDeviceStateAsync(_db, req);
if (data == null)
{
Response = ApiResponse.Error("404", "未找到数据", null);
}
else
{
Response = ApiResponse.Success(data, "success");
}
}
catch (Exception ex)
{
Response = ApiResponse.Error(
"500",
$"查询失败: {ex.Message}",
null);
}
}
}
}