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

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.adweb.seo.entity.SeoKeywords;
import org.jeecg.modules.adweb.seo.vo.RankInfoVO;

import java.util.List;

/**
 * @Description: 关键词
 * @Author: jeecg-boot
 * @Date:   2024-10-15
 * @Version: V1.0
 */
public interface SeoKeywordsMapper extends BaseMapper<SeoKeywords> {
    /**
     * 根据站点和套餐id
     * @param siteCode
     * @param subscriptionId
     * @return
     */
    List<String> getKeywordsLastSevenDays(String siteCode, String subscriptionId, Integer keywordType);

    /**
     * 查询关键词排名数据
     *
     * @param siteCode siteCode
     * @return 当日排名在前n页的数量
     */
    RankInfoVO queryKeywordNumByRankRange(@Param("siteCode") String siteCode, @Param("subscriptionId") String subscriptionId, @Param("rankStart") Integer rankStart, @Param("rankEnd") Integer rankEnd, @Param("dateStr") String dateStr, @Param("keywordType") String keywordType);

    /**
     * 根据站点code获取关键词达标标准
     *
     * @param siteCode 站点code
     * @return 达标标准
     */
    int getKeywordStandard(String siteCode);

    /**
     * 获取关键词列表
     *
     * @return 关键词列表
     */
    IPage<SeoKeywords> getKeywordList(IPage<SeoKeywords> page,
                                      Integer rankStart,
                                      Integer rankEnd,
                                      boolean isCustomer,
                                      String keyword,
                                      String siteCode,
                                      Integer keywordType,
                                      String datesStr,
                                      String subscriptionId,
                                      String column,
                                      String order,
                                      String buttonColumn,
                                      String buttonSort);

    /**
     * 获取当日需要DateForSEO Serp查询的关键词列表
     *
     * @return 关键词列表
     */
    List<SeoKeywords> getKeywordsToSerp(List<String> sideCodes, int keywordType, int limit);

    /**
     * 关键词管理列表数据
     * @param page
     * @param siteCode
     * @param keywords
     * @param subscriptionId
     * @param lastSearchTime
     * @param createTime
     * @param keywordType
     * @param column
     * @param order
     * @param keywordRank
     * @return
     */
    IPage<SeoKeywords> getPageList(Page<SeoKeywords> page, String siteCode, String keywords, String subscriptionId, String lastSearchTime, String createTime, Integer keywordType, String column, String order, Integer keywordRank);

    /**
     * 关键词管理列表数据
     * @param page
     * @param siteCode
     * @param keywords
     * @param subscriptionId
     * @param lastSearchTime
     * @param createTime
     * @param keywordType
     * @param column
     * @param order
     * @param keywordRank
     * @return
     */
    IPage<SeoKeywords> getPageListByCreateTime(Page<SeoKeywords> page, String siteCode, String keywords, String subscriptionId, String lastSearchTime, String createTime, Integer keywordType, String column, String order, Integer keywordRank);

}
