89 lines
2.3 KiB
C#
89 lines
2.3 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
|
||
namespace Store.Framework.Models
|
||
{
|
||
public static class ResultCode
|
||
{
|
||
public const int Success = 200;
|
||
public const int Fail = 500;
|
||
|
||
public const int Unauthorized = 401;
|
||
public const int Forbidden = 403;
|
||
public const int NotFound = 404;
|
||
/// <summary>
|
||
/// 参数校验失败
|
||
/// </summary>
|
||
public const int ValidationError = 1001;
|
||
/// <summary>
|
||
/// 业务逻辑异常
|
||
/// </summary>
|
||
public const int BusinessError = 2001;
|
||
/// <summary>
|
||
/// 服务器内部错误
|
||
/// </summary>
|
||
public const int ServerError = 5000;
|
||
}
|
||
/// <summary>
|
||
/// 非泛型基类,用于统一处理
|
||
/// </summary>
|
||
public abstract class ApiResultBase
|
||
{
|
||
/// <summary>业务状态码</summary>
|
||
public int Code { get; set; } = ResultCode.Success;
|
||
|
||
/// <summary>提示信息</summary>
|
||
public string Msg { get; set; }
|
||
|
||
/// <summary>请求是否成功</summary>
|
||
public bool IsSuccess => Code == ResultCode.Success;
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 泛型响应
|
||
/// </summary>
|
||
public class ApiResult<T> : ApiResultBase
|
||
{
|
||
public T Data { get; set; }
|
||
|
||
public static ApiResult<T> Success(T data, string msg = "操作成功")
|
||
=> new ApiResult<T> { Code = ResultCode.Success, Data = data, Msg = msg };
|
||
|
||
public static ApiResult<T> Fail(string msg = "操作失败", int code = ResultCode.Fail, T data = default)
|
||
=> new ApiResult<T> { Code = code, Msg = msg, Data = data };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 无数据响应(等同于 ApiResult<object>)
|
||
/// </summary>
|
||
public class ApiResult : ApiResult<object>
|
||
{
|
||
public static ApiResult Success(string msg = "操作成功")
|
||
=> new ApiResult { Code = ResultCode.Success, Msg = msg };
|
||
|
||
public static ApiResult Fail(string msg = "操作失败", int code = ResultCode.Fail)
|
||
=> new ApiResult { Code = code, Msg = msg };
|
||
}
|
||
|
||
public class ApiPageResult<T>: ApiResult<T>
|
||
{
|
||
public long Total { get; set; }
|
||
public int PageIndex { get; set; }
|
||
public int PageSize { get; set; }
|
||
public int TotalPages => PageSize > 0 ? (int)Math.Ceiling((double)Total / PageSize) : 0;
|
||
public List<T> List { get; set; } = new();
|
||
public ApiPageResult() { }
|
||
|
||
public ApiPageResult(List<T> list, long total, int pageIndex, int pageSize)
|
||
{
|
||
List = list;
|
||
Total = total;
|
||
PageIndex = pageIndex;
|
||
PageSize = pageSize;
|
||
}
|
||
}
|
||
|
||
|
||
}
|