using Azure;
using Azure.Core;
using FastEndpoints;
using MoviconWebApi.Common;
namespace MoviconWebApi.API.ClearDataApi
{
///
/// 获取清洗数据端点
///
public class Endpoint : Endpoint>>
{
private readonly IFreeSql _freeSql;
///
/// 构造函数,注入FreeSql实例
///
/// FreeSql实例
public Endpoint(IFreeSql freeSql)
{
_freeSql = freeSql;
}
public override void Configure()
{
// 配置路由,支持GET和POST两种方式
//Post("/cleardata/list");
Get("/cleardata/listbycode");
// 允许匿名访问(根据实际需求可以改为需要认证)
AllowAnonymous();
// 配置摘要信息(用于Swagger文档)
Summary(s =>
{
s.Summary = "获取清洗数据列表";
s.Description = "根据设备编号、开始时间、结束时间查询清洗数据";
s.Response< ApiResponse>>(200, "成功返回清洗数据列表");
s.Response(404, "未找到数据");
s.Response(500, "服务器内部错误");
});
}
public override async Task HandleAsync(ClearDataRequest request, CancellationToken ct)
{
try
{
// 参数兜底
if (request.PageNo <= 0) request.PageNo = 1;
if (request.PageSize <= 0) request.PageSize = 100;
if (request.PageSize > 100) request.PageSize = 100;
// 新的分页数据(使用全限定名避免命名冲突)
(List, long) result = await MoviconWebApi.API.ClearDataApi.Data.GetClearData(request, _freeSql);
var items = result.Item1;
var total = result.Item2;
var resp = ApiResponse>.Success(items ?? new List(),
items != null && items.Count > 0 ? "请求成功" : "暂无数据");
// 组装分页
resp.pagination = new MoviconWebApi.Common.Pagination
{
total = total,
count = items?.Count ?? 0,
pageNo = request.PageNo,
totalPage = request.PageSize > 0 ? (int)Math.Ceiling((double)total / request.PageSize) : 0,
pageSize = request.PageSize
};
Response = resp;
}
catch (Exception ex)
{
// 记录错误日志
Logger.LogError(ex, "获取清洗数据失败");
// 返回错误响应
Response = ApiResponse>.Error(
"500",
"服务器内部错误",
new List()
);
//// 记录错误日志
//Logger.LogError(ex, "获取清洗数据失败");
//// 返回500错误
//await Send.ErrorsAsync(500, ct);
}
}
}
}