package com.ycwl.basic.order.strategy;

import com.ycwl.basic.pricing.dto.ProductItem;
import lombok.Data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 重复购买检查上下文
 * 封装检查所需的所有参数
 */
@Data
public class DuplicateCheckContext {

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 景区ID
     */
    private String scenicId;

    /**
     * 商品类型代码
     */
    private String productType;

    /**
     * 商品ID（视频ID、套餐ID等）
     */
    private String productId;

    /**
     * 当前购物车中的所有商品
     */
    private List<ProductItem> products;

    /**
     * 额外参数（扩展用）
     */
    private Map<String, Object> additionalParams;

    public DuplicateCheckContext() {
        this.additionalParams = new HashMap<>();
    }

    /**
     * 添加额外参数
     */
    public void addParam(String key, Object value) {
        this.additionalParams.put(key, value);
    }

    /**
     * 获取额外参数
     */
    @SuppressWarnings("unchecked")
    public <T> T getParam(String key) {
        return (T) this.additionalParams.get(key);
    }
}
