
package com.tmerclub.cloud.api.delivery.dto;

import com.tmerclub.cloud.common.order.vo.SendNotifyBO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;

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

/**
 * 订单快递信息DTO
 *
 * @author tmerclub
 * @date 2020-12-07 15:10:00
 */
public class DeliveryOrderDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "deliveryOrderId")
    private Long deliveryOrderId;

    @NotNull(message = "订单号不能为空")
    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long orderId;

    @Schema(description = "订单地址id", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long orderAddrId;

    @Schema(description = "快递公司")
    private Long deliveryCompanyId;

    @Schema(description = "物流单号")
    private String deliveryNo;

    @NotNull(message = "发货方式不能为空")
    @Schema(description = "发货方式", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer deliveryType;

    @Schema(description = "用户id")
    private Long userId;

    @Schema(description = "收件人")
    private String consignee;

    @Schema(description = "收件人手机号")
    private String mobile;

    @Schema(description = "物流订单项")
    private List<DeliveryOrderItemDTO> selectOrderItems;

    @Schema(description = "网点id")
    private Long outletConfigId;

    @Schema(description = "打印机id")
    private Long printerId;

    @Schema(description = "快递公司类型")
    private Integer deliveryCompanyType;

    @Schema(description = "创建时间")
    private Date createTime;

    @Schema(description = "更新时间")
    private Date updateTime;

    @Schema(description = "消息内容")
    private SendNotifyBO sendNotifyBO;

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getConsignee() {
        return consignee;
    }

    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getDeliveryCompanyId() {
        return deliveryCompanyId;
    }

    public void setDeliveryCompanyId(Long deliveryCompanyId) {
        this.deliveryCompanyId = deliveryCompanyId;
    }

    public String getDeliveryNo() {
        return deliveryNo;
    }

    public void setDeliveryNo(String deliveryNo) {
        this.deliveryNo = deliveryNo;
    }

    public Integer getDeliveryType() {
        return deliveryType;
    }

    public void setDeliveryType(Integer deliveryType) {
        this.deliveryType = deliveryType;
    }

    public List<DeliveryOrderItemDTO> getSelectOrderItems() {
        return selectOrderItems;
    }

    public void setSelectOrderItems(List<DeliveryOrderItemDTO> selectOrderItems) {
        this.selectOrderItems = selectOrderItems;
    }

    public Long getDeliveryOrderId() {
        return deliveryOrderId;
    }

    public void setDeliveryOrderId(Long deliveryOrderId) {
        this.deliveryOrderId = deliveryOrderId;
    }

    public Long getOrderAddrId() {
        return orderAddrId;
    }

    public void setOrderAddrId(Long orderAddrId) {
        this.orderAddrId = orderAddrId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getOutletConfigId() {
        return outletConfigId;
    }

    public void setOutletConfigId(Long outletConfigId) {
        this.outletConfigId = outletConfigId;
    }

    public Long getPrinterId() {
        return printerId;
    }

    public void setPrinterId(Long printerId) {
        this.printerId = printerId;
    }

    public Integer getDeliveryCompanyType() {
        return deliveryCompanyType;
    }

    public void setDeliveryCompanyType(Integer deliveryCompanyType) {
        this.deliveryCompanyType = deliveryCompanyType;
    }

    public SendNotifyBO getSendNotifyBO() {
        return sendNotifyBO;
    }

    public void setSendNotifyBO(SendNotifyBO sendNotifyBO) {
        this.sendNotifyBO = sendNotifyBO;
    }

    @Override
    public String toString() {
        return "DeliveryOrderDTO{" +
                "deliveryOrderId=" + deliveryOrderId +
                ", orderId=" + orderId +
                ", orderAddrId=" + orderAddrId +
                ", deliveryCompanyId=" + deliveryCompanyId +
                ", deliveryNo='" + deliveryNo + '\'' +
                ", deliveryType=" + deliveryType +
                ", userId=" + userId +
                ", consignee='" + consignee + '\'' +
                ", mobile='" + mobile + '\'' +
                ", selectOrderItems=" + selectOrderItems +
                ", outletConfigId=" + outletConfigId +
                ", printerId=" + printerId +
                ", deliveryCompanyType=" + deliveryCompanyType +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                ", sendNotifyBO=" + sendNotifyBO +
                '}';
    }
}
