package jnpf.personnels.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.personnels.dto.black.FtbPersonnelsBlackListDTO;
import jnpf.model.personnels.dto.black.FtbPersonnelsBlackUpdateDTO;
import jnpf.model.personnels.dto.black.FtbPersonnelsBlacklistAddDTO;
import jnpf.model.personnels.po.FtbPersonnelsBlacklist;
import jnpf.model.personnels.vo.black.FtbPersonnelsBlackListVO;

import java.util.List;

/**
 * <p>
 * 黑名单 服务类
 * </p>
 *
 * @author wcx
 * @since 2024-05-08
 */
public interface FtbPersonnelsBlacklistService extends IService<FtbPersonnelsBlacklist> {
    /**
     * 办理离职时调用添加人员到黑名单
     */
    void addBlacklist(FtbPersonnelsBlacklistAddDTO ftbPersonnelsBlacklistAddDTO);

    /**
     * 办理入职时调用，该人员是否被拉入黑名单
     *
     * @param phone 手机号必传
     * @return {@link Boolean } true为是，false为否
     */
    Boolean hasItBeenBlacklisted(String phone);

    /**
     * 查询黑名单分页数据
     *
     * @param page 分页对象，包含分页参数和分页结果
     * @param dto  查询条件对象，用于筛选分页结果
     * @return 返回分页查询结果，包含列表数据和总记录数
     */
    Page<FtbPersonnelsBlackListVO> blacklist(Page<FtbPersonnelsBlackListVO> page, FtbPersonnelsBlackListDTO dto);

    /**
     * 编辑黑名单信息
     *
     * @param fdto 包含要更新的黑名单信息的对象
     */
    void editBlacklist(FtbPersonnelsBlackUpdateDTO fdto);

    /**
     * 移除黑名单项
     *
     * @param id 黑名单项的唯一标识符
     */
    void removeBlacklist(String id);

    /**
     * 获取黑名单期限枚举列表
     *
     * @return 返回黑名单期限枚举列表
     */
    List<FtbPersonnelsBlackListVO.BlackTermEnumVO> getBlacklist();
}
