package com.ylx.order.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单派单记录表
 *
 * @author ylx
 */
@Data
@TableName(value = "t_order_dispatch", autoResultMap = true)
@ApiModel(value = "OrderDispatch", description = "订单派单记录表")
public class OrderDispatch implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID。
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("主键ID")
    private Long id;

    /**
     * 订单ID，关联订单表 t_order.id。
     */
    @ApiModelProperty("订单ID，关联t_order.id")
    private Long orderId;

    /**
     * 订单编号快照。
     */
    @ApiModelProperty("订单号快照")
    private String orderNo;

    /**
     * 被派单商户ID，关联商户表 ma_technician.id。
     */
    @ApiModelProperty("被派单商户ID，关联ma_technician.id")
    private Integer merchantId;

    /**
     * 派单时的商户姓名快照。
     */
    @ApiModelProperty("商户姓名快照")
    private String merchantName;

    /**
     * 派单时的商户昵称快照。
     */
    @ApiModelProperty("商户昵称快照")
    private String merchantNickName;

    /**
     * 派单时的商户手机号快照。
     */
    @ApiModelProperty("商户手机号快照")
    private String merchantPhone;

    /**
     * 派单时的商户头像快照。
     */
    @ApiModelProperty("商户头像快照")
    private String merchantAvatar;

    /**
     * 商户类型：0真实商户，1虚拟商户。
     */
    @ApiModelProperty("商户类型：0真实商户 1虚拟商户")
    private Integer merchantType;

    /**
     * 订单服务项目ID快照。
     */
    @ApiModelProperty("订单服务项目ID快照")
    private Long projectId;

    /**
     * 订单服务项目名称快照。
     */
    @ApiModelProperty("订单服务项目名称快照")
    private String projectName;

    /**
     * 服务类目ID快照。
     */
    @ApiModelProperty("服务类目ID快照")
    private Integer categoryId;

    /**
     * 派单城市编码快照。
     */
    @ApiModelProperty("派单城市编码快照")
    private String cityCode;

    /**
     * 用户下单纬度快照。
     */
    @ApiModelProperty("用户下单纬度快照")
    private BigDecimal userLatitude;

    /**
     * 用户下单经度快照。
     */
    @ApiModelProperty("用户下单经度快照")
    private BigDecimal userLongitude;

    /**
     * 派单时商户纬度快照。
     */
    @ApiModelProperty("商户纬度快照")
    private BigDecimal merchantLatitude;

    /**
     * 派单时商户经度快照。
     */
    @ApiModelProperty("商户经度快照")
    private BigDecimal merchantLongitude;

    /**
     * 派单时商户距离用户的直线距离，单位米。
     */
    @ApiModelProperty("派单时商户距离用户的直线距离，单位米")
    private BigDecimal distanceMeters;

    /**
     * 派单状态：1已派单待接单，2已接单，3已拒单，4已取消，5已转派。
     */
    @ApiModelProperty("派单状态：1已派单待接单 2已接单 3已拒单 4已取消 5已转派")
    private Integer dispatchStatus;

    /**
     * 派单来源：1后台手动，2系统自动。
     */
    @ApiModelProperty("派单来源：1后台手动 2系统自动")
    private Integer dispatchSource;

    /**
     * 是否当前有效派单：1是，NULL否。
     */
    @ApiModelProperty("是否当前有效派单：1是 NULL否")
    private Integer currentFlag;

    /**
     * 派单前订单状态。
     */
    @ApiModelProperty("派单前订单状态")
    private Integer orderStatusBefore;

    /**
     * 派单后订单状态。
     */
    @ApiModelProperty("派单后订单状态")
    private Integer orderStatusAfter;

    /**
     * 派单时间。
     */
    @ApiModelProperty("派单时间")
    private LocalDateTime dispatchTime;

    /**
     * 商户接单时间。
     */
    @ApiModelProperty("商户接单时间")
    private LocalDateTime acceptTime;

    /**
     * 商户拒单时间。
     */
    @ApiModelProperty("商户拒单时间")
    private LocalDateTime rejectTime;

    /**
     * 取消派单时间。
     */
    @ApiModelProperty("取消派单时间")
    private LocalDateTime cancelTime;

    /**
     * 商户拒单原因。
     */
    @ApiModelProperty("拒单原因")
    private String rejectReason;

    /**
     * 取消派单原因。
     */
    @ApiModelProperty("取消派单原因")
    private String cancelReason;

    /**
     * 派单备注。
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 后台操作人ID。
     */
    @ApiModelProperty("后台操作人ID")
    private Long operatorId;

    /**
     * 后台操作人名称。
     */
    @ApiModelProperty("后台操作人名称")
    private String operatorName;

    /**
     * 创建者。
     */
    @ApiModelProperty("创建者")
    private String createBy;

    /**
     * 创建时间。
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;

    /**
     * 更新者。
     */
    @ApiModelProperty("更新者")
    private String updateBy;

    /**
     * 更新时间。
     */
    @ApiModelProperty("更新时间")
    private LocalDateTime updateTime;

    /**
     * 删除标志：0存在，1删除。
     */
    @TableLogic
    @ApiModelProperty("删除标志：0存在 1删除")
    private Integer isDelete;
}
