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

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * Single shop order summary used by order confirm.
 */
@Data
public class ShopCartOrderDto implements Serializable {

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

    @ApiModelProperty(value = "Shop name", required = true)
    private String shopName;

    @ApiModelProperty(value = "Actual total", required = true)
    private Double actualTotal;

    @ApiModelProperty(value = "Product total", required = true)
    private Double total;

    @ApiModelProperty(value = "Product count", required = true)
    private Integer totalCount;

    @ApiModelProperty(value = "Free shipping amount", required = true)
    private Double freeTransfee = 0.0;

    @ApiModelProperty(value = "Shipping fee", required = true)
    private Double transfee;

    @ApiModelProperty(value = "Promotion discount amount", required = true)
    private Double discountReduce;

    @ApiModelProperty(value = "Coupon discount amount", required = true)
    private Double couponReduce;

    @ApiModelProperty(value = "Score discount amount", required = true)
    private Double scoreReduce;

    @ApiModelProperty(value = "Used score", required = true)
    private Integer useScore;

    @ApiModelProperty(value = "Platform discount amount", required = true)
    private Double platformAmount;

    @ApiModelProperty(value = "Level discount amount", required = true)
    private Double levelReduce;

    @ApiModelProperty(value = "Member discount amount", required = true)
    private Double memberDiscountAmount = 0.0;

    @ApiModelProperty(value = "Member discount description")
    private String memberDiscountDesc;

    @ApiModelProperty(value = "Member benefit description for confirm page")
    private String memberBenefitDesc;

    @ApiModelProperty(value = "Member discount rate, 0.95 means 9.5 discount")
    private Double memberDiscountRate;

    @ApiModelProperty(value = "Shop total discount amount", required = true)
    private Double shopReduce = 0.0;

    @ApiModelProperty(value = "Order remarks", required = true)
    private String remarks;

    @ApiModelProperty(value = "Cart item discounts", required = true)
    private List<ShopCartItemDiscountDto> shopCartItemDiscounts;

    @ApiModelProperty(value = "Available coupons for the shop", required = true)
    private List<CouponOrderDto> coupons;

    @ApiModelProperty(value = "Order number", required = true)
    private String orderNumber;

    @ApiModelProperty(value = "Total weight")
    private Double totalWeight;
}
