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);
    }
}
最近下载更多
半夏bx  LV15 9月8日
唐僧洗头爱飘柔  LV22 7月10日
ewan007  LV30 7月2日
欠踹de背影  LV25 6月30日
最代码官方  LV168 6月29日
最近浏览更多
wyx065747  LV67 10月1日
Molly123  LV8 9月27日
arrce11 9月26日
暂无贡献等级
xxyylu  LV2 9月22日
xiaotao555555  LV3 9月21日
zhos0212  LV19 9月19日
Dominick  LV14 9月16日
梁小贤  LV1 9月12日
半夏bx  LV15 9月8日
kinggode  LV14 9月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友