package com.zd.laboratory.service;

import java.util.List;
import java.util.Map;

import com.zd.common.core.domain.R;
import com.zd.laboratory.domain.LabBlackdetail;
import com.zd.laboratory.domain.LabBlacklist;
import com.zd.laboratory.domain.dto.LabBlacklistDTO;
import com.zd.laboratory.domain.vo.ElPassConfigdetailVO;
import com.zd.laboratory.domain.vo.LabBlackdetailVO;
import com.zd.laboratory.domain.vo.LabBlacklistVO;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * 黑名单Service接口
 *
 * @author zd
 * @date 2021-09-01
 */
public interface ILabBlacklistService {
    /**
     * 查询黑名单
     *
     * @param id 黑名单主键
     * @return 黑名单
     */
    public LabBlacklist selectLabBlacklistById(Long id);

    /**
     * 查询黑名单列表
     *
     * @param labBlacklist 黑名单
     * @return 黑名单集合
     */
    public List<LabBlacklist> selectLabBlacklistList(LabBlacklist labBlacklist);

    /**
     * 根据用户查询是否在黑名单
     *
     * @param labBlacklist 根据用户查询是否在黑名单
     * @return 黑名单集合
     */
    public boolean getUserBoolean(LabBlacklistDTO labBlacklist);


    /**
     * 设置黑名单用户
     *
     * @param labBlacklist 黑名单信息
     * @return
     */
    public Boolean setBackUser(LabBlacklist labBlacklist);

    /**
     * 查询黑名单列表
     *
     * @param labBlacklist 黑名单
     * @return 黑名单集合
     */
    public List<LabBlacklistVO> selectLabBlackVOList(LabBlacklistDTO labBlacklist);

    /**
     * 新增黑名单
     *
     * @param labBlacklist 黑名单
     * @return 结果
     */
    public int insertLabBlacklist(LabBlacklist labBlacklist);

    /**
     * 修改黑名单
     *
     * @param labBlacklist 黑名单
     * @return 结果
     */
    public int updateLabBlacklist(LabBlacklist labBlacklist);

    /**
     * 新增黑名单
     *
     * @param labBlacklistVO 黑名单
     * @return 结果
     */
    public int addBlacklist(LabBlacklistVO labBlacklistVO);

    /**
     * 黑名单完成学习规则
     *
     * @param blackdetailVO 黑名单完成学习规则
     * @return 结果
     */
    public int blacklistCompletionLearningRules(LabBlackdetailVO blackdetailVO);

    /**
     * 移除黑名单
     *
     * @param labBlacklist 黑移除黑名单
     * @return 结果
     */
    public int removeBlacklist(LabBlacklist labBlacklist);

    /**
     * 移除黑名单（pc）
     *
     * @param labBlacklist 黑移除黑名单
     * @return 结果
     */
    public int removeBlacklistByPc(LabBlacklist labBlacklist);


    /**
     * 获取黑名单惩罚时间区间
     *
     * @param blackdetailVO 获取黑名单惩罚时间区间
     * @return 结果
     */
    public LabBlackdetail getBlackTimeArea(LabBlackdetailVO blackdetailVO);


    /**
     * 批量删除黑名单
     *
     * @param ids 需要删除的黑名单主键集合
     * @return 结果
     */
    public int deleteLabBlacklistByIds(Long[] ids);

    /**
     * 删除黑名单信息
     *
     * @param id 黑名单主键
     * @return 结果
     */
    public int deleteLabBlacklistById(Long id);


    ElPassConfigdetailVO getIntegralMatchingRules(@RequestBody List<Map<String,Object>> pointsConfigDetail, Integer creditScore);
}
