package cn.superdesk.uniorder.openapi.api.order.request;

//import cn.superdesk.uniorder.common.json.deserializer.DateTimeConvertDeserializer;
//import cn.superdesk.uniorder.common.json.serializer.DateTimeConvertSerializer;
//import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
//import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import cn.superdesk.uniorder.common.security.sensitive.annotion.Desensitized;
import cn.superdesk.uniorder.common.security.sensitive.constants.SensitiveTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 2021/5/27 下午3:03
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/5/27 下午3:03
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@Data
public class MergeOrderReceiveParam implements Serializable {

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

	@ApiModelProperty("订单Id 业务方订单Id")
	private Long   orderId;//		必须
	@ApiModelProperty(value = "订单编号 业务方订单编号", required = true)
	private String orderSn;//		必须

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

	@ApiModelProperty("订单销售金额 (商品销售价 * 商品数量) 累加")
	private BigDecimal sellingAmount;//			必须
	@ApiModelProperty("订单成本金额 (商品成本价 * 商品数量) 累加")
	private BigDecimal costAmount;//		必须	商品成本价总和

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

	@ApiModelProperty("快递单号")
	private String  expressSn;//		非必须
	@ApiModelProperty("快递公司名称")
	private String  expressCompanyName;//		非必须	京东快递 顺丰快递
	@ApiModelProperty("快递类型")
	private Integer dispatchType;//		非必须	注:"0"代表无

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

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

	@ApiModelProperty(value = "订单状态", required = true)
	private Integer orderState;//		必须	"-1"已取消
	@ApiModelProperty(value = "订单状态名称", required = true)
	private String  orderStateName;//		必须

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

	//	@JsonSerialize(using = DateTimeConvertSerializer.class)
//	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	@ApiModelProperty(value = "下单时间", required = true)
	private Date createTime;// 必须	用户下单时间
	//	@JsonSerialize(using = DateTimeConvertSerializer.class)
//	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	@ApiModelProperty("支付时间")
	private Date payTime;//		非必须
	//	@JsonSerialize(using = DateTimeConvertSerializer.class)
//	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	@ApiModelProperty("发货时间")
	private Date sendTime;//		非必须
	//	@JsonSerialize(using = DateTimeConvertSerializer.class)
//	@JsonDeserialize(using = DateTimeConvertDeserializer.class)
	@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("备注")
	private String remark;//

	@ApiModelProperty(value = "商品信息 传null 或 size=0 直接结束 不作处理", required = true)
	private List<MergeOrderGoodsReceiveParam> goodsList;

	@ApiModelProperty(value = "杂费信息", required = false)
	private List<MergeOrderSundryFeeParam> sundryFeeList;
}
