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 PddServiceConsoOrderQueryResponse extends JYBaseRequestModel implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 集运单信息（非必填）
     */
    private ConsoOrderInfo consoOrderInfo;


    /**
     * 集运单核心信息
     */
    @Data
    public static class ConsoOrderInfo {
        /**
         * 服务商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;

        /**
         * 集运单状态信息（必填）
         * <p>received：集运商系统已接收，未签收</p>
         * <p>part_sign：集运单部分签收</p>
         * <p>all_sign：集运单全部签收</p>
         * <p>rejected：所有包裹拒签（部分拒签为received；含已签收为part_sign）</p>
         * <p>part_inbound：部分入库；all_inbound：全部入库；all_destroy：所有包裹销毁</p>
         */
        private String logisticsOrderStatus;

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


        /**
         * 运单详情
         */
        @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;
        }


        /**
         * 买家详情
         */
        @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;
        }


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

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

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

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