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);
    }
}
最近下载更多
欠踹de背影  LV25 6月30日
最代码官方  LV168 6月29日
最近浏览更多
locklock  LV2 4小时前
欠踹de背影  LV25 6月30日
Rommel  LV27 6月30日
interface  LV22 6月29日
最代码官方  LV168 6月29日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友