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); } } } }