/**
|
* BladeX Commercial License Agreement
|
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
|
* <p>
|
* Use of this software is governed by the Commercial License Agreement
|
* obtained after purchasing a license from BladeX.
|
* <p>
|
* 1. This software is for development use only under a valid license
|
* from BladeX.
|
* <p>
|
* 2. Redistribution of this software's source code to any third party
|
* without a commercial license is strictly prohibited.
|
* <p>
|
* 3. Licensees may copyright their own code but cannot use segments
|
* from this software for such purposes. Copyright of this software
|
* remains with BladeX.
|
* <p>
|
* Using this software signifies agreement to this License, and the software
|
* must not be used for illegal purposes.
|
* <p>
|
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
|
* not liable for any claims arising from secondary or illegal development.
|
* <p>
|
* Author: Chill Zhuang (bladejava@qq.com)
|
*/
|
package org.springblade.system.cache;
|
|
import org.springblade.core.cache.utils.CacheUtil;
|
import org.springblade.core.tool.utils.SpringUtil;
|
import org.springblade.core.tool.utils.StringPool;
|
import org.springblade.system.feign.IApiScopeClient;
|
|
import java.util.List;
|
|
import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
|
|
/**
|
* 接口权限缓存
|
*
|
* @author Chill
|
*/
|
public class ApiScopeCache {
|
|
private static final String SCOPE_CACHE_ROLE = "apiScope:role:";
|
|
private static final String SCOPE_CACHE_CODE = "apiScope:code:";
|
|
private static final String SCOPE_CACHE_MENU = "apiScope:menu:";
|
|
private static IApiScopeClient apiScopeClient;
|
|
private static IApiScopeClient getApiScopeClient() {
|
if (apiScopeClient == null) {
|
apiScopeClient = SpringUtil.getBean(IApiScopeClient.class);
|
}
|
return apiScopeClient;
|
}
|
|
/**
|
* 获取接口权限地址
|
*
|
* @param roleId 角色id
|
* @return permissions
|
*/
|
public static List<String> permissionPath(String roleId) {
|
List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_ROLE, roleId, List.class, Boolean.FALSE);
|
if (permissions == null) {
|
permissions = getApiScopeClient().permissionPath(roleId);
|
CacheUtil.put(SYS_CACHE, SCOPE_CACHE_ROLE, roleId, permissions, Boolean.FALSE);
|
}
|
return permissions;
|
}
|
|
/**
|
* 获取接口权限信息
|
*
|
* @param permission 权限编号
|
* @param roleId 角色id
|
* @return permissions
|
*/
|
public static List<String> permissionCode(String permission, String roleId) {
|
List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, List.class, Boolean.FALSE);
|
if (permissions == null) {
|
permissions = getApiScopeClient().permissionCode(permission, roleId);
|
CacheUtil.put(SYS_CACHE, SCOPE_CACHE_CODE, permission + StringPool.COLON + roleId, permissions, Boolean.FALSE);
|
}
|
return permissions;
|
}
|
|
/**
|
* 获取菜单权限信息
|
*
|
* @param permission 菜单编号
|
* @param roleId 角色id
|
* @return permissions
|
*/
|
public static List<String> permissionMenu(String permission, String roleId) {
|
List<String> permissions = CacheUtil.get(SYS_CACHE, SCOPE_CACHE_MENU, permission + StringPool.COLON + roleId, List.class, Boolean.FALSE);
|
if (permissions == null) {
|
permissions = getApiScopeClient().permissionMenu(permission, roleId);
|
CacheUtil.put(SYS_CACHE, SCOPE_CACHE_MENU, permission + StringPool.COLON + roleId, permissions, Boolean.FALSE);
|
}
|
return permissions;
|
}
|
|
}
|