package com.ruoyi.cms.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.core.domain.entity.Company;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.Analyzer;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;

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

/**
 * 全文索引 ES数据模型
 **/
@IndexName("job_document")
@Data
public class ESJobDocument
{

    @ApiModelProperty("es中的唯一id")
    @IndexId(type = IdType.NONE)
    @JsonIgnore
    private String id;

    @ApiModelProperty("岗位id")
    private Long jobId;

    @ApiModelProperty("公告标题")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
    private String jobTitle;

    @ApiModelProperty("内容")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
    private String description;

    @ApiModelProperty("最小薪资（元）")
    private Long minSalary;

    @ApiModelProperty("最大薪资（元）")
    private Long maxSalary;

    @ApiModelProperty("学历要求 对应字典education")
    private String education;

    @ApiModelProperty("工作经验要求 对应字典experience")
    private String experience;

    @ApiModelProperty("用人单位名称")
    private String companyName;

    @ApiModelProperty("岗位区划")
    private String jobLocation;

    @ApiModelProperty("工作地点区县字典代码")
    private Integer jobLocationAreaCode;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("发布时间")
    private Date postingDate;

    @ApiModelProperty("招聘人数")
    private Long vacancies;

    @ApiModelProperty("纬度")
    private BigDecimal latitude;

    @ApiModelProperty("经度")
    private BigDecimal longitude;

    @ApiModelProperty("浏览量")
    private Long view;

    @ApiModelProperty("公司id")
    private Long companyId;

    @ApiModelProperty("是否火")
    private Integer isHot;

    @ApiModelProperty("申请次数")
    private Integer applyNum;

    @JsonIgnore
    @ApiModelProperty("公司")
    private Company company;

    @ApiModelProperty("是否申请 0为否 1为是")
    private Integer isApply;

    @ApiModelProperty("是否收藏 0为否 1为是")
    private Integer isCollection;

    @ApiModelProperty("数据来源")
    private String dataSource;

    @ApiModelProperty("岗位链接")
    private String jobUrl;

    @JsonIgnore
    @IndexField(fieldType = FieldType.GEO_POINT)
    @ApiModelProperty("经纬度")
    private String latAndLon;

    @JsonIgnore
    @ApiModelProperty("公司规模")
    private String scaleDictCode;

    @ApiModelProperty("行业分类")
    private String industry;

    @ApiModelProperty("岗位分类")
    private String jobCategory;

    @JsonIgnore
    @ApiModelProperty("学历要求 对应字典education int类型 es方便查询")
    private Integer education_int;
    @JsonIgnore
    @ApiModelProperty("工作经验要求 对应字典experience int类型 es方便查询")
    private Integer experience_int;

    @ApiModelProperty("公司规模 int类型 es方便查询")
    private Integer scale;

    @ApiModelProperty("岗位链接 APP内")
    private String appJobUrl;

    @ApiModelProperty("公司性质")
    private String companyNature;

    @ApiModelProperty("是否有视频介绍")
    private Integer isExplain;

    @ApiModelProperty("视频介绍URL")
    private String explainUrl;

    @ApiModelProperty("视频封面URL")
    private String cover;

    @ApiModelProperty("岗位类型 0疆内 1疆外")
    private String jobType;

    @ApiModelProperty("类型 0常规岗位 1就业见习岗位 2实习实训岗位 3社区实践岗位 对应字段字典position_type")
    private String type;

    @ApiModelProperty("信用代码")
    private String code;

    @ApiModelProperty("工作地点")
    private String jobAddress;

    @ApiModelProperty("所属行政区划")
    private String regionCode;

    @ApiModelProperty("人员类型 1残疾人,2退伍军人")
    private String staffType;

    @ApiModelProperty("公司信息")
    @IndexField(fieldType = FieldType.TEXT)
    private String companyVoJson;

    @ApiModelProperty("是否发布 0未发布 1发布")
    private Integer isPublish;

    @ApiModelProperty("是否通过 0通过,1不通过")
    private String pass;

    @ApiModelProperty("是否通过原因")
    private String passReason;

    @ApiModelProperty("状态 0在线，1下架")
    private String jobStatus;

    @ApiModelProperty("下架时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String downTime;
}
