package com.ycwl.basic.constant;

/**
 * 购买状态枚举
 * 定义源文件的已购买和未购买两种状态
 *
 * @author Claude
 * @since 2025-10-31
 */
public enum BuyStatus {
    /**
     * 未购买状态
     */
    NOT_BOUGHT(0, "未购买"),

    /**
     * 已购买状态
     */
    BOUGHT(1, "已购买");

    private final int code;
    private final String description;

    BuyStatus(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据代码值获取枚举
     *
     * @param code 状态代码
     * @return 对应的枚举值，如果不存在返回 null
     */
    public static BuyStatus fromCode(int code) {
        for (BuyStatus status : values()) {
            if (status.code == code) {
                return status;
            }
        }
        return null;
    }

    /**
     * 判断给定的代码是否为已购买状态
     *
     * @param code 状态代码
     * @return true-已购买，false-未购买
     */
    public static boolean isBought(Integer code) {
        return code != null && code == BOUGHT.code;
    }

    /**
     * 判断给定的代码是否为未购买状态
     *
     * @param code 状态代码
     * @return true-未购买，false-已购买
     */
    public static boolean isNotBought(Integer code) {
        return code != null && code == NOT_BOUGHT.code;
    }
}
