package openjoe.smart.sso.server.service;

import openjoe.smart.sso.server.stage.core.Page;
import openjoe.smart.sso.server.stage.mybatisplus.service.BaseService;
import openjoe.smart.sso.server.dto.PermissionDTO;
import openjoe.smart.sso.server.entity.Role;

import java.util.Collection;
import java.util.List;

/**
 * 角色服务接口
 * 
 * @author Joe
 */
public interface RoleService extends BaseService<Role> {
	
	/**
	 * 启用禁用操作
	 * @param isEnable 是否启用
	 * @param idList 角色ID集合
	 * @return
	 */
	void enable(Boolean isEnable, List<Long> idList);
	
	/**
	 * 根据角色名称和应用ID查询分页列表
	 * @param name 角色名称
	 * @param current 分页起始
	 * @param size 分页记录数
	 * @return
	 */
	Page<Role> selectPage(String name, Long current, Long size);
	
	/**
	 * 查询应用可用角色
	 * @param isEnable 是否启用
	 * @return
	 */
	List<Role> selectAll(Boolean isEnable);
	
	List<PermissionDTO> getRoleList(Long userId);

	void deleteByIds(Collection<Long> idList);
}
