package com.ycwl.basic.product.capability;

/**
 * 定价模式枚举
 * 定义商品的价格计算方式
 */
public enum PricingMode {

    /**
     * 固定价格（不受数量影响）
     * 适用于：视频类、照片集类商品
     */
    FIXED("FIXED", "固定价格"),

    /**
     * 基于数量（价格 = 单价 × 数量）
     * 适用于：打印类商品
     */
    QUANTITY_BASED("QUANTITY_BASED", "基于数量"),

    /**
     * 分层定价（根据数量区间）
     * 适用于：支持阶梯定价的商品
     */
    TIERED("TIERED", "分层定价");

    private final String code;
    private final String description;

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

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据代码获取枚举值
     */
    public static PricingMode fromCode(String code) {
        if (code == null) {
            return null;
        }
        for (PricingMode mode : PricingMode.values()) {
            if (mode.code.equals(code)) {
                return mode;
            }
        }
        throw new IllegalArgumentException("未知的定价模式: " + code);
    }
}
