package com.ycwl.basic.enums;

import lombok.Getter;

/**
 * @author songmingsong
 * @since 2022-11-23
 * 状态码定义
 */
@Getter
public enum BizCodeEnum {


    /* -------------------------------------*/
    /*                                      */
    /*        0:成功    1:失败                */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 成功
     */
    SUCCESS(0, "成功"),

    /**
     * 失败
     */
    FAIL(1, "失败"),
    /**
     * 异常
     */
    ERROR(-1, "异常"),

    /* -------------------------------------*/
    /*                                      */
    /*        200-550 服务器相关              */
    /*                                      */
    /* -------------------------------------*/
    /**
     * 无效请求
     */
    REQUEST_OK(200, "请求成功"),
    /**
     * 无效请求
     */
    BAD_REQUEST(400, "无效请求"),

    /**
     * 参数错误
     */
    PARAM_ERROR(400, "参数错误，缺少必要参数"),

    /**
     * 无效鉴权信息
     */
    UNAUTHORIZED(401, "无效授权信息"),

    /**
     * 登陆失效
     */
    TOKEN_INVALID(401, "登录失效，请重新登录"),

    /**
     * 无权访问此资源
     */
    FORBIDDEN(403, "无权访问此资源"),

    /**
     * 无效的访问地址
     */
    INVALID_URL(404, "无效的访问地址"),

    /**
     * 不支持的请求方式
     */
    NOT_SUPPORTED(405, "不支持的请求方式"),

    /**
     * 网络异常
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 数据完整性异常 数据过长  过短
     */
    LENGTH_REQUIRED(411, "数据完整性异常"),
    /**
     * 数据约束性异常
     */
    CONSTRAINT_EXCEPTION(412, "重复提交或者数据已存在"),


    /**
     * 数据格式错误
     */
    DATA_FORMAT_ERROR(415, "数据格式错误"),
    /**
     * 此地址暂不可使用
     */
    METHOD_FAILURE(420, "此地址暂不可使用"),
    /**
     * 账户已锁定
     */
    LOCKED(423, "账户已锁定，请联系客服"),

    /**
     * 请求过于频繁
     */
    TOO_MANY_REQUESTS(429, "请求过于频繁"),
    /**
     * 远程访问异常
     */
    REMOTE_ACCESS_EXCEPTION(430, " 访问远程主机时发生了异常"),
    /**
     * 错误的服务API
     */
    ERROR_SERVER_API(431, "错误的服务API"),
    /**
     * 错误的签名
     */
    ERROR_SIGN_ACCESS(432, "Access Sign Error"),


    /**
     * 无效鉴权信息
     */
    INVALID_REFRESH(433, "无效刷新信息"),

    /**
     * 服务器内部错误
     */
    SERVER_INTERNAL_ERROR(500, "服务器内部错误"),

    /**
     * 未知错误
     */
    SERVER_UNKONWN_ERROR(500, "未知错误"),


    /**
     * 暂不可服务
     */
    SERVICE_UNAVAILABLE(503, "暂不可服务"),
    /**
     * 需要认证
     */
    AUTHENTICATION_REQUIRED(511, "需要认证"),

    /**
     * 无数据
     */
    NO_DATA(512, "无数据"),
    /**
     * 存在关联数据
     */
    DATA_RELATION(513, "存在关联数据"),
    /**
     * 该数据已填写
     */
    DATA_COMPLETED(514, "该数据已填写"),
    /* -------------------------------------*/
    /*                                      */
    /*        600-619 登录相关业务码           */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 账号不存在
     */
    ACCOUNT_NON_EXISTENT(601, "账号不存在"),

    /**
     * 账号已存在
     */
    ACCOUNT_EXISTENT(602, "账号已存在"),

    /**
     * 账户密码错误
     */
    ACCOUNT_PASSWORD_ERROR(603, "用户名或密码不正确"),

    /**
     * 绵阳授权码错误
     */
    MYang_AUTHORIZATION_CODE_ERROR(6031, "授权码不正确"),

    /**
     * 手机号已绑定
     */
    TEL_IS_BIND(604, "手机号已绑定"),

    /**
     * 未绑定手机号
     */
    TEL_IS_NOT_BIND(605, "尚未绑定手机号,请先绑定手机号"),

    /**
     * 无效的登录类型
     */
    ERROR_LOGIN_CHANNEL(606, "无效的登录类型"),
    /**
     * token已过期
     */
    TOKEN_EXPIRED(608, "token已过期"),

    /**
     * 账户在其他地方登录
     */
    ACCOUNTS_IS_LOGGED_IN_ELSEWHERE(609, "登录失效,账号已在其他设备登录。"),

    /**
     * 第三方登录失败
     */
    THIRD_LOGIN_ERROR(610, "第三方登录失败"),

    /**
     * 不支持的登录方式
     */
    NOT_SUPPORT_LOGIN_CHANNEL(611, "暂不支持的登录方式"),

    /**
     * 需要登录后操作
     */
    NEED_LOGIN(612, "需要登录后操作"),

    /**
     * 尚未设置密码
     */
    LOGIN_PASSWORD_HAS_NOT_BEEN_SET(613, "账号或密码错误，请重新输入"),

    /**
     * 注册失败
     */
    REGISTER_FAIL(614, "注册失败"),

    /**
     * 连续登录错误达到阈值，请稍后再试
     */
    CONTINUOUS_LOGIN_ERROR(615, "错误密码输入次数过多，请%s分钟后再试"),

    APP_CONTINUOUS_LOGIN_ERROR(616, "错误密码输入次数过多，请%s分钟后再试"),

    /**
     * refreshToken已过期
     */
    REFRESH_TOKEN_EXPIRE(618, "refreshToken已过期"),

    CHANNEL_ERROR(619, "渠道错误"),


    /* -------------------------------------*/
    /*                                      */
    /*        620-639 验证码相关业务码         */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 验证码获取失败
     */
    VERIFY_CODE_FAIL(621, "验证码获取失败"),

    /**
     * 无效验证码
     */
    INVALID_VERIFY_CODE(622, "无效验证码"),

    /**
     * 验证码已使用
     */
    USED_VERIFY_CODE(623, "验证码已使用"),

    /**
     * 验证码已过期
     */
    EXPIRE_VERIFY_CODE(624, "验证码已失效，请重新输入"),

    /**
     * 没有输入验证码
     */
    NOT_HAS_VERIFY_CODE(625, "没有输入验证码"),

    /**
     * 错误的验证码
     */
    ERROR_VERIFY_CODE(626, "验证码错误，请重新输入"),


    /* -------------------------------------*/
    /*                                      */
    /*        640-659 角色相关业务码           */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 角色已存在
     */
    ROLE_EXIST(640, "角色已存在"),

    /**
     * 角色不存在
     */
    ROLE_NOT_EXIST(641, "角色不存在"),

    HAS_NOT_ROLE(642, "当前登录人没有角色"),


    /* -------------------------------------*/
    /*                                      */
    /*        660-679 文件相关业务码           */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 文件过大
     */
    FILE_TOO_LARGE(660, "文件过大"),

    /**
     * 不支持的文件类型
     */
    UNSUPPORTED_FILE_TYPE(661, "不支持的文件类型"),

    /**
     * 文件不存在
     */
    FILE_NOT_EXIST(662, "文件不存在"),
    /**
     * 文件上传失败
     */
    UPLOAD_FAILED(663, "文件上传失败"),

    /* -------------------------------------*/
    /*                                      */
    /*        7**           其他业务码        */
    /*                                      */
    /* -------------------------------------*/

    /**
     * 开始时间不能大于结束时间
     */
    TIME_FAIL(704, "%s开始时间需小于结束时间"),

    /**
     * 二维码获取失败
     */
    QR_CODE_GET_FAIL(705, "二维码获取失败"),

    /**
     * 有尚未完成的任务
     */
    TASK_IS_NOT_OVER(706, "有尚未完成的任务"),

    /**
     * 该记录已经审核
     */
    REMARK_IS_EXAMINE(707, "该记录已经审核"),

    /**
     * 只有管理员才能操作
     */
    SHOP_ONLY_MANAGER_HANDLE(708, "只有管理员才能操作"),

    /**
     * 群主不能被删除
     */
    EMCHAT_GROUP_DELETE_ERROR(709, "群主不能被删除"),

    /**
     * 存在重复数据
     */
    EMCHAT_REPEAT_ERROR(710, "存在重复数据"),

    /**
     * 姓名或手机号不能为空
     */
    NAME_PHONE_NOT_NULL(801, "姓名或手机号不能为空"),

    /**
     * 该手机号用户已存在
     */
    PHONE_EXIST(802, "该手机号用户已存在"),

    /**
     * 导出失败
     */
    EXPORT_FAIL(804, "导出失败"),

    /**
     * 当前资源路径已被占用
     */
    PATH_ALREADY_EXIST(805, "当前资源路径已被占用"),

    /**
     * 功能不能使用已有的菜单路径
     */
    FUNCTION_NOT_MAKE_MENU(806, "功能不能使用已有的菜单路径"),

    /**
     * 内置角色不能删除
     */
    BUILT_IN_ROLE_NOT_DELETE(807, "内置角色不能删除"),


    /* -------------------------------------*/
    /*                                      */
    /*        901-999 角色相关业务码           */
    /*                                      */
    /* -------------------------------------*/
    USER_ORGANIZATION(901, "该手机号不属于有效账号，请重新输入"),


    /* -------------------------------------*/
    /*                                      */
    /*        1000-1019 账号密码相关业务码      */
    /*                                      */
    /* -------------------------------------*/
    OLD_PSW_ERROR(1000, "原密码错误，请重新输入"),

    /* -------------------------------------*/
    /*                                      */
    /*        2000-2019 微信相关业务码      */
    /*                                      */
    /* -------------------------------------*/
    ADVANCE_PAYMENT_FAILED(2001, "预支付失败"),
    ADVANCE_PAYMENT_CALLBACK_FAILED(2002, "预支付回调失败"),
    ADVANCE_PAYMENT_REFUND_FAILED(2003, "退款失败"),
    ADVANCE_PAYMENT_CALLBACK_REFUND_FAILED(2004, "退款回调失败"),
    REQUEST_WECHAT_FAIL(2005, "请求微信服务器发生异常"),
    GOODS_NOT_EXIST(2006, "商品不存在");


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

    private Integer code;

    private String message;
}
