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 PddServiceConsoUnpackNoticeRequest extends JYBaseRequestModel implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 用户识别码（必填）
     */
    private String buyerCode;

    /**
     * 集运方式（必填）
     * <p>FAST：快捷；NORMAL：标准；ROAD：集运陆运；SEA：集运海运；AIR：集运空运</p>
     */
    private String consoType;

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

    /**
     * 派送类型（必填）
     * <p>selfSite：自提点；selfCabinet：自提柜；homeDelivery：宅配</p>
     */
    private String deliveryType;

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

    /**
     * 合包单号（必填）
     */
    private String orderCode;

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

    /**
     * 收货人详情（必填，与后续出库通知收件信息一致，不可变更）
     */
    private ReceiverDetail receiverDetail;


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

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

        /**
         * 包裹对应的仓库编码（非必填）
         */
        private String consoWarehouseCode;
    }


    /**
     * 收货人详情
     */
    @Data
    public static class ReceiverDetail {
        /**
         * 收件人姓名（必填）
         */
        private String name;

        /**
         * 收件人证件号码（非必填）
         */
        private String idNumber;

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

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

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

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

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

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

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

}
