//------------------------------------------------------------------------------
//  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充
//  此代码版权(除特别声明外的代码)归作者本人Diego所有
//  源代码使用协议遵循本仓库的开源协议及附加协议
//  Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway
//  Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway
//  使用文档:https://thingsgateway.cn/
//  QQ群:605534569
//------------------------------------------------------------------------------
namespace ThingsGateway.Admin.Application;
/// 
/// 资源服务接口,定义了资源相关操作的接口方法
/// 
public interface ISysResourceService
{
    /// 
    /// 更改父级
    /// 
    /// 
    /// 
    /// 
    Task ChangeParentAsync(long id, long parentMenuId);
    /// 
    /// 构造树形
    /// 
    /// 资源列表
    /// 父ID
    /// 
    IEnumerable ConstructMenuTrees(List resourceList, long parentId = 0);
    /// 
    /// 复制资源到其他模块
    /// 
    /// 
    /// 
    /// 
    Task CopyAsync(IEnumerable ids, long moduleId);
    /// 
    /// 删除资源
    /// 
    /// id列表
    /// 
    Task DeleteResourceAsync(HashSet ids);
    /// 
    /// 从缓存/数据库读取全部资源列表
    /// 
    /// 全部资源列表
    Task> GetAllAsync();
    /// 
    /// 根据菜单Id获取菜单列表
    /// 
    /// 菜单id列表
    /// 菜单列表
    Task> GetMenuByMenuIdsAsync(IEnumerable menuIds);
    /// 
    /// 根据模块Id获取模块列表
    /// 
    /// 模块id列表
    /// 菜单列表
    Task> GetMuduleByMuduleIdsAsync(IEnumerable moduleIds);
    /// 
    /// 获取父菜单集合
    /// 
    /// 所有菜单列表
    /// 我的菜单列表
    /// 
    IEnumerable GetMyParentResources(IEnumerable allMenuList, IEnumerable myMenus);
    /// 
    /// 获取资源所有下级,结果不会转为树形
    /// 
    /// 资源列表
    /// 父Id
    /// 
    IEnumerable GetResourceChilden(IEnumerable resourceList, long parentId);
    /// 
    /// 获取资源所有父级,结果不会转为树形
    /// 
    /// 资源列表
    /// Id
    /// 
    IEnumerable GetResourceParent(IEnumerable resourceList, long resourceId);
    /// 
    /// 表格查询
    /// 
    /// 查询条件
    /// 查询条件
    /// 
    Task> PageAsync(QueryPageOptions options, ResourceTableSearchModel searchModel);
    /// 
    /// 刷新缓存
    /// 
    void RefreshCache();
    /// 
    /// 保存资源
    /// 
    /// 资源
    /// 保存类型
    Task SaveResourceAsync(SysResource input, ItemChangedType type);
}