package com.gic.haoban.manage.service.dao.mapper;

import com.gic.haoban.manage.service.entity.TabHaobanWelcomeSuitRang;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 欢迎语适用范围表(TabHaobanWelcomeSuitRang)表数据库访问层
 *
 * @author xugaojun
 * @since 2022-02-10 16:40:16
 */
public interface TabHaobanWelcomeSuitRangMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param welcomeSuitRangId 主键
     * @return 实例对象
     */
    TabHaobanWelcomeSuitRang queryById(Long welcomeSuitRangId);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<TabHaobanWelcomeSuitRang> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param tabHaobanWelcomeSuitRang 实例对象
     * @return 对象列表
     */
    List<TabHaobanWelcomeSuitRang> queryAll(TabHaobanWelcomeSuitRang tabHaobanWelcomeSuitRang);

    /**
     * 新增数据
     *
     * @param tabHaobanWelcomeSuitRang 实例对象
     * @return 影响行数
     */
    int insert(TabHaobanWelcomeSuitRang tabHaobanWelcomeSuitRang);

    /**
     * 修改数据
     *
     * @param tabHaobanWelcomeSuitRang 实例对象
     * @return 影响行数
     */
    int update(TabHaobanWelcomeSuitRang tabHaobanWelcomeSuitRang);

    /**
     * 通过主键删除数据
     *
     * @param welcomeSuitRangId 主键
     * @return 影响行数
     */
    int deleteById(Long welcomeSuitRangId);

    /**
     * desc: 根据微信企业id与部门id列表查询
     *
     * @param wxEnterpriseId   微信企业id
     * @param departmentIdList 部门id列表
     * @return : {@link List< TabHaobanWelcomeSuitRang>}
     * @author : YongEn
     * @date : 2022/2/11
     */
    List<TabHaobanWelcomeSuitRang> listByWxEnterpriseIdAndDeptList(
            @Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("departmentIdList") List<String> departmentIdList
    );

    /**
     * desc: 批量新增
     *
     * @param welcomeSuitRangList 实体类列表
     * @return : {@link int}
     * @author : YongEn
     * @date : 2022/2/11
     */
    int batchInsert(@Param("welcomeSuitRangList") List<TabHaobanWelcomeSuitRang> welcomeSuitRangList);

    /**
     * desc: 根据适用部门批量删除（软删）
     *
     * @param suitDepartmentIdSet 列表
     * @param wxEnterpriseId      微信企业id
     * @param welcomeId           欢迎语id
     * @return : {@link int}
     * @author : YongEn
     * @date : 2022/2/11
     */
    int batchDeleteBySuitDepartmentIdSet(
            @Param("welcomeId") String welcomeId,
            @Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("suitDepartmentIdSet") Set<String> suitDepartmentIdSet
    );

    /**
     * desc: 根据适用员工批量删除（软删除）
     *
     * @param suitStaffIdSet 列表
     * @param wxEnterpriseId 微信企业id
     * @param welcomeId      欢迎语id
     * @return : {@link int}
     * @author : YongEn
     * @date : 2022/2/11
     */
    int batchDeleteBySuitStaffIdSet(
            @Param("welcomeId") String welcomeId,
            @Param("wxEnterpriseId") String wxEnterpriseId,
            @Param("suitStaffIdSet") Set<String> suitStaffIdSet
    );
}
