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);
    }
}
最近下载更多
唐僧洗头爱飘柔  LV22 7月10日
ewan007  LV30 7月2日
欠踹de背影  LV25 6月30日
最代码官方  LV168 6月29日
最近浏览更多
gzxsvip  LV27 7月30日
260858883  LV5 7月25日
yimaoermao  LV1 7月25日
Mirage无衣 7月25日
暂无贡献等级
wonderfulvv  LV4 7月24日
hulewang  LV8 7月23日
笨小孩一号  LV22 7月22日
人间蒸发  LV23 7月14日
crazy11crazy  LV30 7月10日
唐僧洗头爱飘柔  LV22 7月10日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友