package com.tourism.webadmin.back.vo;

import com.tourism.common.core.base.vo.BaseVo;
import com.tourism.webadmin.upms.model.SysUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * 包车订单VO视图对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "包车订单VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class TourCarOrderVo extends BaseVo {

    /**
     * id。
     */
    @Schema(description = "id")
    private String id;

    /**
     * 订单号。
     */
    @Schema(description = "订单号")
    private String orderNo;

    /**
     * 包车车型id。
     */
    @Schema(description = "包车车型id")
    private Long categoryId;

    /**
     * 司机id。
     */
    @Schema(description = "司机id")
    private Long driverId;

    /**
     * 开始时间。
     */
    @Schema(description = "开始时间")
    private Date startTime;

    /**
     * 结束时间。
     */
    @Schema(description = "结束时间")
    private Date endTime;

    /**
     * 包车天数。
     */
    @Schema(description = "包车天数")
    private Integer days;

    /**
     * 起点。
     */
    @Schema(description = "起点")
    private Long startPlaceId;

    /**
     * 联系电话。
     */
    @Schema(description = "联系电话")
    private String connectPhone;

    /**
     * 联系姓名。
     */
    @Schema(description = "联系姓名")
    private String connectName;

    /**
     * 联系人性别。
     */
    @Schema(description = "联系人性别")
    private Integer connectSex;

    /**
     * 备注。
     */
    @Schema(description = "备注")
    private String remark;

    /**
     * 订单状态(1.已下单;2.已取消;3. 已完成)。
     */
    @Schema(description = "订单状态(1.已下单;2.已取消;3. 已完成)")
    private Integer state;

    /**
     * 车型评分。
     */
    @Schema(description = "车型评分")
    private Integer categoryMark;

    /**
     * 司机评分。
     */
    @Schema(description = "司机评分")
    private Integer driveMark;

    /**
     * 乘车人微信。
     */
    @Schema(description = "乘车人微信")
    private String connectWechat;

    /**
     * 司机名称。
     */
    @Schema(description = "司机名称")
    private String driverName;

    /**
     * 司机性别。
     */
    @Schema(description = "司机性别")
    private Integer driverSex;

    /**
     * 司机年龄。
     */
    @Schema(description = "司机年龄")
    private Integer driverAge;

    /**
     * 司机驾龄。
     */
    @Schema(description = "司机驾龄")
    private Integer drivingYears;

    /**
     * 司机联系方式。
     */
    @Schema(description = "司机联系方式")
    private String driverMobile;

    /**
     * 司机照片。
     */
    @Schema(description = "司机照片")
    private String driverImage;

    /**
     * 车型种类。
     */
    @Schema(description = "车型种类")
    private Long carModel;

    /**
     * 车型车名。
     */
    @Schema(description = "车型车名")
    private String carName;

    /**
     * 车型座位数。
     */
    @Schema(description = "车型座位数")
    private Integer carSeatNumber;

    /**
     * 车型行李数。
     */
    @Schema(description = "车型行李数")
    private Integer carLuggageNumber;

    /**
     * 车型照片。
     */
    @Schema(description = "车型照片")
    private String carImage;

    /**
     * 包车每天的价格。
     */
    @Schema(description = "包车每天的价格")
    private BigDecimal dayPrice;

    /**
     * 包车每天的单位。
     */
    @Schema(description = "包车每天的单位")
    private String dayPriceUnit;

    /**
     * 订单总价格。
     */
    @Schema(description = "订单总价格")
    private BigDecimal totalPrice;

    /**
     * 订单总价格的单位。
     */
    @Schema(description = "订单总价格的单位")
    private String totalPriceUnit;

    /**
     * 车型归属(1.平台自营;2.三方个人)。
     */
    @Schema(description = "车型归属(1.平台自营;2.三方个人)")
    private Integer categoryType;

    @Schema(description = "订单是否已打分(0.未打分;1.已打分)")
    private Integer marking;

    /**
     * 车主用户id。
     */
    @Schema(description = "车主用户id")
    private Long driverSysId;

    /**
     * 车主部门id。
     */
    @Schema(description = "车主部门id")
    private Long driverDeptId;

    /**
     * categoryId 的一对一关联数据对象，数据对应类型为TourCarCategoryVo。
     */
    @Schema(description = "categoryId 的一对一关联数据对象，数据对应类型为TourCarCategoryVo")
    private Map<String, Object> tourCarCategory;

    /**
     * driverId 的一对一关联数据对象，数据对应类型为TourCarDriverVo。
     */
    @Schema(description = "driverId 的一对一关联数据对象，数据对应类型为TourCarDriverVo")
    private Map<String, Object> tourCarDriver;

    /**
     * categoryId 字典关联数据。
     */
    @Schema(description = "categoryId 字典关联数据")
    private Map<String, Object> categoryIdDictMap;

    /**
     * startPlaceId 字典关联数据。
     */
    @Schema(description = "startPlaceId 字典关联数据")
    private Map<String, Object> startPlaceIdDictMap;

    /**
     * carModel 字典关联数据。
     */
    @Schema(description = "carModel 字典关联数据")
    private Map<String, Object> carModelDictMap;

    /**
     * state 常量字典关联数据。
     */
    @Schema(description = "state 常量字典关联数据")
    private Map<String, Object> stateDictMap;

    /**
     * categoryType 常量字典关联数据。
     */
    @Schema(description = "categoryType 常量字典关联数据")
    private Map<String, Object> categoryTypeDictMap;

    /**
     * connectSex 全局字典关联数据。
     */
    @Schema(description = "connectSex 全局字典关联数据")
    private Map<String, Object> connectSexDictMap;

    /**
     * driverSex 全局字典关联数据。
     */
    @Schema(description = "driverSex 全局字典关联数据")
    private Map<String, Object> driverSexDictMap;

    /**
     * sysUser 司机的用户信息。
     */
    @Schema(description = "sysUser 司机的用户信息")
    private SysUser sysUser;
}
