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

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ta.pddserver.model.pddjy.request.JYBaseRequestModel;

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

@EqualsAndHashCode(callSuper = true)
@Data
public class PddServiceConsoReturnOrderQueryResponse extends JYBaseRequestModel implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 集运退件单信息（非必填）
     */
    private ConsoReturnOrderInfo consoReturnOrderInfo;


    /**
     * 集运退件单核心信息
     */
    @Data
    public static class ConsoReturnOrderInfo {
        /**
         * 服务商code（必填）
         */
        private String providerCode;

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

        /**
         * 逆向PT单号（必填）
         */
        private String orderCode;

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

        /**
         * 派送段（必填，固定为RETURNSELLER-退回卖家）
         */
        private String segmentCode;

        /**
         * 集运方式（非必填，ROAD：陆运；SEA：海运；AIR：空运，segmentCode=SENDTORECEVER时必填）
         * 注：当前场景segmentCode固定为RETURNSELLER，此字段可留空
         */
        private String consoType;

        /**
         * 派送类型（非必填，selfSite：自提点；selfCabinet：自提柜；homeDelivery：宅配，segmentCode=SENDTORECEVER时必填）
         * 注：当前场景segmentCode固定为RETURNSELLER，此字段可留空
         */
        private String deliveryType;

        /**
         * 自提点（柜）编码（非必填，deliveryType为selfSite或selfCabinet时必填）
         */
        private String stationCode;

        /**
         * 运单详情列表（必填，退件单关联的所有包裹都需返回）
         */
        private List<MailDetail> mailDetails;

        /**
         * 收货人详情（必填，此处为退件接收方信息）
         */
        private ReceiverDetail receiverDetail;

        /**
         * 运费详情（必填）
         */
        private FreightFeeDetail freightFeeDetail;

        /**
         * 退件单状态信息（必填）
         * <p>received：集运商系统已接收，未出库；has_outbound：出库完成</p>
         */
        private String orderStatus;

        /**
         * 拓展字段（非必填，JSON格式字符串，如{"key1":"value1","key2":"value2"}）
         */
        private String attributes;


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

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


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

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

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

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

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

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

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


        /**
         * 运费详情
         */
        @Data
        public static class FreightFeeDetail {
            /**
             * 支付交易订单号（必填）
             */
            private String payOrderId;

            /**
             * 支付时间（必填）
             */
            private String payTime;

            /**
             * 计费重量（必填，单位：克）
             */
            private Long weight;

            /**
             * 运费金额（必填）
             */
            private String freightPrice;

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

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

}
