package cn.superdesk.uniorder.dto.receive.consumer.unified;

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

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


/**
 * @Description: topic : superdesk-app-transfer-receive_zhyj_order
 * 新增/更新
 * key : mergeReceiveZhyjOrder
 * <p>
 * 假定 现在用一个配送服务
 * 那么
 * 可能会有一个 商品叫 xxxx运费 销售价 10元 * 数量为1
 * 那么 这个订单 的 销售金额 就等于 (销售价 10元 * 数量为1 )= 10
 * 订单里边的运费字段 是 0
 * @Author: linjinyu
 * @CreateDate: 2020/11/30 下午12:11
 * @UpdateUser: linjinyu
 * @UpdateDate: 2020/11/30 下午12:11
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class OrderReceiveParam {


	// 必填 | 来源 编号 ZHYJ
	private String serviceNo;
	// 必填 | 来源 名称 智慧邮局
	private String serviceName;


	// 必填 | 业务系统 订单Id
	private Long   orderId;
	// 必填 | 业务系统 订单编号
	private String orderSn;


	// 必填 | 订单总金额
	private BigDecimal orderAmount;

	// 必填 | 订单 销售金额(只算商品)
	private BigDecimal sellingAmount;
	// 必填 | 订单 成本金额(只算商品)
	private BigDecimal costAmount;

	// 快递运费 客户承担
	private BigDecimal transportAmountVirt;
	// 快递运费 商户承担
	private BigDecimal transportAmountSale;

//	// 楼闪送
//	private BigDecimal TODO

	// 如果有别的金额项目请补充


	// 快递单号
	private String  expressSn;
	// 快递名 eg: 京东快递 顺丰快递
	private String  dispatchName;
	// 快递类型 不知道填个 0
	private Integer dispatchType;


	// 必填 | 支付方式 eg : 1-款到发货,2-货到付款,3-月结
	private Integer payType;        // 1
	private String  payTypeName;    // 款到发货
	// 必填 | 支付状态 eg : 1-已付款 2-未付款
	private Integer payState;       // 1
	private String  payStateName;   // 已付款
	// 必填 | 订单状态 eg : -1-已取消
	private Integer orderState;     // -1
	private String  orderStateName; // 已取消


	// 必填 | 下单时间
	private Date createTime;
	// 支付时间
	private Date payTime;
	// 发货时间
	private Date sendTime;
	// 完成时间
	private Date finishTime;


	// 订单完成状态
	// 已完成(1, "已完成"),
	// 未完成(2, "未完成"),
	// 已取消/已作废(3, "已取消/已作废"),
	private Integer completState;


	/**
	 * 必填 | 商户信息
	 */
	private Long   saleId;
	private String saleName;

	/**
	 * 必填 | 下单人信息
	 */
	// 下单人项目
	private Long   purchaseOrgId;
	private String purchaseOrgName;

	// 下单人企业
	private Long   purchaseVirtId;
	private String purchaseVirtName;

	@ApiModelProperty("下单人Id")
	private Long   purchaseUserId;
	@ApiModelProperty("下单人姓名")
	private String purchaseUserName;
	@ApiModelProperty("下单人联系电话")
	private String purchasePhone;

	/**
	 * 必填 | 代理人信息
	 */
	// 代理人
	private Long   agentUserId;
	private String agentAccount;
	private String agentUserName;
	private String agentPhone;



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

	/**
	 * 必填,如果goods为null 直接结束,不作处理
	 */
	private List<OrderGoodsReceiveParam> goodsList;
}
