package com.seer.teach.user.service;

import com.seer.teach.user.entity.UserRoleEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import jakarta.validation.constraints.NotNull;
import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Wang
 * @since 2025-07-16 16:56:07
 */
public interface IUserRoleService extends IService<UserRoleEntity> {

    /**
     * 根据用户ID获取用户角色列表
     *
     * @param userId 用户ID
     * @return 用户角色列表
     */
    List<UserRoleEntity> getListByUserId(Integer userId);

    /**
     * 获取用户角色编码列表
     *
     * @param userId 用户编号
     * @return 角色编码列表
     */
    List<String> getRoleCodeListByUserId(Integer userId);

    /**
     * 为用户分配角色
     *
     * @param userId  角色编号
     * @param roleIds 角色编号集合
     */
    boolean assignUserRole(Integer userId, Set<Integer> roleIds);

    /**
     * 为用户分配角色
     *
     * @param userId  角色编号
     * @param roleId 角色编号集合
     */
    boolean assignUserRole(Integer userId, Integer roleId);

    /**
     * 为用户分配角色
     *
     * @param userId  角色编号
     * @param roleCode 角色编号集合
     */
    boolean assignUserRoleByRoleCode(Integer userId, String roleCode);

    /**
     * 为用户分配角色
     *
     * @param userId  角色编号
     * @param roleIds 角色编号集合
     * @return boolean 删除结果
     */
    boolean allocUserRole(Integer userId, Collection<Integer> roleIds);

    /**
     * 删除用户角色
     *
     * @param userId  角色编号
     * @param roleIds 角色编号集合
     * @return boolean 删除结果
     */
    boolean deleteUserRole(Integer userId, Set<Integer> roleIds);
}
