package org.jeecg.modules.adweb.seo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description: 关键词
 * @Author: jeecg-boot
 * @Date:   2024-10-15
 * @Version: V1.0
 */
@Data
@TableName("seo_keywords")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Schema(description="关键词")
public class SeoKeywords implements Serializable {
    private static final long serialVersionUID = 1L;

	/**关键词表主键*/
	@TableId(type = IdType.ASSIGN_ID)
    @Schema(description = "关键词表主键")
    private Integer id;
	/**平台标识*/
	@Excel(name = "平台标识", width = 15)
    @Schema(description = "平台标识")
    private String appKey;
	/**用户标识*/
	@Excel(name = "网站code", width = 15)
    @Schema(description = "网站code")
    private String siteCode;
	/**关键词*/
	@Excel(name = "关键词", width = 15)
    @Schema(description = "关键词")
    private String keywords;
	/**关键词所属域名*/
	@Excel(name = "关键词所属域名", width = 15)
    @Schema(description = "关键词所属域名")
    private String domain;
	/**语种*/
	@Excel(name = "语种", width = 15)
    @Schema(description = "语种")
    private String lang;
	/**创建时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间")
    private Date createTime;
	/**最新搜索时间*/
	@Excel(name = "最新搜索时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "最新搜索时间")
    private Date lastSearchTime;
	/**定时器的最新搜索时间*/
	@Excel(name = "定时器的最新搜索时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "定时器的最新搜索时间")
    private Date timerLastSearchTime;
	/**0删除，1有效，2过期*/
	@Excel(name = "0删除，1有效，2过期", width = 15)
    @Schema(description = "0删除，1有效，2过期")
    private Integer status;
	/**数据复制源ID*/
	@Excel(name = "数据复制源ID", width = 15)
    @Schema(description = "数据复制源ID")
    private Integer sourceId;
	/**关键词优先级（1：高；2：中；3：低）*/
	@Excel(name = "关键词优先级（1：高；2：中；3：低）", width = 15)
    @Schema(description = "关键词优先级（1：高；2：中；3：低）")
    private Integer priority;
	/**SEO关键词优化完成时间*/
	@Excel(name = "SEO关键词优化完成时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "SEO关键词优化完成时间")
    private Date finishTime;
	/**优化进度（默认0）*/
	@Excel(name = "优化进度（默认0）", width = 15)
    @Schema(description = "优化进度（默认0）")
    private Integer optimizeProcess;
	/**优化状态（0：未完成；1：已完成）*/
	@Excel(name = "优化状态（0：未完成；1：已完成）", width = 15)
    @Schema(description = "优化状态（0：未完成；1：已完成）")
    private Integer optimizeStatus;
	/**关键词类型（1：指定；2：长尾）*/
	@Excel(name = "关键词类型（1：指定；2：长尾）", width = 15)
    @Schema(description = "关键词类型（1：指定；2：长尾）")
    private Integer keywordType;
	/**最近一次搜索排名*/
	@Excel(name = "最近一次搜索排名", width = 15)
    @Schema(description = "最近一次搜索排名")
    private Integer lastRank;
	/**搜索状态，0为普通状态，1为搜索进行中状态*/
	@Excel(name = "搜索状态，0为普通状态，1为搜索进行中状态", width = 15)
    @Schema(description = "搜索状态，0为普通状态，1为搜索进行中状态")
    private Integer searchStatus;
	/**关键词所在URL*/
	@Excel(name = "关键词所在URL", width = 15)
    @Schema(description = "关键词所在URL")
    private String positionUrl;
	/**相关关键词关联的关键词的id*/
	@Excel(name = "相关关键词关联的关键词的id", width = 15)
    @Schema(description = "相关关键词关联的关键词的id")
    private Integer relatedKeywordId;
	/**关键词对应套餐的ID*/
	@Excel(name = "关键词对应套餐的ID", width = 15)
    @Schema(description = "关键词对应套餐的ID")
    private String planId;
    /**订购表ID*/
    @Excel(name = "订购表ID", width = 15)
    @Schema(description = "订购表ID")
    private java.lang.String subscriptionId;
    /**网站表ID*/
    @Excel(name = "网站表ID", width = 15)
    @Schema(description = "网站表ID")
    private java.lang.String siteId;
    @TableField(exist = false)
    private String ipAddress;
    @TableField(exist = false)
    private String latestRank;
    @TableField(exist = false)
    private String searchUrl;
    @TableField(exist = false)
    private Map<String, String> rankInfo;
    @TableField(exist = false)
    private String value;
    @TableField(exist = false)
    private String order;
    @TableField(exist = false)
    private String column;
    /**
     * 关键词排名
     */
    @TableField(exist = false)
    private Integer keywordRank;

    /**
     * 关键词字符长度
     */
    @TableField(exist = false)
    private Integer keywordsLength;

    /**
     * 关键词时间范围
     */
    @TableField(exist = false)
    private List<String> dateList;
}
