package com.stdproject.common;

/**
 * 结果码枚举
 *
 * @author StdProject
 */
public enum ResultCode {

    /**
     * 成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 失败
     */
    ERROR(500, "操作失败"),

    /**
     * 参数错误
     */
    BAD_REQUEST(400, "参数错误"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源未找到
     */
    NOT_FOUND(404, "资源未找到"),

    /**
     * 方法不允许
     */
    METHOD_NOT_ALLOWED(405, "方法不允许"),

    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 用户名或密码错误
     */
    LOGIN_ERROR(1001, "用户名或密码错误"),

    /**
     * 用户已被禁用
     */
    USER_DISABLED(1002, "用户已被禁用"),

    /**
     * 用户已被锁定
     */
    USER_LOCKED(1003, "用户已被锁定"),

    /**
     * 密码已过期
     */
    PASSWORD_EXPIRED(1004, "密码已过期"),

    /**
     * 登录失败次数过多
     */
    LOGIN_FAILED_TOO_MANY(1005, "登录失败次数过多，账户已被锁定"),

    /**
     * Token无效
     */
    TOKEN_INVALID(1006, "Token无效"),

    /**
     * Token已过期
     */
    TOKEN_EXPIRED(1007, "Token已过期"),

    /**
     * 用户不存在
     */
    USER_NOT_FOUND(1008, "用户不存在"),

    /**
     * 用户名已存在
     */
    USERNAME_EXISTS(1009, "用户名已存在"),

    /**
     * 邮箱已存在
     */
    EMAIL_EXISTS(1010, "邮箱已存在"),

    /**
     * 手机号已存在
     */
    PHONE_EXISTS(1011, "手机号已存在"),

    /**
     * 角色不存在
     */
    ROLE_NOT_FOUND(1012, "角色不存在"),

    /**
     * 角色已存在
     */
    ROLE_EXISTS(1013, "角色已存在"),

    /**
     * 菜单不存在
     */
    MENU_NOT_FOUND(1014, "菜单不存在"),

    /**
     * 菜单已存在
     */
    MENU_EXISTS(1015, "菜单已存在"),

    /**
     * 组织不存在
     */
    ORGANIZATION_NOT_FOUND(1016, "组织不存在"),

    /**
     * 组织已存在
     */
    ORGANIZATION_EXISTS(1017, "组织已存在"),

    /**
     * 数据字典不存在
     */
    DICTIONARY_NOT_FOUND(1018, "数据字典不存在"),

    /**
     * 数据字典已存在
     */
    DICTIONARY_EXISTS(1019, "数据字典已存在"),

    /**
     * 文件上传失败
     */
    FILE_UPLOAD_ERROR(2001, "文件上传失败"),

    /**
     * 文件下载失败
     */
    FILE_DOWNLOAD_ERROR(2002, "文件下载失败"),

    /**
     * 文件不存在
     */
    FILE_NOT_FOUND(2003, "文件不存在"),

    /**
     * 文件格式不支持
     */
    FILE_FORMAT_NOT_SUPPORTED(2004, "文件格式不支持"),

    /**
     * 文件大小超出限制
     */
    FILE_SIZE_EXCEEDED(2005, "文件大小超出限制"),

    /**
     * 数据库操作失败
     */
    DATABASE_ERROR(3001, "数据库操作失败"),

    /**
     * 数据不存在
     */
    DATA_NOT_FOUND(3002, "数据不存在"),

    /**
     * 数据已存在
     */
    DATA_EXISTS(3003, "数据已存在"),

    /**
     * 数据完整性约束违反
     */
    DATA_INTEGRITY_VIOLATION(3004, "数据完整性约束违反"),

    /**
     * 系统繁忙
     */
    SYSTEM_BUSY(9001, "系统繁忙，请稍后重试"),

    /**
     * 系统维护中
     */
    SYSTEM_MAINTENANCE(9002, "系统维护中"),
    /**
     * 系统维护中
     */

    /**
     * 未知错误
     */
    UNKNOWN_ERROR(9999, "未知错误");

    private final Integer code;
    private final String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}