package com.fs.erp.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单查询响应对象
 *
 * @author xdd
 * @version 1.0
 * @since 2025-02-27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderQueryResponseDTO {

    /**
     * 每页大小
     */
    private Integer pageSize;

    /**
     * 页码
     */
    private Integer pageIndex;

    /**
     * 总数据条数
     */
    private Integer dataCount;

    /**
     * 总页数
     */
    private Integer pageCount;

    /**
     * 是否有下一页
     */
    private Boolean hasNext;

    /**
     * 订单列表
     */
    private List<Order> orders;

    /**
     * 响应码
     */
    private Integer code;

    /**
     * 是否成功
     */
    private Boolean issuccess;

    /**
     * 响应信息
     */
    private String msg;

    /**
     * 请求ID
     */
    private String requestId;

    /**
     * 订单信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Order {
        /**
         * 公司订单ID
         */
        private Long coId;

        /**
         * 订单ID
         */
        private Long oId;

        /**
         * 店铺ID
         */
        private Long shopId;

        /**
         * 销售订单号
         */
        private String soId;

        /**
         * 下单时间
         */
        private String orderDate;

        /**
         * 店铺状态
         */
        private String shopStatus;

        /**
         * 问题类型
         */
        private String questionType;

        /**
         * 问题描述
         */
        private String questionDesc;

        /**
         * 订单状态
         */
        private String status;

        /**
         * 收件人国家
         */
        private String receiverCountry;

        /**
         * 收件人州/省
         */
        private String receiverState;

        /**
         * 收件人城市
         */
        private String receiverCity;

        /**
         * 收件人区域
         */
        private String receiverDistrict;

        /**
         * 收件人地址
         */
        private String receiverAddress;

        /**
         * 收件人镇/街道
         */
        private String receiverTown;

        /**
         * 收件人邮编
         */
        private String receiverZip;

        /**
         * 买家ID
         */
        private Long buyerId;

        /**
         * 发货日期
         */
        private String sendDate;

        /**
         * 支付金额
         */
        private BigDecimal payAmount;

        /**
         * 运费
         */
        private BigDecimal freight;

        /**
         * 转运费
         */
        private BigDecimal fFreight;

        /**
         * 重量
         */
        private BigDecimal weight;

        /**
         * 实际重量
         */
        private BigDecimal fWeight;

        /**
         * 买家留言
         */
        private String buyerMessage;

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

        /**
         * 发票抬头
         */
        private String invoiceTitle;

        /**
         * 是否货到付款
         */
        private Boolean isCod;

        /**
         * 订单类型
         */
        private String type;

        /**
         * 店铺站点
         */
        private String shopSite;

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

        /**
         * 实付金额
         */
        private BigDecimal paidAmount;

        /**
         * 支付时间
         */
        private String payDate;

        /**
         * 外部支付ID
         */
        private String outerPayId;

        /**
         * 修改时间
         */
        private String modified;

        /**
         * 订单来源
         */
        private String orderFrom;

        /**
         * 店铺名称
         */
        private String shopName;

        /**
         * 卖家标记
         */
        private String sellerFlag;

        /**
         * 计划发货日期
         */
        private String planDeliveryDate;

        /**
         * 物流公司编码
         */
        private String lcId;

        /**
         * 物流ID
         */
        private String lId;

        /**
         * 物流公司
         */
        private String logisticsCompany;

        /**
         * 折扣率
         */
        private BigDecimal discountRate;

        /**
         * 标签
         */
        private String tag;

        /**
         * 仓库订单ID
         */
        private Long wmsCoId;

        /**
         * 币种
         */
        private String currency;

        /**
         * 节点
         */
        private String node;

        /**
         * 标签列表
         */
        private String labels;

        /**
         * 订单金额
         */
        private BigDecimal amount;

        /**
         * 分销来源订单ID
         */
        private Long drpCoIdFrom;

        /**
         * 是否拆分
         */
        private Boolean isSplit;

        /**
         * 是否合并
         */
        private Boolean isMerge;

        /**
         * 创建人
         */
        private String creatorName;

        /**
         * 买家税号
         */
        private String buyerTaxNo;

        /**
         * 发票类型
         */
        private String invoiceType;

        /**
         * 签收时间
         */
        private String signTime;

        /**
         * SKU列表
         */
        private String skus;

        /**
         * 结束时间
         */
        private String endTime;

        /**
         * 收件人邮箱
         */
        private String receiverEmail;

        /**
         * 推荐人ID
         */
        private String referrerId;

        /**
         * 推荐人名称
         */
        private String referrerName;

        /**
         * 创建时间
         */
        private String created;

        /**
         * 物流单号
         */
        private String shipment;

        /**
         * 开放平台ID
         */
        private String openId;

        /**
         * 售后ID
         */
        private String outerAsId;

        /**
         * 时间戳
         */
        private Long ts;

        /**
         * 买家实付金额
         */
        private BigDecimal buyerPaidAmount;

        /**
         * 卖家实收金额
         */
        private BigDecimal sellerIncomeAmount;

        /**
         * 关联订单ID
         */
        private String linkOId;

        /**
         * 合并订单号
         */
        private String mergeSoId;

        /**
         * 外部订单号
         */
        private String outerSoId;

        /**
         * 分销目标订单ID
         */
        private Long drpCoIdTo;

        /**
         * 店铺买家ID
         */
        private String shopBuyerId;

        /**
         * 收件人姓名
         */
        private String receiverName;

        /**
         * 收件人手机
         */
        private String receiverMobile;

        /**
         * 收件人电话
         */
        private String receiverPhone;

        /**
         * 扩展数据
         */
        private String extDatas;

        /**
         * 售后ID
         */
        private String asId;

        /**
         * 原始订单号列表
         */
        private List<String> rawSoIds;

        /**
         * 未知ID
         */
        private String unLid;

        /**
         * 选择的物流渠道
         */
        private String chosenChannel;

        /**
         * 订单明细
         */
        private List<OrderItem> items;

        /**
         * 支付信息
         */
        private List<OrderPay> pays;

        /**
         * 分销来源
         */
        private String drpFrom;

        /**
         * 分销目标
         */
        private String drpTo;

        /**
         * 财务信息
         */
        private List<CbFinance> cbFinances;

        /**
         * 眼镜信息
         */
        private String glasses;
    }

    /**
     * 订单明细
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class OrderItem {
        /**
         * 订单明细ID
         */
        private Long oiId;

        /**
         * SKU ID
         */
        private String skuId;

        /**
         * 商品ID
         */
        private String iId;

        /**
         * 店铺SKU ID
         */
        private String shopSkuId;

        /**
         * 店铺商品ID
         */
        private String shopIId;

        /**
         * 商品属性
         */
        private String propertiesValue;

        /**
         * 商品金额
         */
        private BigDecimal amount;

        /**
         * 基础价格
         */
        private BigDecimal basePrice;

        /**
         * 数量
         */
        private Integer qty;

        /**
         * 商品名称
         */
        private String name;

        /**
         * 价格
         */
        private BigDecimal price;

        /**
         * 外部明细ID
         */
        private String outerOiId;

        /**
         * 退款ID
         */
        private String refundId;

        /**
         * 退款数量
         */
        private Integer refundQty;

        /**
         * 退款状态
         */
        private String refundStatus;

        /**
         * 原始订单号
         */
        private String rawSoId;

        /**
         * 是否预售
         */
        private Boolean isPresale;

        /**
         * 是否赠品
         */
        private Boolean isGift;

        /**
         * 商品状态
         */
        private String itemStatus;

        /**
         * 发货仓库
         */
        private Integer sendWarehouse;

        /**
         * 商品支付金额
         */
        private BigDecimal itemPayAmount;

        /**
         * 推荐人ID
         */
        private String referrerId;

        /**
         * 折扣率
         */
        private BigDecimal discountRate;

        /**
         * 商品图片
         */
        private String pic;

        /**
         * SKU类型
         */
        private String skuType;

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

        /**
         * 源组合SKU ID
         */
        private String srcCombineSkuId;

        /**
         * 商品扩展数据
         */
        private String itemExtData;

        /**
         * 买家实付金额
         */
        private BigDecimal buyerPaidAmount;

        /**
         * 卖家实收金额
         */
        private BigDecimal sellerIncomeAmount;

        /**
         * 订单ID
         */
        private Long oId;
    }

    /**
     * 支付信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class OrderPay {
        /**
         * 支付ID
         */
        private Long payId;

        /**
         * 外部支付ID
         */
        private String outerPayId;

        /**
         * 支付时间
         */
        private String payDate;

        /**
         * 支付金额
         */
        private BigDecimal amount;

        /**
         * 支付方式
         */
        private String payment;

        /**
         * 买家账号
         */
        private String buyerAccount;

        /**
         * 是否订单支付
         */
        private Boolean isOrderPay;

        /**
         * 支付状态
         */
        private String status;

        /**
         * 支付类型
         */
        private Integer payType;

        /**
         * 订单ID
         */
        private Long oId;
    }

    /**
     * 财务信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class CbFinance {
        /**
         * 订单ID
         */
        private Long oId;

        /**
         * 返点费用
         */
        private BigDecimal rebateFee;

        /**
         * 商品税费
         */
        private BigDecimal productTax;

        /**
         * 运费税费
         */
        private BigDecimal shippingTax;

        /**
         * 其他收入
         */
        private BigDecimal otherIncome;

        /**
         * 卖家代金券
         */
        private BigDecimal voucherFromSeller;

        /**
         * 平台佣金
         */
        private BigDecimal platformCommission;

        /**
         * 过渡费用
         */
        private BigDecimal transitionFee;

        /**
         * 交易费用
         */
        private BigDecimal transactionFee;

        /**
         * 不透明包装费
         */
        private BigDecimal opaqueBaggingFee;

        /**
         * 其他支出
         */
        private BigDecimal otherExpense;
    }
}
