sa-token update

This commit is contained in:
lixiaodong 2023-07-25 19:42:47 +08:00
parent 8a113bb7f8
commit 0733919efc

View File

@ -1,8 +1,5 @@
package net.lab1024.sa.admin.module.system.menu.service; package net.lab1024.sa.admin.module.system.menu.service;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.SneakyThrows;
import net.lab1024.sa.admin.module.system.menu.constant.MenuTypeEnum; import net.lab1024.sa.admin.module.system.menu.constant.MenuTypeEnum;
import net.lab1024.sa.admin.module.system.menu.dao.MenuDao; import net.lab1024.sa.admin.module.system.menu.dao.MenuDao;
import net.lab1024.sa.admin.module.system.menu.domain.entity.MenuEntity; import net.lab1024.sa.admin.module.system.menu.domain.entity.MenuEntity;
@ -25,28 +22,34 @@ public class MenuCacheService {
@Autowired @Autowired
private MenuDao menuDao; private MenuDao menuDao;
private static final Cache<String, List<String>> MENU_URL_CACHE = CacheBuilder.newBuilder().build(); private static List<String> MENU_URL_CACHE = null;
/** /**
* 查询数据表中 需要校验权限的url * 查询 需要校验权限的url
* *
* @return * @return
*/ */
@SneakyThrows
public List<String> queryNeedCheckPermissionsUrl() { public List<String> queryNeedCheckPermissionsUrl() {
return MENU_URL_CACHE.get("MENU_URL_CACHE", () -> { if (null != MENU_URL_CACHE) {
// TODO listen 待确定哪个字段做为url return MENU_URL_CACHE;
return menuDao.queryMenuByType(MenuTypeEnum.POINTS.getValue(), false, false) }
synchronized (MenuCacheService.class) {
if (null != MENU_URL_CACHE) {
return MENU_URL_CACHE;
}
// TODO listen 待确定哪个字段做为url
MENU_URL_CACHE = menuDao.queryMenuByType(MenuTypeEnum.POINTS.getValue(), false, false)
.stream() .stream()
.map(MenuEntity::getApiPerms) .map(MenuEntity::getApiPerms)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
}); return MENU_URL_CACHE;
}
} }
public static void clearCache() { public static void clearCache() {
MENU_URL_CACHE.invalidateAll(); MENU_URL_CACHE = null;
} }
} }