package xtools.boot.api.enums;

/**
 * <p>Title : ResultType</p>
 * <p>Description : ResultType</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/1/5 14:10
 */
public enum ResultType {


    // 请求成功
    OK(true, 200, "ok", "请求成功"),
    // 服务器内部错误
    INTERNAL_SERVER_ERROR(false, 500, "internal_server_error", "服务器内部错误"),

    // 请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空
    BAD_REQUEST(false, 400, "bad_request", "请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空"),
    // 认证失败
    UNAUTHORIZED(false, 401, "unauthorized", "认证失败"),
    // 权限不足
    FORBIDDEN(false, 403, "forbidden", "权限不足"),
    // 资源不存在
    NOT_FOUND(false, 404, "not_found", "资源不存在"),
    // 请求方法不被允许
    METHOD_NOT_ALLOWED(false, 405, "method_not_allowed", "请求方法不被允许"),
    // 请求过于频繁
    TOO_MANY_REQUESTS(false, 429, "too_many_requests", "请求过于频繁"),
    ;

    /**
     * 是否成功
     */
    private final boolean success;

    /**
     * 响应码
     */
    private final int code;

    /**
     * 响应信息
     */
    private final String msg;

    /**
     * 响应描述
     */
    private final String desc;

    ResultType(boolean success, int code, String msg, String desc) {
        this.success = success;
        this.code = code;
        this.msg = msg;
        this.desc = desc;
    }

    public boolean success() {
        return success;
    }

    public int code() {
        return code;
    }

    public String msg() {
        return msg;
    }

    public String desc() {
        return desc;
    }
}
