package com.app.admin.framework.system.permission.authorization.service;

import com.app.admin.framework.system.permission.authorization.model.SysAdministratorRole;
import com.app.admin.framework.system.permission.authorization.view.SysAdministratorRoleView;
import com.app.framework.core.support.enums.common.StateEnum;
import com.app.framework.core.support.service.CrudBaseService;

import java.util.List;

/**
 * 用户角色关联管理
 */
public interface SysAdministratorRoleService extends CrudBaseService<SysAdministratorRole> {

	/**
	 * 查询用户所有角色
	 * @param userId 用户Id
	 * @param stateEnum 角色状态
	 */
	List<SysAdministratorRoleView> selectByUserId(Long userId, StateEnum stateEnum);
	
	/**
	 * 根据角色Id删除权限
	 * @param roleId 角色Id
	 */
	boolean deleteByRoleId(Long roleId);

	/**
	 * 根据用户Id删除权限
	 *
	 * @param userId 用户Id
	 */
	boolean deleteByUserId(Long userId);

	/**
	 * 根据角色ID获取对应的用户
	 * @param roleId 角色Id
	 * @return List<用户名>
	 */
	List<String> getUsernameByRoleId(Long roleId);

	/**
	 * 创建用户角色对应关系，不存在才创建
	 *
	 * @param userId 用户ID
	 * @param roleId 角色ID
	 */
	SysAdministratorRole createIfAbsent(Long userId, Long roleId);
}