package backend.model.enums;

/**
 * 登录状态枚举类
 * 用final保证状态信息不可变，用static提供工具方法
 */
public enum LoginStatus {
    // 【任务3】枚举实例：状态码和描述
    // 成功登录
    SUCCESS(200,"登录成功"),
    // 密码错误
    PASSWORD_ERROR(901,"密码错误"),
    // 验证码错误
    CAPTCHA_ERROR(902,"验证码错误"),
    // 用户不存在
    USER_NOT_FOUND(903,"用户不存在"),
    //注册失败
    REGISTER_FAILED(904, "注册失败，用户名已存在"),
    //注册成功
    REGISTER_SUCCESS(905, "注册成功"),
    //两次输入密码不一致
    PASSWORD_NOT_MATCH(906, "两次输入的密码不一致");


    // 【任务1】定义 final修饰的属性：确保状态信息不可修改
    private final int code;
    private final String msg;



    /**
     * 【任务2】
     * 构造函数，用于创建LoginStatus实例
     * @param code 状态码
     * @param msg 状态消息
     */
    LoginStatus(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    // 静态方法：根据状态码获取枚举实例（static工具方法）
    /**
     * 【任务4】
     * 静态方法： getByCode 根据状态码获取对应的登录状态枚举值
     * @param code 状态码
     * @return LoginStatus 对应的LoginStatus枚举值，如果找不到匹配的状态码则返回null
     */
    public static LoginStatus getByCode(int code){
        for(LoginStatus status:values()){
            if(status.code==code){
                return status;
            }
        }
        return null;
    }

    // getter方法（final属性无需setter）
    /**
     * 【任务5】
     * 方法： getCode 获取code值
     *
     * @return int code值
     */
    public int getCode() {
        return code;
    }

    /**
     * 任务【6】
     * 方法： getMsg 获取消息内容
     *
     * @return String 返回当前对象的消息字符串
     */
    public String getMsg() {
        return msg;
    }
}

