
package com.tmerclub.cloud.common.order.vo;

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

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author tmerclub
 * @date 2020/12/9
 */
public class CouponOrderVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "优惠券ID")
    private Long couponId;

    @Schema(description = "店铺ID")
    private Long shopId;

    @Schema(description = "优惠券名称")
    private String couponName;

    @Schema(description = "使用条件")
    private Long cashCondition;

    @Schema(description = "减免金额")
    private Long reduceAmount;

    @Schema(description = "折扣额度")
    private Double couponDiscount;

    @Schema(description = "开始时间")
    private Date startTime;

    @Schema(description = "结束时间")
    private Date endTime;

    @Schema(description = "指定的商品id")
    private List<Long> spuIds;

    @Schema(description = "适用商品类型 0全部商品参与 1指定商品参与")
    private Integer suitableProdType;

    @Schema(description = "是否可用")
    private Boolean canUse;

    @Schema(description = "是否选中")
    private Boolean isChoose;

    @Schema(description = "优惠类型 1:代金券 2:折扣券 3:兑换券")
    private Integer couponType;

    @Schema(description = "用户优惠券id")
    private Long couponUserId;

    /**
     * 使用该优惠券的订单id
     */
    private Long orderId;
    /**
     * 使用该优惠券的订单ids
     */
    private List<Long> orderIds;

    /**
     * 可用优惠券的商品实际金额
     */
    private Long prodCanUseCouponActualTotal;

    /**
     * 优惠券优惠金额
     */
    private Long couponReduce;

    public List<Long> getOrderIds() {
        return orderIds;
    }

    public void setOrderIds(List<Long> orderIds) {
        this.orderIds = orderIds;
    }

    public Long getCouponId() {
        return couponId;
    }

    public void setCouponId(Long couponId) {
        this.couponId = couponId;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getCouponName() {
        return couponName;
    }

    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    public Long getCashCondition() {
        return cashCondition;
    }

    public void setCashCondition(Long cashCondition) {
        this.cashCondition = cashCondition;
    }

    public Long getReduceAmount() {
        return reduceAmount;
    }

    public void setReduceAmount(Long reduceAmount) {
        this.reduceAmount = reduceAmount;
    }

    public Double getCouponDiscount() {
        return couponDiscount;
    }

    public void setCouponDiscount(Double couponDiscount) {
        this.couponDiscount = couponDiscount;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public List<Long> getSpuIds() {
        return spuIds;
    }

    public void setSpuIds(List<Long> spuIds) {
        this.spuIds = spuIds;
    }

    public Integer getSuitableProdType() {
        return suitableProdType;
    }

    public void setSuitableProdType(Integer suitableProdType) {
        this.suitableProdType = suitableProdType;
    }

    public Boolean getCanUse() {
        return canUse;
    }

    public void setCanUse(Boolean canUse) {
        this.canUse = canUse;
    }

    public Boolean getChoose() {
        return isChoose;
    }

    public void setChoose(Boolean choose) {
        isChoose = choose;
    }

    public Integer getCouponType() {
        return couponType;
    }

    public void setCouponType(Integer couponType) {
        this.couponType = couponType;
    }

    public Long getCouponUserId() {
        return couponUserId;
    }

    public void setCouponUserId(Long couponUserId) {
        this.couponUserId = couponUserId;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getProdCanUseCouponActualTotal() {
        return prodCanUseCouponActualTotal;
    }

    public void setProdCanUseCouponActualTotal(Long prodCanUseCouponActualTotal) {
        this.prodCanUseCouponActualTotal = prodCanUseCouponActualTotal;
    }

    public Long getCouponReduce() {
        return couponReduce;
    }

    public void setCouponReduce(Long couponReduce) {
        this.couponReduce = couponReduce;
    }

    @Override
    public String toString() {
        return "CouponOrderVO{" +
                "couponId=" + couponId +
                ", shopId=" + shopId +
                ", couponName='" + couponName + '\'' +
                ", cashCondition=" + cashCondition +
                ", reduceAmount=" + reduceAmount +
                ", couponDiscount=" + couponDiscount +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                ", spuIds=" + spuIds +
                ", suitableProdType=" + suitableProdType +
                ", canUse=" + canUse +
                ", isChoose=" + isChoose +
                ", couponType=" + couponType +
                ", couponUserId=" + couponUserId +
                ", orderId=" + orderId +
                ", orderIds=" + orderIds +
                '}';
    }
}
