package jnpf.cultivate.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.model.cultivate.dto.promotion.FtbCultivatePromotionDto;
import jnpf.model.cultivate.dto.promotion.FtbMapsOrgWisdomStatisticDTO;
import jnpf.model.cultivate.dto.promotion.FtbMapsPersonWisdomStatisticDTO;
import jnpf.model.cultivate.po.promotion.FtbCultivatePromotion;
import jnpf.model.cultivate.po.promotion.FtbCultivatePromotionPostNew;
import jnpf.model.cultivate.vo.promotion.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  查询岗位通道
 * @author hao.peng
 */
public interface FtbCultivatePromotionMapper extends BaseMapper<FtbCultivatePromotion> {
    /**
     *  查询通道层级
     * @param page
     * @param dto
     * @return
     */
    Page<FtbCultivatePromotionVO> getList(@Param("page") Page page, @Param("dto") FtbCultivatePromotionDto dto);

    /**
     * 根据通道id 查询通道层级
     * @return
     */
    FtbCultivatePromotionVO getPromotionChannel( @Param("id") String id);

    /**
     * 查询已经开启的成员列表
     * @param dto
     * @param page
     * @return
     */
    Page<FtbCultivatePromotionMemberVO> getPromotionMbeList(@Param("dto")FtbCultivatePromotionDto dto,@Param("page") Page page);
    /**
     * 根据促销活动ID列表查询对应的促销活动信息
     *
     * @param promotionIds 促销活动ID列表
     * @return 返回查询到的促销活动信息列表
     */
    List<FtbCultivatePromotionVO> queryListByIds(@Param("promotionIds") List<String> promotionIds);

    /**
     * 查询组织机构列表的智慧统计信息，并进行分页显示
     *
     * @param statisticDTO 统计信息的数据传输对象，包含查询条件
     * @param page 分页对象，用于显示分页数据
     * @return 返回分页后的组织机构智慧统计信息
     */
    Page<FtbCultivateMapsOrgWisdomStatisticVO> organizationListStatistics(@Param("dto")FtbMapsOrgWisdomStatisticDTO statisticDTO,
                                                                          @Param("page") Page<FtbCultivateMapsOrgWisdomStatisticVO> page);

    /**
     * 查询个人列表的智慧统计信息，并进行分页显示
     *
     * @param personWisdomStatisticDTO 个人智慧统计信息的数据传输对象，包含查询条件
     * @param page 分页对象，用于显示分页数据
     * @return 返回分页后的个人智慧统计信息
     */
    Page<FtbCultivateMapsPersonWisdomStatisticVO> personListStatistics(@Param("dto")FtbMapsPersonWisdomStatisticDTO personWisdomStatisticDTO,
                                                                          @Param("page")Page<FtbCultivateMapsPersonWisdomStatisticVO> page);


    List<FtbCultivateMapSimpleDto> queryStudyMapList(@Param("dto") FtbMapsOrgWisdomStatisticDTO dto);

    List<FtbCultivateMapStudyUserDto> queryStudyUser(@Param("dto") FtbMapsOrgWisdomStatisticDTO dto, @Param("queryPromotionIds") List<String> queryPromotionIds);

    List<FtbCultivatePromotionLevelMapVO> queryMapPostNum(@Param("queryPromotionIds") List<String> queryPromotionIds);
}