package org.ta.pddserver.model.pddjy.request;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
public class PddServiceConsoOrderCreateRequest extends JYBaseRequestModel implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 服务商code（必填）
     */
    private String providerCode;

    /**
     * 集运仓code（必填）
     */
    private String consoWarehouseCode;

    /**
     * 集运单号（必填）
     */
    private String logisticsOrderCode;

    /**
     * 业务类型（必填，固定为CONSO-集运）
     */
    private String bizType;

    /**
     * 集运方式（必填，ROAD：陆运；SEA：海运；AIR：空运）
     */
    private String consoType;

    /**
     * 用户识别码（必填）
     */
    private String buyerCode;

    /**
     * 无主件识别码（必填）
     */
    private String dereRecogCode;

    /**
     * 包裹数量（必填）
     */
    private Long packageQuantity;

    /**
     * 运单详情列表（必填）
     */
    private List<MailDetail> mailDetails;

    /**
     * 商品列表（必填，目前只会有一个商品）
     */
    private List<Item> items;

    /**
     * 买家详情（必填）
     */
    private BuyerDetail buyerDetail;

    /**
     * 付款详情（非必填）
     */
    private PaymentDetail paymentDetail;

    /**
     * 订单标记列表（非必填，枚举值：FREE_SHIPPING-包邮订单；PARENT_CHILD_PACKAGE-子母件）
     */
    private List<String> tags;


    /**
     * 运单详情
     */
    @Data
    public static class MailDetail {
        /**
         * 快递公司编号（必填）
         */
        private String expressCode;

        /**
         * 运单号（必填）
         */
        private String mailNo;
    }


    /**
     * 商品信息
     */
    @Data
    public static class Item {
        /**
         * 商品ID（必填）
         */
        private String itemId;

        /**
         * 商品名称（必填）
         */
        private String itemName;

        /**
         * 类目id（必填）
         */
        private Long categoryId;

        /**
         * 类目名称（非必填）
         */
        private String categoryName;

        /**
         * 商品的实付金额（必填，默认人民币，单位：分）
         */
        private Long totalActualPayment;

        /**
         * 货币单位（非必填，CENT：分）
         */
        private String currencyUnit;

        /**
         * 币种（非必填，CNY：人民币）
         */
        private String currency;

        /**
         * 商品数量（必填）
         */
        private Integer itemQuantity;

        /**
         * 商品图片url（必填）
         */
        private String itemPicUrl;

        /**
         * sku属性描述（非必填，如”颜色分类黑色  尺寸：15寸”）
         */
        private String itemSkuProperty;

        /**
         * 是否带电（非必填）
         */
        private Boolean chargedStatus;

        /**
         * 商品类型（非必填，NORMAL-普货；SPECIAL-特货）
         */
        private String goodsType;

        /**
         * 是否带磁（非必填）
         */
        private Boolean magneticStatus;
    }


    /**
     * 买家详情
     */
    @Data
    public static class BuyerDetail {
        /**
         * 买家姓名（必填）
         */
        private String name;

        /**
         * 手机号/固定电话（必填）
         */
        private String telePhone;

        /**
         * 地区/国家（必填）
         */
        private String country;

        /**
         * 省（必填）
         */
        private String province;

        /**
         * 市（必填）
         */
        private String city;

        /**
         * 区（必填）
         */
        private String district;

        /**
         * 详细地址（必填）
         */
        private String detailAddress;

        /**
             * 邮编（非必填）
         */
        private String postCode;
    }


    /**
     * 付款详情
     */
    @Data
    public static class PaymentDetail {
        /**
         * 订单号（必填）
         */
        private String tradeOrderSn;

        /**
         * 订单实际支付价格（包括运费，必填，默认人民币，单位：分）
         */
        private Long tradeOrderValue;

        /**
         * 订单支付金额（订单原价+运费-平台优惠-店铺优惠-多多支付优惠，必填，默认人民币，单位：分）
         */
        private Long tradeOrderActualAmount;

        /**
         * 货币单位（非必填，CENT：分）
         */
        private String currencyUnit;

        /**
         * 币种（非必填，CNY：人民币）
         */
        private String currency;
    }
}
