package com.yami.shop.delivery.comment.api.paotui.model.request;

import com.yami.shop.delivery.comment.api.paotui.model.Base;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddWithoutShopRequest extends Base {

    private Integer dispatch_mode = 3;          // 发单模式: 1.省钱 2.最快 3.指派 4.价格从低到高依次呼叫
    private String logistic = "shunfeng";                  // 指派模式配送方 (如: uupt 或 dada,uupt)
    private String shop_id;                    // 你方门店ID
    private String shop_name;                    // 店铺名称
    private String origin_id;                  // 你方配送单号
    private final String order_source = "other";               // 订单来源
    private String source_order_no;             // 订单来源单号（美团必传）
    private String order_sn;                   // 订单流水号 (0~99999以内数字)
    private Integer is_subscribe = 0;          // 是否预约单: 0 否, 1 是
    private Long subscribe_time;        // 期望预约送达时间 (Unix时间戳)
    private Long city;        // 我方城市编码
    private Long district;        // 我方区县编码
    private Double sender_longitude;        // 发件人经度
    private Double sender_latitude;        // 发件人纬度
    private String sender_address;        // 发件人地址
    private String sender_phone;        // 发件人手机号
    private String receiver_longitude;         // 收件人经度
    private String receiver_latitude;          // 收件人纬度
    private String receiver_address;           // 收件人地址
    private String receiver_address_detail;     // 收件人详细地址
    private String receiver_name;              // 收件人姓名
    private String receiver_phone;             // 收件人手机号
    private List<Goods> goods;                // 物品详细信息
    private Integer goods_value = 1000;               // 物品价值 (单位: 分)
    private Integer goods_weight = 1;              // 物品重量 (单位: kg)
    private Integer goods_category = 5;            // 物品类型
    private Integer map_type = 1;                  // 坐标类型 (1: 高德, 2: 百度)
    private String callback_url = "/delivery/notice/put";               // 订单配送状态回调地址
    private String orderRemark;               // 订单备注
    private Integer returnPrice = 0;          // 是否返回运费信息: 0-不返回, 1-返回
    private String dispatchOther = "0";       // 指派时兜底配送方 (如: uupt 或 dada,uupt)
    private Integer delayDelivery = 0;        // 延迟发单 (分钟)
    private Integer autoTips = 0;             // 是否开启自动加小费: 0 关闭, 1 开启
    private Integer autoTipAmount = 0;        // 小费金额 (单位: 元)
    private Integer preTipAmount = 0;         // 下单前加小费金额 (单位: 元)
    private Integer maxDeliveryAmount = 0;    // 限制最大配送金额 (单位: 元)

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Goods {
        private String name;                 // 物品名称
        private Integer number;              // 物品数量
        private Integer price;               // 物品单价 (单位: 分)
        private Integer total;               // 物品总价 (单位: 分)
    }
}
