package com.gxwebsoft.common.system.mapper;

import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gxwebsoft.common.system.entity.Role;
import com.gxwebsoft.common.system.entity.UserRole;
import com.gxwebsoft.common.system.param.UserRoleParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户角色Mapper
 *
 * @author 科技小王子
 * @since 2025-06-16 20:39:53
 */
public interface UserRoleMapper extends BaseMapper<UserRole> {

  /**
   * 批量添加用户角色
   *
   * @param userId  用户id
   * @param roleIds 角色id集合
   * @return int
   */
  int insertBatch(@Param("userId") Integer userId, @Param("roleIds") List<Integer> roleIds);

  /**
   * 根据用户id查询角色
   *
   * @param userId 用户id
   * @return List<Role>
   */
  @InterceptorIgnore(tenantLine = "true")
  List<Role> selectByUserId(@Param("userId") Integer userId);

  /**
   * 批量根据用户id查询角色
   *
   * @param userIds 用户id集合
   * @return List<RoleResult>
   */
  List<Role> selectByUserIds(@Param("userIds") List<Integer> userIds);

  /**
   * 分页查询
   *
   * @param page  分页对象
   * @param param 查询参数
   * @return List<UserRole>
   */
  List<UserRole> selectPageRel(@Param("page") IPage<UserRole> page,
                               @Param("param") UserRoleParam param);

  /**
   * 查询全部
   *
   * @param param 查询参数
   * @return List<User>
   */
  List<UserRole> selectListRel(@Param("param") UserRoleParam param);

}
