package com.ycwl.basic.pricing.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 价格计算结果DTO
 */
@Data
public class PriceCalculationResult {
    
    /**
     * 原始金额（用于前端展示的总原价）
     */
    private BigDecimal originalAmount;
    
    /**
     * 商品小计金额（按实际计算价格）
     */
    private BigDecimal subtotalAmount;
    
    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;
    
    /**
     * 最终金额
     */
    private BigDecimal finalAmount;
    
    /**
     * 使用的优惠券信息
     */
    private CouponInfo usedCoupon;
    
    /**
     * 使用的券码信息
     */
    private VoucherInfo usedVoucher;
    
    /**
     * 折扣明细列表（包含限时立减、优惠券、券码、一口价等）
     */
    private List<DiscountDetail> discountDetails;
    
    /**
     * 可用但未使用的优惠列表（预览时使用）
     */
    private List<DiscountInfo> availableDiscounts;
    
    /**
     * 商品明细列表
     */
    private List<ProductItem> productDetails;

    /**
     * 是否已购买标识（结合商品重复购买策略判断）
     * true: 至少有一个不允许重复购买的商品（DuplicateCheckStrategy != NO_CHECK）的 quantity > 0
     * false: 所有不允许重复购买的商品的 quantity 都为 0 或 null
     *
     * 说明：
     * - 对于允许重复购买的商品（如打印类，策略为 NO_CHECK），即使 quantity > 0 也不影响此标识
     * - 对于需要检查的商品（UNIQUE_RESOURCE、PARENT_RESOURCE），quantity > 0 表示已购买
     */
    private Boolean isPurchased;
}