package com.qmth.teachcloud.common.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.qmth.teachcloud.common.bean.dto.PrivilegeDto;
import com.qmth.teachcloud.common.entity.SysPrivilege;

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

/**
 * <p>
 * 菜单权限表 服务类
 * </p>
 *
 * @author xf
 * @since 2021-03-23
 */
public interface SysPrivilegeService extends IService<SysPrivilege> {

    List<PrivilegeDto> listPrivilegeTree();

    /**
     * 获取所有权限
     *
     * @return
     */
    List<PrivilegeDto> listPrivilegeTreeNew();

    Long savePrivilege(SysPrivilege privilege);

    boolean remove(Long id);

    List<String> getRolePrivileges(Long roleId);

    List<PrivilegeDto> listPrivilegeTreeAuth();

    /**
     * 是否包含某个权限
     *
     * @param urls
     * @return
     */
    boolean existsPrivilege(String... urls);

    List<SysPrivilege> getClientUrlByUserId(Long userId);

//    /**
//     * 获取所有角色权限
//     *
//     * @return
//     */
//    List<SysRolePrivilegeDto> getRolePrivilegeList();
//
//    /**
//     * 获取所有角色权限数量
//     *
//     * @return
//     */
//    Integer getRolePrivilegeCount();
//
//    /**
//     * 查找默认菜单权限
//     *
//     * @return
//     */
//    List<SysPrivilege> findByDefault();

    /**
     * 递归树查询(同级及以上)
     *
     * @param privilegeId
     * @return
     */
    List<SysPrivilege> findByConnectByParentId(Long privilegeId);

    /**
     * 获取菜单树公用
     *
     * @param sysPrivilegeList
     * @return
     */
    Collection<?> getMenuTreeCommon(Collection<?> sysPrivilegeList);
}
