package com.rgzn.app.common;

/**
 * 统一API响应结果封装
 * @param <T> 数据类型
 */
public class ApiResponse<T> {
    /**
     * 成功状态码
     */
    public static final int CODE_SUCCESS = 200;

    /**
     * 失败状态码
     */
    public static final int CODE_FAILURE = 500;

    /**
     * 未授权状态码
     */
    public static final int CODE_UNAUTHORIZED = 401;

    /**
     * 禁止访问状态码
     */
    public static final int CODE_FORBIDDEN = 403;

    /**
     * 资源不存在状态码
     */
    public static final int CODE_NOT_FOUND = 404;

    /**
     * 参数错误状态码
     */
    public static final int CODE_BAD_REQUEST = 400;

    private int code;
    private String message;
    private T data;

    // 构造函数
    public ApiResponse(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    // Getters and Setters
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    /**
     * 创建成功响应
     * @param <T> 数据类型
     * @return 成功的响应对象
     */
    public static <T> ApiResponse<T> success() {
        return new ApiResponse<>(CODE_SUCCESS, "操作成功", null);
    }

    /**
     * 创建带数据的成功响应
     * @param data 响应数据
     * @param <T> 数据类型
     * @return 成功的响应对象
     */
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<>(CODE_SUCCESS, "操作成功", data);
    }

    /**
     * 创建带数据和自定义消息的成功响应
     * @param message 自定义消息
     * @param data 响应数据
     * @param <T> 数据类型
     * @return 成功的响应对象
     */
    public static <T> ApiResponse<T> success(String message, T data) {
        return new ApiResponse<>(CODE_SUCCESS, message, data);
    }

    /**
     * 创建失败响应
     * @param <T> 数据类型
     * @return 失败的响应对象
     */
    public static <T> ApiResponse<T> error() {
        return new ApiResponse<>(CODE_FAILURE, "操作失败", null);
    }

    /**
     * 创建带自定义消息的失败响应
     * @param message 自定义消息
     * @param <T> 数据类型
     * @return 失败的响应对象
     */
    public static <T> ApiResponse<T> error(String message) {
        return new ApiResponse<>(CODE_FAILURE, message, null);
    }

    /**
     * 创建带自定义状态码和消息的失败响应
     * @param code 自定义状态码
     * @param message 自定义消息
     * @param <T> 数据类型
     * @return 失败的响应对象
     */
    public static <T> ApiResponse<T> error(int code, String message) {
        return new ApiResponse<>(code, message, null);
    }

    /**
     * 创建带自定义状态码、消息和数据的失败响应
     * @param code 自定义状态码
     * @param message 自定义消息
     * @param data 响应数据
     * @param <T> 数据类型
     * @return 失败的响应对象
     */
    public static <T> ApiResponse<T> error(int code, String message, T data) {
        return new ApiResponse<>(code, message, data);
    }

    /**
     * 创建未授权响应
     * @param <T> 数据类型
     * @return 未授权的响应对象
     */
    public static <T> ApiResponse<T> unauthorized() {
        return new ApiResponse<>(CODE_UNAUTHORIZED, "未授权", null);
    }

    /**
     * 创建禁止访问响应
     * @param <T> 数据类型
     * @return 禁止访问的响应对象
     */
    public static <T> ApiResponse<T> forbidden() {
        return new ApiResponse<>(CODE_FORBIDDEN, "禁止访问", null);
    }

    /**
     * 创建资源不存在响应
     * @param <T> 数据类型
     * @return 资源不存在的响应对象
     */
    public static <T> ApiResponse<T> notFound() {
        return new ApiResponse<>(CODE_NOT_FOUND, "资源不存在", null);
    }

    /**
     * 创建参数错误响应
     * @param <T> 数据类型
     * @return 参数错误的响应对象
     */
    public static <T> ApiResponse<T> badRequest() {
        return new ApiResponse<>(CODE_BAD_REQUEST, "参数错误", null);
    }

    /**
     * 创建参数错误响应(带自定义消息)
     * @param message 自定义消息
     * @param <T> 数据类型
     * @return 参数错误的响应对象
     */
    public static <T> ApiResponse<T> badRequest(String message) {
        return new ApiResponse<>(CODE_BAD_REQUEST, message, null);
    }
}
最近下载更多
全栈小白  LV35 2025年11月19日
半夏bx  LV16 2025年9月8日
唐僧洗头爱飘柔  LV22 2025年7月10日
ewan007  LV30 2025年7月2日
欠踹de背影  LV25 2025年6月30日
最代码官方  LV168 2025年6月29日
最近浏览更多
14716825  LV1 1月2日
爱情戴罪的羔羊  LV7 2025年12月29日
tangdou1314 2025年12月26日
暂无贡献等级
jackcio  LV9 2025年12月23日
程序猿全敏  LV29 2025年12月23日
刘先生-OL  LV13 2025年12月22日
我们都是小怪兽  LV3 2025年12月22日
wanglinddad  LV55 2025年12月2日
zq1685  LV4 2025年11月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友