package com.fs.erp.domain;

import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;


/**
 * weizou订单推送实体类
 */
@Data
@Accessors(chain = true)
public class WeizouApiPushOrderParam {

    /**
     * 来源系统 (云联固定17)
     */
    private Integer isFromOutSys = 17;

    /**
     * 状态 (固定值2 默认到审核)
     */
    private Integer status = 2;

    /**
     * 支付状态 0未收款 1已收款 2部分收款 按实际情况传
     */
    @NotNull(message = "支付状态不能为空")
    private Integer paid;

    /**
     * 收货人姓名
     */
    @NotNull(message = "收货人姓名不能为空")
    private String realName;

    /**
     * 收货人电话
     */
    @NotNull(message = "收货人电话不能为空")
    private String phone;

    /**
     * 详细地址
     */
    @NotNull(message = "详细地址不能为空")
    private String userAddress;

    /**
     * 运费金额
     */
    private BigDecimal freightPrice;

    /**
     * 支付方式
     * 网上付款（在线支付） 01 邮政快递， 02 顺丰快递 ，06 中通快递 ，07 圆通快递
     * 货到付款（托收） 03 邮政托收, 04 顺丰托收 , 08 中通托收 , 05 圆通托收
     */
    @NotNull(message = "支付方式不能为空")
    private String payType;

    /**
     * 已付金额
     */
    private BigDecimal payPrice;

    /**
     * 付款方式 01 网上付款, 02 货到付款
     */
    @NotNull(message = "付款方式不能为空")
    private String paymentType;

    /**
     * 备注
     */
    private String remark;

    /**
     * 制单人 (正式环境待提供)
     */

    private String createName;

    /**
     * 收货人所在省
     */
    @NotNull(message = "收货人所在省不能为空")
    private String province;

    /**
     * 收货人所在市
     */
    @NotNull(message = "收货人所在市不能为空")
    private String city;

    /**
     * 收货人所在区
     */
    @NotNull(message = "收货人所在区不能为空")
    private String district;

    /**
     * 地区邮编
     */
    private String postNumber;

    /**
     * 订单标签
     */
    private String orderLabel;

    /**
     * 定金
     */
    private BigDecimal precollection;

    /**
     * 优惠金额
     */
    private BigDecimal discountsAmount;

    /**
     * 快递公司 顺丰快递 邮政快递 中通快递 圆通快递
     */
    @NotNull(message = "快递公司不能为空")
    private String deliveryType;

    /**
     * 订单媒体
     */
    private String orderMedia;

    /**
     * 额外订单号 填写orderId!!!
     */
    @NotNull(message = "额外订单号不能为空")
    private String extendOrderId;

    /**
     * 表体商品列表
     */
    @NotNull(message = "商品列表不能为空")
    @Valid
    private List<WeizouOrderEntry> entryList;
}

