package com.yami.shop.bean.app.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

@Data
public class OrderShopDto implements Serializable {

    @ApiModelProperty(value = "店铺id", required = true)
    private Long shopId;

    @ApiModelProperty(value = "店铺名称", required = true)
    private String shopName;

    @ApiModelProperty(value = "实际总额", required = true)
    private Double actualTotal;

    @ApiModelProperty(value = "商品总额", required = true)
    private Double total;

    @ApiModelProperty(value = "商品总数量", required = true)
    private Integer totalNum;

    @ApiModelProperty(value = "地址信息", required = true)
    private UserAddrDto userAddrDto;

    @ApiModelProperty(value = "支付方式", required = true)
    private Integer payType;

    @ApiModelProperty(value = "商品信息", required = true)
    private List<OrderItemDto> orderItemDtos;

    @ApiModelProperty(value = "运费", required = true)
    private Double transfee;

    @ApiModelProperty(value = "积分抵扣金额", required = true)
    private Double reduceAmount = 0.0;

    @ApiModelProperty(value = "订单使用积分", required = true)
    private Double totalUsableScore = 0.0;

    @ApiModelProperty(value = "可用总积分")
    private Long totalAvailableScore = 0L;

    @ApiModelProperty(value = "促销优惠金额", required = true)
    private Double discountMoney;

    @ApiModelProperty(value = "优惠券优惠金额", required = true)
    private Double couponMoney;

    @ApiModelProperty(value = "会员优惠金额", required = true)
    private Double memberDiscountAmount = 0.0;

    @ApiModelProperty(value = "会员优惠说明")
    private String memberDiscountDesc;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单创建时间", required = true)
    private Date createTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单付款时间")
    private Date payTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单发货时间")
    private Date dvyTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单完成时间")
    private Date fianllyTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单取消时间")
    private Date cancelTime;

    @ApiModelProperty(value = "订单取消原因")
    private String cancelReason;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "订单备注")
    private String remarks;

    @ApiModelProperty(value = "配送类型", required = true)
    private Integer dvyType;

    @ApiModelProperty(value = "物流单号")
    private String dvyFlowId;

    @ApiModelProperty(value = "物流公司名称")
    private String dvyName;

    @ApiModelProperty(value = "订单类型", required = true)
    private Integer orderType;

    @ApiModelProperty(value = "订单状态", required = true)
    private Integer status;

    @ApiModelProperty(value = "是否可退款", required = true)
    private Boolean canRefund = false;

    @ApiModelProperty(value = "是否可整单退款", required = true)
    private Boolean canAllRefund = false;

    @ApiModelProperty(value = "订单积分")
    private Integer orderScore = 0;

    @ApiModelProperty(value = "预计送达日期")
    private String estimatedTimeStr;

    @ApiModelProperty(value = "预计送达时间")
    private String estimatedTime;

    @ApiModelProperty(value = "评论状态")
    private Integer commSts;
}
