package cn.com.countrygarden.bi.main.dao.wcx;

import cn.com.countrygarden.bi.main.model.wcx.WcxThumb;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface WcxThumbMapper {
    void insert(WcxThumb wcxThumb);

    int selectPointedNumber(@Param("userId") String userId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    WcxThumb selectOne(WcxThumb conditionWcxThumb);

    Long selectThumbNumberByInnovationId(String innovationId);

    int getLeadThumbNumberByInnId(String innovationId);

    /**
     * 查询一个时间段中点赞数
     *
     * @param startDate
     * @param endDate
     * @return
     */
    long selectAllThumbNumber(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 查询一个时间段中点赞数 排除掉 baseline =7
     *
     * @param startDate
     * @param endDate
     * @return
     */
    long selectAllThumbNumberExclude(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 最佳点赞人点赞次数
     *
     * @param startDate
     * @param endDate
     * @return
     */
    int findBestPutPointThumbNum(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 删除创意下所有点赞
     *
     * @param innovationId
     */
    void deleteByInnovationId(String innovationId);

    /**
     * 创新被点赞的数量
     *
     * @param userId
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbedNum(@Param("userId") String userId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 创新在一段时间内被点赞的数量
     *
     * @param innoId
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbedNumByInnoId(@Param("innoId") String innoId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 创新被点赞的次数
     *
     * @param userId
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbedCountNum(@Param("userId") String userId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 领导点赞次数最的
     *
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbCountNumMinOfLeader(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("limitCount") int limitCount);

    /**
     * 领导点赞次数最的 排除掉 baseline 7
     *
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbCountNumMinOfLeaderExclude(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("limitCount") int limitCount);

    /**
     * 点赞数最多的领导
     *
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findThumbNumMaxOfLeader(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("limitNum") Integer limitNum);

    List<String> findInnIds(Integer percent20Num);

    /**
     * 查询一个时间段中点赞的创意数
     *
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findInnCountBetweenDateThumb(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 查询一个时间段中点赞的创意数 排除掉 baseline=7
     *
     * @param startDate
     * @param endDate
     * @return
     */
    Integer findInnCountBetweenDateThumbExclude(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 大领导点赞数
     *
     * @param innovationId
     * @return
     */
    Integer findBigLeadThumbNumber(String innovationId);

    /**
     * 查询一段时间的创意点赞量数目
     * todo 待处理
     * @param startDate
     * @param endDate
     */
    //Integer findThumNumber(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
}
