package org.xyzh.system.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.user.TbSysUserDeptRole;
import org.xyzh.common.vo.UserDeptRoleVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

@Mapper
public interface UserDeptRoleMapper extends BaseMapper<TbSysUserDeptRole> {

    /**
     * @description 查询用户部门角色（包含名称）
     * @param filter 过滤条件
     * @return List<UserDeptRoleVO> 用户部门角色列表
     * @author yslg
     * @since 2025-10-09
     */
    List<UserDeptRoleVO> selectByFilter(TbSysUserDeptRole filter);

    /**
     * @description 删除指定用户的所有部门角色绑定
     * @param userID 用户ID
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-09
     */
    int deleteUserDeptRole(String userID);
    
    /**
     * @description 批量删除多个用户的部门角色绑定
     * @param userIds 用户ID列表
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-29
     */
    int deleteUserDeptRoleByUserIds(@Param("userIds") List<String> userIds);

    /**
     * @description 绑定用户
     * @param userDeptRoles 用户角色列表
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-09
     */
    int bindUser(@Param("userDeptRoles") List<TbSysUserDeptRole> userDeptRoles);

    /**
     * @description 解绑用户
     * @param userDeptRoles 用户角色列表
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-09
     */
    int unbindUser(@Param("userDeptRoles") List<TbSysUserDeptRole> userDeptRoles);
}
