package com.keyware.shandan.system.service;

import com.keyware.shandan.common.enums.DataPermisScope;
import com.keyware.shandan.common.util.StreamUtil;
import com.keyware.shandan.system.entity.SysPermissions;
import com.keyware.shandan.common.service.IBaseService;

import java.util.HashSet;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统权限表 服务类
 * </p>
 *
 * @author GuoXin
 * @since 2021-05-19
 */
public interface SysPermissionsService extends IBaseService<SysPermissions, String> {

    /**
     * @param permisId 权限ID
     * @return 获取机构权限配置
     */
    List<String> getOrgConfigs(String permisId);

    /**
     * @param permisId 权限ID
     * @return 获取机构权限配置
     */
    List<String> getDirConfigs(String permisId);

    /**
     * @param permisId 权限ID
     * @param orgId    机构ID
     * @return 是否成功
     */
    Boolean configOrg(String permisId, String orgId);

    /**
     * @param permisId 权限ID
     * @param dirId    目录ID
     * @return 是否成功
     */
    Boolean configDir(String permisId, String dirId);

    /**
     * @return 目录树
     */
    List<Map<String, Object>> dirTree();

    /**
     * 获取当前登录用户权限
     * @return 权限集合
     */
    HashSet<SysPermissions> getPermisByCurrentUser();

    /**
     * 判断权限集合中是否有超级管理员权限
     * @param permissionsList 权限集合
     * @return
     */
    default boolean hasSuperAdmin(HashSet<SysPermissions> permissionsList){
        return StreamUtil.as(permissionsList).anyMatch(permis-> permis.getPermisScope() == DataPermisScope.ALL_SCOPE);
    }
}
