package com.erp.permission.service;

import com.erp.permission.dto.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 权限服务接口
 */
public interface PermissionService {
    
    /**
     * 获取权限列表（支持分组和关键字过滤）
     */
    PermissionListResponse listPermissions(String group, String keyword);
    
    /**
     * 获取所有分组名称
     */
    List<String> listGroups();
    
    /**
     * 获取权限详情
     */
    PermissionDTO getPermission(Long id);
    
    /**
     * 创建权限
     */
    PermissionDTO createPermission(CreatePermissionRequest request);
    
    /**
     * 更新权限
     */
    PermissionDTO updatePermission(Long id, UpdatePermissionRequest request);
    
    /**
     * 删除权限
     */
    void deletePermission(Long id);
    
    /**
     * 批量创建权限
     */
    BatchCreateResult batchCreatePermissions(BatchCreatePermissionRequest request);
    
    /**
     * 根据角色ID获取权限标识列表
     */
    List<String> getPermissionSlugsByRoleId(Long roleId);
    
    /**
     * 根据权限标识列表获取权限ID列表
     */
    Set<Long> getPermissionIdsBySlugs(List<String> slugs);
    
    /**
     * 检查权限标识是否存在
     */
    boolean existsBySlug(String slug);
}
