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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 小程序消费券展示结构，对齐 C 端 {@code DemoCoupon} 字段。
 *
 * @author jeesharp
 * @since 2026-05-07
 */
@Data
@Schema(description = "消费券卡包展示 VO")
public class CouponDemoVO {

    @Schema(description = "主键：模板场景为模板ID；已领券为实例ID")
    private String id;

    @Schema(description = "名称")
    private String name;

    @Schema(description = "副标题")
    private String subtitle;

    @Schema(description = "票面主文案")
    private String face;

    @Schema(description = "券类型中文：满减/折扣/兑换")
    private String couponType;

    @Schema(description = "门槛描述")
    private String threshold;

    @Schema(description = "适用范围标签")
    private List<String> scope;

    @Schema(description = "状态中文：可领取/已领取/已使用/已过期")
    private String status;

    @Schema(description = "有效期起（展示）")
    private String validFrom;

    @Schema(description = "有效期止（展示）")
    private String validTo;

    @Schema(description = "发放周期说明")
    private String issuePeriod;

    @Schema(description = "剩余名额，-1 表示不限")
    private Integer remainQuota;

    @Schema(description = "规则要点")
    private List<String> rules;

    @Schema(description = "叠加规则说明")
    private String stackRule;

    @Schema(description = "核销提示")
    private String verifyTip;

    @Schema(description = "发行方")
    private String issuer;

    @Schema(description = "用户券码（已领取后）")
    private String walletCode;

    @Schema(description = "领取方式：1-手动 2-自动 3-兑换")
    private Integer getType;

    @Schema(description = "领取方式名称")
    private String getTypeName;

    @Schema(description = "兑换所需积分（getType=3 时有效）")
    private Integer exchangePoints;

    @Schema(description = "使用场景编号：MALL/HOTEL/FOOD/SCENIC 等")
    private String sceneCode;
}
