package cn.iocoder.boot.module.order.api.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderRespDTO {
    /**
     * 主键ID
     */
    private Long orderId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 快递单号
     */
    private String number;
    /**
     * 运输方式id
     */
    private Integer transportId;
    /**
     * 渠道ID
     */
    private Long channelId;
    /**
     * 订单类型(可多选)：1 集运服务 2 海外仓
     */
    private String type;

    /**
     * 下单会员id
     */
    private Long userId;

    /**
     * 订单状态详情见字典
     */
    private Integer status;

    /**
     * 订单异常状态(字典 order_abnormal_state)
     */
    private Integer abnormalState;

    /**
     * 订单入仓状态(字典 order_warehouse_in_status)
     */
    private Integer inWarehouseState;

    /**
     * 订单出货状态(字典 order_shipment_state)
     */
    private Integer shipmentState;

    /**
     * 上次订单主状态值
     */
    private Integer oldStatus;

    /**
     * 上次订单入仓状态值
     */
    private Integer oldInWarehouseState;

    /**
     * 上次订单出货状态值
     */
    private Integer oldShipmentState;

    /**
     * 是否被删掉 1 删掉；0正常
     */
    private Boolean isDel;
    /**
     * 订单归属客户id
     */
    private Long customerId;

    @ApiModelProperty(value = "付款人： 1 发货人 2 收货人 3 自定义")
    private Integer drawee;

    @ApiModelProperty(value = "自定义付款人信息")
    private String customDrawee;

    @ApiModelProperty(value = "打包前入仓重量")
    private BigDecimal weightBeforePack;

    @ApiModelProperty(value = "打包后入仓重量")
    private BigDecimal weightAfterPack;

    @ApiModelProperty(value = "是否有收货人，1-是，0-否")
    private Boolean hasConsignee = true;

    @ApiModelProperty(value = "目的地信息")
    private OrderObjectiveApiDO orderObjectiveDO;

    @ApiModelProperty(value = "发货人信息")
    private OrderConsignorApiDO orderConsignorDO;

    @ApiModelProperty(value = "收货人信息")
    private OrderConsigneeApiDO orderConsigneeDO;

    @ApiModelProperty(value = "目的地ID")
    private Long objectiveId;

    @ApiModelProperty(value = "目的地")
    private String objectiveName;

}
