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 昨天
半夏bx  LV15 9月8日
唐僧洗头爱飘柔  LV22 7月10日
ewan007  LV30 7月2日
欠踹de背影  LV25 6月30日
最代码官方  LV168 6月29日
最近浏览更多
zhaixunfei  LV8 昨天
全栈小白  LV35 昨天
Hachi6  LV13 11月14日
jlmarket  LV22 11月13日
torqi-kiram  LV1 11月12日
马儿爱吃兰  LV10 11月8日
huming  LV4 11月4日
Coffee_冬孓  LV12 10月17日
sos0531  LV8 10月13日
310834626  LV3 10月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友