package com.erp.permission.service;

import com.erp.permission.dto.*;

import java.util.List;

/**
 * 角色服务接口
 */
public interface RoleService {
    
    /**
     * 获取角色列表（支持关键字过滤）
     */
    RoleListResponse listRoles(String keyword);
    
    /**
     * 获取角色详情
     */
    RoleDTO getRole(Long id);
    
    /**
     * 创建角色
     */
    RoleDTO createRole(CreateRoleRequest request);
    
    /**
     * 更新角色
     */
    RoleDTO updateRole(Long id, UpdateRoleRequest request);
    
    /**
     * 删除角色
     */
    void deleteRole(Long id);
    
    /**
     * 获取角色的权限列表
     */
    List<String> getRolePermissions(Long id);
    
    /**
     * 分配角色权限
     */
    void assignPermissions(Long roleId, AssignPermissionsRequest request);
    
    /**
     * 检查角色标识是否存在
     */
    boolean existsBySlug(String slug);
    
    /**
     * 检查角色标识是否存在（排除指定ID）
     */
    boolean existsBySlugAndIdNot(String slug, Long excludeId);
    
    /**
     * 根据slug获取角色
     */
    RoleDTO getRoleBySlug(String slug);
}
