package jnpf.cultivate.v2.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.cultivate.po.promotion.FtbCultivatePromotionUser;
import jnpf.model.cultivate.v2.promotion.vo.MyCultivatePromotionListVo;
import jnpf.model.cultivate.v2.promotion.vo.V2CultivatePromotionMemberVo;

import java.util.List;

/**
 * 学习地图人员标 service
 */
public interface FtbCultivatePromotionUserService extends IService<FtbCultivatePromotionUser> {


    /**
     * 分页查询用户信息
     *
     * @param userPage     用户分页对象，包含分页参数和结果
     * @param queryUserIds 查询用户的ID列表
     * @param promotionId  推广活动ID
     * @return 包含推广成员信息的分页结果
     */
    Page<V2CultivatePromotionMemberVo> queryUserForPage(Page<V2CultivatePromotionMemberVo> userPage, List<String> queryUserIds, String promotionId);

    /**
     * 查询用户的所有推广活动列表
     *
     * @param userId 用户ID
     * @return 用户参与的所有推广活动列表
     */
    List<MyCultivatePromotionListVo> queryMyAllPromotionList(String userId);

    /**
     * 查询用户的指定推广活动
     *
     * @param userId      用户ID
     * @param promotionId 推广活动ID
     * @return 用户参与的指定推广活动信息，不存在则返回null
     */
    MyCultivatePromotionListVo queryMyPromotionById(String userId, String promotionId);

    /**
     * 完成地图
     *
     * @param userId       用户ID，用于标识完成推广的用户
     * @param promotionId  推广活动ID，用于关联推广活动信息
     * @param tenantId     租户ID，用于指定租户下的推广活动
     */
    void completePromotion(String userId, String promotionId, String tenantId);

    /**
     * 查询用户完成的推广活动列表
     *
     * @param userId 用户ID
     * @return 用户完成的推广活动列表
     */
    List<String> queryMyCompletePromotion(String userId);
}