package jnpf.cultivate.service;


import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.base.vo.PageListVO;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.dto.apply.FtbCultivatePromotionPostApplyCreateDto;
import jnpf.model.cultivate.dto.apply.FtbCultivatePromotionPostApplyDto;
import jnpf.model.cultivate.po.apply.FtbCultivatePromotionPostApply;
import jnpf.model.cultivate.vo.apply.FtbCultivatePromotionPostApplyVO;
import jnpf.model.cultivate.vo.apply.FtbCultivatePromotionPostApplyWithPerVO;

public interface FtbCultivatePromotionPostApplyService extends IService<FtbCultivatePromotionPostApply> {

    /**
     * 初始化
     *
     * @param createDto 申请的创建数据对象
     */
    void initiateAPromotionApplication(FtbCultivatePromotionPostApplyCreateDto createDto);

    /**
     * 获取列表
     *
     * @param dto     请求参数
     * @param page     分页信息
     * @return 列表对象
     */
    PageListVO<FtbCultivatePromotionPostApplyVO> getList(FtbCultivatePromotionPostApplyDto dto, CultivatePage page);

    /**
     * 审核岗位申请的接口
     * @param dto 岗位申请数据传输对象
     * @return 审核结果
     */
    void auditPromotionPostApplication(FtbCultivatePromotionPostApplyDto dto);
    /**
     * 查询岗位申请详情
     *
     * @param dto     岗位申请数据传输对象
     * @param appFlag
     * @return ActionResult<FtbCultivatePromotionPostApplyWithPerVO> 响应结果对象，包含岗位申请及相关信息
     */
    FtbCultivatePromotionPostApplyWithPerVO viewPromotionApplications(FtbCultivatePromotionPostApplyDto dto, String appFlag);
    /**
     * 检查是否为指定岗位层级的用户提供了应用
     *
     * 此方法用于确定是否存在已经为特定岗位层级（PostLevel）的用户配置的应用程序
     * 它通过检查岗位ID、岗位层级ID和用户ID来判断是否存在对应的应用程序
     *
     * @param postId 岗位ID，标识特定的岗位
     * @param grandId 岗位层级ID，标识特定的岗位层级
     * @param userId 用户ID，标识特定的用户
     * @return 如果为该岗位层级的用户提供了应用，则返回true；否则返回false
     */
    Boolean isThereAnAppForThePosLevel(String postId, String grandId, String userId);

}
