package com.ylx.massage.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 免车费规则表
 *
 * @author system
 * @since 2024-01-13
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_fare_free_rule", autoResultMap = true)
@ApiModel(value = "TFareFreeRule", description = "免车费规则")
public class TFareFreeRule implements Serializable {

    private static final long serialVersionUID = 1L;

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

    /**
     * 技师ID
     */
    @ApiModelProperty("技师ID")
    @TableField(value = "tech_id")
    private String techId;

    /**
     * 微信OpenID
     */
    @ApiModelProperty("微信OpenID")
    @TableField(exist = false)
    private String openId;

    /**
     * 服务项目ID
     */
    @TableField(value = "project_id")
    @ApiModelProperty("服务项目ID")
    private String projectId;

    /**
     * 时间范围1
     */
    @ApiModelProperty("时间范围1")
    @TableField(value = "time_range1")
    private String timeRange1;

     /**
     * 时间范围2
     */
    @ApiModelProperty("时间范围2")
    @TableField(value = "time_range2")
    private String timeRange2;

    /**
     * 最小距离（公里）
     * 订单距离 <= 此值时免车费
     */
    @ApiModelProperty("最小距离（公里）")
    private Integer minDistance;

    /**
     * 是否启用（0否 1是）
     */
    @ApiModelProperty("是否启用（0否 1是）")
    private String enable;


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

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

    /**
     * 逻辑删除（0否 1是）
     */
    @TableLogic
    @ApiModelProperty("逻辑删除（0否 1是）")
    private Integer isDelete;

    /**
     * 时间段内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class TimeRange implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * 时间范围（格式：HH:mm）
         */
        @ApiModelProperty("时间范围（格式：HH:mm）")
        private String timeRange;

    }
}
