package com.ycwl.basic.pricing.dto.resp;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 场景下可领取优惠券响应
 */
@Data
public class SceneCouponAvailableResp {

    /**
     * 优惠券ID
     */
    private Long couponId;

    /**
     * 优惠券名称
     */
    private String couponName;

    /**
     * 优惠券类型 (PERCENTAGE/FIXED_AMOUNT)
     */
    private String couponType;

    /**
     * 优惠值
     */
    private BigDecimal discountValue;

    /**
     * 最小使用金额
     */
    private BigDecimal minAmount;

    /**
     * 最大优惠金额
     */
    private BigDecimal maxDiscount;

    /**
     * 有效期起始
     */
    private Date validFrom;

    /**
     * 有效期结束
     */
    private Date validUntil;

    /**
     * 用户可领取数量限制（每人最多可领，null或0表示无限制）
     */
    private Integer userClaimLimit;

    /**
     * 用户已领取数量
     */
    private Integer userClaimedCount;

    /**
     * 用户剩余可领取数量（-1表示无限制，0表示已达上限）
     */
    private Integer userRemaining;

    /**
     * 是否可领取（综合判断：库存、用户限制、有效期等）
     */
    private Boolean canClaim;

    /**
     * 不可领取原因（当 canClaim=false 时）
     */
    private String cannotClaimReason;
}
