package com.tourism.webadmin.back.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.tourism.common.core.validator.ConstDictRef;
import com.tourism.common.core.validator.UpdateGroup;
import com.tourism.common.core.validator.ConstDictRef;
import com.tourism.webadmin.back.model.constant.TourCarType;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;

/**
 * 包车司机Dto对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "包车司机Dto对象")
@Data
public class TourCarDriverDto {

    /**
     * id。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "id。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，id不能为空！", groups = {UpdateGroup.class})
    private Long id;

    /**
     * 司机名称。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "司机名称。可支持等于操作符的列表数据过滤。")
    private String name;

    /**
     * 性别。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "性别。可支持等于操作符的列表数据过滤。")
    private Integer sex;

    /**
     * 年龄。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "年龄。可支持等于操作符的列表数据过滤。")
    private Integer age;

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

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

    /**
     * 评分。
     */
    @Schema(description = "评分。")
    private Integer mark;

    /**
     * 热度值。
     */
    @Schema(description = "热度值。")
    private Integer hotValue;

    /**
     * 组织id。
     */
    @Schema(description = "组织id。")
    private Long deptId;

    /**
     * 联系方式。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "联系方式。可支持等于操作符的列表数据过滤。")
    private String mobile;

    /**
     * 所属区域。
     */
    @Schema(description = "所属区域。")
    private Long belongTab;

    /**
     * 司机类型(1.自营;2.第三方)。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "司机类型(1.自营;2.第三方)。可支持等于操作符的列表数据过滤。")
    @ConstDictRef(constDictClass = TourCarType.class, message = "数据验证失败，司机类型(1.自营;2.第三方)为无效值！")
    private Integer type;

    /**
     * age 范围过滤起始值(>=)。
     * NOTE: 可支持范围操作符的列表数据过滤。
     */
    @Schema(description = "age 范围过滤起始值(>=)。可支持范围操作符的列表数据过滤。")
    private Integer ageStart;

    /**
     * age 范围过滤结束值(<=)。
     * NOTE: 可支持范围操作符的列表数据过滤。
     */
    @Schema(description = "age 范围过滤结束值(<=)。可支持范围操作符的列表数据过滤。")
    private Integer ageEnd;

    /**
     * name LIKE搜索字符串。
     * NOTE: 可支持LIKE操作符的列表数据过滤。
     */
    @Schema(description = "LIKE模糊搜索字符串")
    private String searchString;
}
