package cn.superdesk.uniorder.dto.receive.consumer.superdeskappservices.flashdeliver;

import cn.superdesk.uniorder.dto.receive.consumer.BaseReceiveParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description: kafka 服务之窗 楼闪送
 * @Author: linjinyu
 * @CreateDate: 2021/4/20 下午12:35
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/4/20 下午12:35
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class FlashDeliverOrderReceiveParam extends BaseReceiveParam {

	//	参数   名称 是否必须 说明
	@ApiModelProperty("来源编号 必须 与业务方协定的业务编号")
	private String serviceNo;
	@ApiModelProperty("来源名称 必须")
	private String serviceName;

	@ApiModelProperty("订单Id 必须 业务方订单Id")
	private Long   orderId;
	@ApiModelProperty("订单编号 必须 业务方订单编号")
	private String orderSn;

	@ApiModelProperty("订单总金额 必须 \"用户实际支付费用,含订单商品总价和其他费用所有的费用 订单总金额=商品总价+运费+杂费(小哥费)\"")
	private BigDecimal orderAmount;

	@ApiModelProperty("销售金额 必须 商品销售价总和")
	private BigDecimal sellingAmount;
	@ApiModelProperty("成本金额 必须 商品成本价总和")
	private BigDecimal costAmount;

	/**
	 * ①费用定义:
	 * ·用户配送费:用户支付的费用;
	 * ·打包费:用户打包的费用;
	 * ·商户配送费:商户需要支付给运营商的配送费,运营商与商户结算时需减掉商户配送费;
	 * ·配送员配送费:配送员配送费用,商户与配送员结算;
	 * ·目前商户无自配送业务,暂运营商无需结算商户自配送的费用给商户;
	 * <p>
	 * ②若有值需传值,无值即为传空,统一订单均解析为商品对账数据,费用字段数据需与业务方达成一致,统一订单需作数据标识,以便未来作主账单费用项细分;
	 * <p>
	 * ③用户配送费和打包费:此数据参与到统一订单对账中;
	 * <p>
	 * ④商户配送费和配送员配送费:
	 * ·此数据不参与到统一订单对账中,无需对账;
	 * ·此数据在统一订单仅作数据记录,不显示在"客户结算&供应商结算-未对账商品"列表中,未来有业务需要再根据业务调整;
	 **/
	@ApiModelProperty("快递运费(客户承担) 非必须 客户承担的快递运费")
	private BigDecimal transportAmountVirt;
	@ApiModelProperty("快递运费(商户承担) 非必须 商户承担的快递运费")
	private BigDecimal transportAmountSale;

	@ApiModelProperty("打包费 统一订单待补充字段")
	private BigDecimal packingAmount;
	// 客户/供应商都不结算
	@ApiModelProperty("商户配送费  统一订单待补充字段")
	private BigDecimal saleDeliveryAmount;
	// 客户/供应商都不结算
	@ApiModelProperty("配送员配送费 统一订单待补充字段 ")
	private BigDecimal deliveryPersonAmount;

	@ApiModelProperty("快递单号 非必须")
	private String expressSn;

	@ApiModelProperty("快递名 非必须 京东快递 顺丰快递")
	private String  dispatchName;
	@ApiModelProperty("快递类型 非必须 注:'0'代表无")
	private Integer dispatchType;

	@ApiModelProperty("支付方式 必须 1-款到发货,2-货到付款,3-月结")
	private Integer payType;
	@ApiModelProperty("支付方式名称 必须")
	private String  payTypeName;

	@ApiModelProperty("支付状态 必须 1-已付款,2-未付款")
	private Integer payState;
	@ApiModelProperty("支付状态名称 必须")
	private String  payStateName;

	@ApiModelProperty("订单状态 必须 '- 1' 已取消")
	private Integer orderState;
	@ApiModelProperty("订单状态名称 必须")
	private String  orderStateName;

	@ApiModelProperty("订单完成状态 必须  业务方归类订单状态推送完成状态:1-已完成;2-未完成;3-已取消/已作废/已删除;")
	private Integer completState;

	@ApiModelProperty("下单时间 必须 用户下单时间")
	private Date createTime;
	@ApiModelProperty("支付时间 非必须")
	private Date payTime;
	@ApiModelProperty("发货时间 非必须")
	private Date sendTime;
	@ApiModelProperty("完成时间 非必须")
	private Date finishTime;

	@ApiModelProperty("商户Id 必须")
	private Long   saleId;
	@ApiModelProperty("商户名称 必须")
	private String saleName;

	@ApiModelProperty("下单人项目Id 必须")
	private Long   purchaseOrgId;
	@ApiModelProperty("下单人项目名称 必须")
	private String purchaseOrgName;
	@ApiModelProperty("下单人企业Id 必须 游客身份无企业")
	private Long   purchaseVirtId;
	@ApiModelProperty("下单人企业名称 必须")
	private String purchaseVirtName;

	@ApiModelProperty("下单人Id 必须")
	private Long   purchaseUserId;
	@ApiModelProperty("下单人姓名 必须")
	private String purchaseUserName;
	@ApiModelProperty("下单人手机号 必须")
	private String purchasePhone;

	@ApiModelProperty("收货人Id 必须")
	private Long   recUserId;
	@ApiModelProperty("收货人姓名 必须")
	private String recUserName;
	@ApiModelProperty("收货人手机号 必须")
	private String recUserPhone;
	@ApiModelProperty("收货人地址 必须")
	private String recAddress;

	@ApiModelProperty("商品信息 必须 传null直接结束,不作处理")
	private List<FlashDeliverOrderGoodsReceiveParam> goodsList;


}
