package cn.superdesk.uniorder.dto.receive.consumer.superdeskmall.proxyclient;

import cn.superdesk.uniorder.common.json.deserializer.DateTimeConvertDeserializer;
import cn.superdesk.uniorder.common.json.serializer.DateTimeConvertSerializer;
import cn.superdesk.uniorder.dto.receive.consumer.BaseReceiveParam;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @Description: 代客下单
 * @Author: linjinyu
 * @CreateDate: 2021/4/26 上午11:16
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/4/26 上午11:16
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class ProxyClientOrderReceiveParam extends BaseReceiveParam {

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

	private Long   orderId;//订单Id		必须	业务方订单Id
	private String orderSn;//订单编号		必须	业务方订单编号

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

	//
	private BigDecimal sellingAmount;//	销售金额		必须	商品销售价总和
	private BigDecimal costAmount;//成本金额		必须	商品成本价总和

	//
	private BigDecimal transportAmountVirt;//快递运费(客户承担)		非必须	客户承担的快递运费
	private BigDecimal transportAmountSale;//快递运费(商户承担)		非必须	商户承担的快递运费

	private String expressSn;//快递单号		非必须

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

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

	private Integer payState;//支付状态		必须	1-已付款,2-未付款
	private String  payStateName;//支付状态名称		必须

	private Integer orderState;//订单状态		必须	"-1"已取消
	private String  orderStateName;//订单状态名称		必须

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

	@JsonSerialize(using = DateTimeConvertSerializer.class)
	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	private Date createTime;//下单时间 必须	用户下单时间
	@JsonSerialize(using = DateTimeConvertSerializer.class)
	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	private Date payTime;//支付时间		非必须
	@JsonSerialize(using = DateTimeConvertSerializer.class)
	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	private Date sendTime;//发货时间		非必须
	@JsonSerialize(using = DateTimeConvertSerializer.class)
	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	private Date finishTime;//完成时间		非必须

	private Long   saleId;//商户Id		必须
	private String saleName;//	商户名称		必须

	private Long   purchaseOrgId;//	下单人项目Id		必须
	private String purchaseOrgName;//	下单人项目名称		必须
	private Long   purchaseVirtId;//	下单人企业Id		必须	游客身份无企业
	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;

	private String remark;// 备注

	private List<ProxyClientOrderGoodsReceiveParam> goodsList;//    商品信息 必须	传null直接结束,不作处理
}
