package com.jeesharp.business.modules.coupon.vo;

import com.jeesharp.business.modules.member.vo.MemberOrderDisplay;
import com.jeesharp.framework.pojo.vo.BaseInfoVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 会员优惠券详情 VO。
 *
 * @author jeesharp
 * @since 2026-05-07
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "会员优惠券详情")
public class MemberCouponInfoVO extends BaseInfoVO implements MemberOrderDisplay {

    private String couponSn;
    private String memberId;
    private String memberNo;
    @Schema(description = "会员姓名/昵称")
    private String memberNickname;
    private String memberMobile;
    private String templateId;
    private String couponCode;
    private String couponName;
    private Integer couponType;
    private String couponTypeName;
    private Integer discountType;
    private String discountTypeName;
    private BigDecimal discountValue;
    private BigDecimal minConsumeAmount;
    private BigDecimal maxDiscountAmount;
    private Integer getType;
    private String getTypeName;
    private LocalDateTime getDate;
    private String getSource;
    private String activityId;
    private Integer exchangePoints;
    private LocalDateTime validStartDate;
    private LocalDateTime validEndDate;
    private Integer status;
    private String statusName;
    private LocalDateTime useDate;
    private String useOrderId;
    private String useOrderNo;
    private BigDecimal useAmount;
    private BigDecimal orderAmount;
    private LocalDateTime returnDate;
    private String returnReason;
    private Integer isReturned;
    private LocalDateTime freezeDate;
    private String freezeReason;
    private String freezeOrderId;
    private LocalDateTime createDate;

    @Schema(description = "使用场景编号（发券快照）")
    private String sceneCode;

    @Schema(description = "使用场景名称")
    private String sceneName;

    @Schema(description = "使用范围：1-全场 2-商品 3-分类 4-品牌")
    private Integer useScope;

    @Schema(description = "适用范围展示名")
    private String useScopeName;
}
