C# web api 自定义 ApiResult

1、结果枚举

namespace WebApi.Result
{
    public class ResultCodeEnum
    {
        public int Code { get; }
        public string Message { get; }

        // 私有建構子,防止外部 new
        private ResultCodeEnum(int code, string message)
        {
            Code = code;
            Message = message;
        }

        // ================= 常见状态 =================
        public static readonly ResultCodeEnum Success = new(200, "成功");
        public static readonly ResultCodeEnum Fail = new(201, "失败");
        public static readonly ResultCodeEnum ParamError = new(202, "参数不正确");
        public static readonly ResultCodeEnum ServiceError = new(203, "服务异常");
        public static readonly ResultCodeEnum DataError = new(204, "数据异常");
        public static readonly ResultCodeEnum IllegalRequest = new(205, "非法请求");
        public static readonly ResultCodeEnum RepeatSubmit = new(206, "重复提交");
        public static readonly ResultCodeEnum DeleteError = new(207, "请先删除子集");
        public static readonly ResultCodeEnum DeleteApartmentError = new(208, "请先删除房间");
        public static readonly ResultCodeEnum DeleteRoomError = new(209, "");
        public static readonly ResultCodeEnum UploadExcelError = new(210, "上传表格失败");
        // ================= 业务状态 =================
        public static readonly ResultCodeEnum AdminAccountExistError = new(301, "账号已存在");
        public static readonly ResultCodeEnum AdminCaptchaCodeError = new(302, "验证码错误");
        public static readonly ResultCodeEnum AdminCaptchaCodeExpired = new(303, "验证码已过期");
        public static readonly ResultCodeEnum AdminCaptchaCodeNotFound = new(304, "未输入验证码");

        public static readonly ResultCodeEnum AdminLoginAuth = new(305, "未登陆");
        public static readonly ResultCodeEnum AdminAccountNotExistError = new(306, "账号不存在");
        public static readonly ResultCodeEnum AdminAccountError = new(307, "用户名或密码错误");
        public static readonly ResultCodeEnum AdminAccountDisabledError = new(308, "该用户已被禁用");
        public static readonly ResultCodeEnum AdminAccessForbidden = new(309, "无访问权限");

        public static readonly ResultCodeEnum AppLoginAuth = new(501, "未登陆");
        public static readonly ResultCodeEnum AppLoginPhoneEmpty = new(502, "手机号码为空");
        public static readonly ResultCodeEnum AppLoginCodeEmpty = new(503, "验证码为空");
        public static readonly ResultCodeEnum AppSendSmsTooOften = new(504, "验证法发送过于频繁");
        public static readonly ResultCodeEnum AppLoginCodeExpired = new(505, "验证码已过期");
        public static readonly ResultCodeEnum AppLoginCodeError = new(506, "验证码错误");
        public static readonly ResultCodeEnum AppAccountDisabledError = new(507, "该用户已被禁用");

        public static readonly ResultCodeEnum TokenExpired = new(601, "token过期");
        public static readonly ResultCodeEnum TokenInvalid = new(602, "token非法");
    }
}

2、ApiResult

using SqlSugar;

namespace WebApi.Result
{
    public class ApiResult<T>
    {
        public bool Success { get; set; }
        public int Code { get; set; }
        public string Message { get; set; } = string.Empty;
        public T? Data { get; set; }

        // 成功
        public static ApiResult<T> Ok(T data)
        {
            return new ApiResult<T> { Success = true, Code = ResultCodeEnum.Success.Code, Message = ResultCodeEnum.Success.Message, Data = data };
        }

        // 失败
        public static ApiResult<T> Fail(ResultCodeEnum codeEnum)
        {
            return new ApiResult<T> { Success = false, Code = codeEnum.Code, Message = codeEnum.Message, Data = default };
        }
    }

    public class ApiResult : ApiResult<object>
    {
        // 成功
        public static ApiResult Ok()
        {
            return new ApiResult { Success = true, Code = ResultCodeEnum.Success.Code, Message = ResultCodeEnum.Success.Message };
        }

        // 失败
        public static new ApiResult Fail(ResultCodeEnum codeEnum)
        {
            return new ApiResult { Success = false, Code = codeEnum.Code, Message = codeEnum.Message };
        }

        // 失败
        public static ApiResult Fail(int code, string message)
        {
            return new ApiResult { Success = false, Code = code, Message = message };
        }
    }
}

3、分页

namespace WebApi.Result
{
    public class PagedResult<T>
    {
        // 当前页码
        public int PageIndex { get; set; }

        // 每页尺寸
        public int PageSize { get; set; }

        // 总数
        public int TotalCount { get; set; }

        // 总页码
        public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize);

        // 实际数据
        public List<T> Items { get; set; } = new List<T>();
    }
}

 

posted @ 2026-07-13 17:19  市丸银  阅读(4)  评论(0)    收藏  举报