109 lines
2.1 KiB
C#

namespace AmtScanner.Api.Models;
/// <summary>
/// 统一 API 响应格式
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
public class ApiResponse<T>
{
/// <summary>
/// 状态码
/// </summary>
public int Code { get; set; } = 200;
/// <summary>
/// 消息
/// </summary>
public string Msg { get; set; } = "success";
/// <summary>
/// 数据
/// </summary>
public T? Data { get; set; }
/// <summary>
/// 成功响应
/// </summary>
public static ApiResponse<T> Success(T? data, string msg = "success")
{
return new ApiResponse<T>
{
Code = 200,
Msg = msg,
Data = data
};
}
/// <summary>
/// 失败响应
/// </summary>
public static ApiResponse<T> Fail(int code, string msg)
{
return new ApiResponse<T>
{
Code = code,
Msg = msg,
Data = default
};
}
}
/// <summary>
/// 无数据的统一响应
/// </summary>
public class ApiResponse : ApiResponse<object>
{
/// <summary>
/// 成功响应(无数据)
/// </summary>
public static ApiResponse Ok(string msg = "success")
{
return new ApiResponse
{
Code = 200,
Msg = msg,
Data = null
};
}
/// <summary>
/// 失败响应
/// </summary>
public static new ApiResponse Fail(int code, string msg)
{
return new ApiResponse
{
Code = code,
Msg = msg,
Data = null
};
}
}
/// <summary>
/// 分页响应
/// </summary>
/// <typeparam name="T">数据项类型</typeparam>
public class PaginatedResponse<T>
{
/// <summary>
/// 数据记录
/// </summary>
public List<T> Records { get; set; } = new();
/// <summary>
/// 当前页码
/// </summary>
public int Current { get; set; }
/// <summary>
/// 每页大小
/// </summary>
public int Size { get; set; }
/// <summary>
/// 总记录数
/// </summary>
public int Total { get; set; }
}