
package com.tmerclub.cloud.order.vo;

import com.tmerclub.cloud.common.order.vo.OrderItemVO;
import com.tmerclub.cloud.common.vo.BaseVO;
import com.tmerclub.cloud.api.payment.constant.PaySysType;
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 lhd
 * @date 2022-08-22 14:13:50
 */
public class OrderAndPreSaleVO extends BaseVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "订单ID")
    private Long orderId;

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

    @Schema(description = "用户ID")
    private Long userId;

    @Schema(description = "用户订单地址Id")
    private Long orderAddrId;

    @Schema(description = "店铺名称")
    private String shopName;

    /**
     * 支付系统类型
     *
     * @see PaySysType
     */
    @Schema(description = "支付系统类型 0默认 1通联")
    private Integer paySysType;

    @Schema(description = "总值")
    private Long total;

    @Schema(description = "实际总值")
    private Long actualTotal;

    @Schema(description = "订单使用积分")
    private Long orderScore;

    @Schema(description = "买家备注")
    private String remarks;

    @Schema(description = "卖家备注")
    private String shopRemarks;

    @Schema(description = "订单状态 1:待付款 2:待发货(待自提) 3:待收货(已发货) 5:成功 6:失败 7:待成团")
    private Integer status;

    @Schema(description = "支付方式 请参考枚举PayType")
    private Integer payType;

    @Schema(description = "配送类型 1:快递 2:自提 3：无需快递 4同城配送")
    private Integer deliveryType;

    @Schema(description = "订单类型1团购订单 2秒杀订单 3积分订单")
    private Integer orderType;

    @Schema(description = "订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易")
    private Integer closeType;

    @Schema(description = "订单商品总数")
    private Integer allCount;

    @Schema(description = "付款时间")
    private Date payTime;

    @Schema(description = "发货时间")
    private Date deliveryTime;

    @Schema(description = "完成时间")
    private Date finallyTime;

    @Schema(description = "取消时间")
    private Date cancelTime;

    @Schema(description = "预售发货时间")
    private Date bookTime;

    @Schema(description = "是否已支付，1.已支付0.未支付")
    private Integer isPayed;

    @Schema(description = "用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除")
    private Integer deleteStatus;

    @Schema(description = "订单退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）")
    private Integer refundStatus;

    @Schema(description = "订单运费")
    private Long freightAmount;

    @Schema(description = "积分抵扣金额")
    private Long scoreAmount;

    @Schema(description = "会员折扣金额")
    private Long memberAmount;

    @Schema(description = "平台优惠券优惠金额")
    private Long platformCouponAmount;

    @Schema(description = "商家优惠券优惠金额")
    private Long shopCouponAmount;

    @Schema(description = "满减优惠金额")
    private Long discountAmount;

    @Schema(description = "平台优惠金额")
    private Long platformAmount;

    @Schema(description = "平台运费减免金额")
    private Long platformFreeFreightAmount;

    @Schema(description = "优惠总额")
    private Long reduceAmount;

    @Schema(description = "供应商id")
    private Long supplierId;

    @Schema(description = "供应商商品发货方式 1.供应商发货 2.仓库发货")
    private Integer supplierDeliveryType;

    @Schema(description = "定金金额")
    private Long depositAmount;
    @Schema(description = "尾款金额")
    private Long balanceAmount;

    @Schema(description = "预售类型  -1：未开启 0.全款预售 1.定金预售")
    private Integer preSaleType;

    @Schema(description = "订单项")
    private List<OrderItemVO> orderItems;

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public Integer getSupplierDeliveryType() {
        return supplierDeliveryType;
    }

    public void setSupplierDeliveryType(Integer supplierDeliveryType) {
        this.supplierDeliveryType = supplierDeliveryType;
    }

    public List<OrderItemVO> getOrderItems() {
        return orderItems;
    }

    public void setOrderItems(List<OrderItemVO> orderItems) {
        this.orderItems = orderItems;
    }

    public Integer getPaySysType() {
        return paySysType;
    }

    public void setPaySysType(Integer paySysType) {
        this.paySysType = paySysType;
    }

    public Integer getPreSaleType() {
        return preSaleType;
    }

    public void setPreSaleType(Integer preSaleType) {
        this.preSaleType = preSaleType;
    }

    public Long getBalanceAmount() {
        return balanceAmount;
    }

    public void setBalanceAmount(Long balanceAmount) {
        this.balanceAmount = balanceAmount;
    }

    public Long getDepositAmount() {
        return depositAmount;
    }

    public void setDepositAmount(Long depositAmount) {
        this.depositAmount = depositAmount;
    }

    public Long getPlatformFreeFreightAmount() {
        return platformFreeFreightAmount;
    }

    public void setPlatformFreeFreightAmount(Long platformFreeFreightAmount) {
        this.platformFreeFreightAmount = platformFreeFreightAmount;
    }

    public Long getOrderId() {
        return orderId;
    }

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

    public Long getShopId() {
        return shopId;
    }

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

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getOrderAddrId() {
        return orderAddrId;
    }

    public void setOrderAddrId(Long orderAddrId) {
        this.orderAddrId = orderAddrId;
    }

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public Long getActualTotal() {
        return actualTotal;
    }

    public void setActualTotal(Long actualTotal) {
        this.actualTotal = actualTotal;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getShopRemarks() {
        return shopRemarks;
    }

    public void setShopRemarks(String shopRemarks) {
        this.shopRemarks = shopRemarks;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getDeliveryType() {
        return deliveryType;
    }

    public void setDeliveryType(Integer deliveryType) {
        this.deliveryType = deliveryType;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Integer getCloseType() {
        return closeType;
    }

    public void setCloseType(Integer closeType) {
        this.closeType = closeType;
    }

    public Integer getAllCount() {
        return allCount;
    }

    public void setAllCount(Integer allCount) {
        this.allCount = allCount;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Date getDeliveryTime() {
        return deliveryTime;
    }

    public void setDeliveryTime(Date deliveryTime) {
        this.deliveryTime = deliveryTime;
    }

    public Date getFinallyTime() {
        return finallyTime;
    }

    public void setFinallyTime(Date finallyTime) {
        this.finallyTime = finallyTime;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public Date getBookTime() {
        return bookTime;
    }

    public void setBookTime(Date bookTime) {
        this.bookTime = bookTime;
    }

    public Integer getIsPayed() {
        return isPayed;
    }

    public void setIsPayed(Integer isPayed) {
        this.isPayed = isPayed;
    }

    public Integer getDeleteStatus() {
        return deleteStatus;
    }

    public void setDeleteStatus(Integer deleteStatus) {
        this.deleteStatus = deleteStatus;
    }

    public Integer getRefundStatus() {
        return refundStatus;
    }

    public void setRefundStatus(Integer refundStatus) {
        this.refundStatus = refundStatus;
    }

    public Long getFreightAmount() {
        return freightAmount;
    }

    public void setFreightAmount(Long freightAmount) {
        this.freightAmount = freightAmount;
    }

    public Long getScoreAmount() {
        return scoreAmount;
    }

    public void setScoreAmount(Long scoreAmount) {
        this.scoreAmount = scoreAmount;
    }

    public Long getMemberAmount() {
        return memberAmount;
    }

    public void setMemberAmount(Long memberAmount) {
        this.memberAmount = memberAmount;
    }

    public Long getPlatformCouponAmount() {
        return platformCouponAmount;
    }

    public void setPlatformCouponAmount(Long platformCouponAmount) {
        this.platformCouponAmount = platformCouponAmount;
    }

    public Long getShopCouponAmount() {
        return shopCouponAmount;
    }

    public void setShopCouponAmount(Long shopCouponAmount) {
        this.shopCouponAmount = shopCouponAmount;
    }

    public Long getDiscountAmount() {
        return discountAmount;
    }

    public void setDiscountAmount(Long discountAmount) {
        this.discountAmount = discountAmount;
    }

    public Long getPlatformAmount() {
        return platformAmount;
    }

    public void setPlatformAmount(Long platformAmount) {
        this.platformAmount = platformAmount;
    }

    public Long getReduceAmount() {
        return reduceAmount;
    }

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


    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Long getOrderScore() {
        return orderScore;
    }

    public void setOrderScore(Long orderScore) {
        this.orderScore = orderScore;
    }

    @Override
    public String toString() {
        return "OrderAndPreSaleVO{" +
                "orderId=" + orderId +
                ", shopId=" + shopId +
                ", userId=" + userId +
                ", orderAddrId=" + orderAddrId +
                ", shopName='" + shopName + '\'' +
                ", paySysType=" + paySysType +
                ", total=" + total +
                ", actualTotal=" + actualTotal +
                ", orderScore=" + orderScore +
                ", remarks='" + remarks + '\'' +
                ", shopRemarks='" + shopRemarks + '\'' +
                ", status=" + status +
                ", payType=" + payType +
                ", deliveryType=" + deliveryType +
                ", orderType=" + orderType +
                ", closeType=" + closeType +
                ", allCount=" + allCount +
                ", payTime=" + payTime +
                ", deliveryTime=" + deliveryTime +
                ", finallyTime=" + finallyTime +
                ", cancelTime=" + cancelTime +
                ", bookTime=" + bookTime +
                ", isPayed=" + isPayed +
                ", deleteStatus=" + deleteStatus +
                ", refundStatus=" + refundStatus +
                ", freightAmount=" + freightAmount +
                ", scoreAmount=" + scoreAmount +
                ", memberAmount=" + memberAmount +
                ", platformCouponAmount=" + platformCouponAmount +
                ", shopCouponAmount=" + shopCouponAmount +
                ", discountAmount=" + discountAmount +
                ", platformAmount=" + platformAmount +
                ", platformFreeFreightAmount=" + platformFreeFreightAmount +
                ", reduceAmount=" + reduceAmount +
                ", supplierId=" + supplierId +
                ", supplierDeliveryType=" + supplierDeliveryType +
                ", depositAmount=" + depositAmount +
                ", balanceAmount=" + balanceAmount +
                ", preSaleType=" + preSaleType +
                ", orderItems=" + orderItems +
                '}';
    }
}
