package com.gxwebsoft.common.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.system.entity.Role;
import com.gxwebsoft.common.system.entity.UserRole;
import com.gxwebsoft.common.system.param.UserRoleParam;

import java.util.List;

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

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

  /**
   * 根据用户id查询角色
   *
   * @param userId 用户id
   * @return List<Role>
   */
  List<Role> listByUserId(Integer userId);

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

  List<UserRole> listByRoleId(Integer roleId);

  /**
   * 分页关联查询
   *
   * @param param 查询参数
   * @return PageResult<UserRole>
   */
  PageResult<UserRole> pageRel(UserRoleParam param);

  /**
   * 关联查询全部
   *
   * @param param 查询参数
   * @return List<UserRole>
   */
  List<UserRole> listRel(UserRoleParam param);

  /**
   * 根据id查询
   *
   * @param id 主键id
   * @return UserRole
   */
  UserRole getByIdRel(Integer id);

}
