diff --git a/sa-token-doc/fun/jur-cache.md b/sa-token-doc/fun/jur-cache.md index b1c1d765..6f12ad23 100644 --- a/sa-token-doc/fun/jur-cache.md +++ b/sa-token-doc/fun/jur-cache.md @@ -11,34 +11,43 @@ @Component public class StpInterfaceImpl implements StpInterface { - // 返回一个账号所拥有的权限码集合 - @Override - public List getPermissionList(Object loginId, String loginType) { - - // 1. 声明权限码集合 - List permissionList = new ArrayList<>(); - - // 2. 遍历角色列表,查询拥有的权限码 - for (String roleId : getRoleList(loginId, loginType)) { - SaSession roleSession = SaSessionCustomUtil.getSessionById("role-" + roleId); - List list = roleSession.get("Permission_List", () -> { - return ...; // 从数据库查询这个角色所拥有的权限列表 - }); - permissionList.addAll(list); - } - - // 3. 返回权限码集合 - return permissionList; - } - - // 返回一个账号所拥有的角色标识集合 - @Override - public List getRoleList(Object loginId, String loginType) { - SaSession session = StpUtil.getSessionByLoginId(loginId); - return session.get("Role_List", () -> { - return ...; // 从数据库查询这个账号id拥有的角色列表 - }); - } + // 返回一个账号所拥有的权限码集合 + @Override + @SuppressWarnings("unchecked") + public List getPermissionList(Object loginId, String loginType) { + + // 1. 声明权限码集合 + List list = new ArrayList<>(); + + // 2. 遍历角色列表,查询拥有的权限码 + for (String roleId : getRoleList(loginId, loginType)) { + List permissionList = (List)SaManager.getSaTokenDao().getObject("satoken:role-find-permission:" + roleId); + if(permissionList == null) { + // 从数据库查询这个角色 id 所拥有的权限列表 + permissionList = ... + // 查好后,set 到缓存中 + SaManager.getSaTokenDao().setObject("satoken:role-find-permission:" + roleId, permissionList, 60 * 60 * 24 * 30); + } + list.addAll(permissionList); + } + + // 3. 返回权限码集合 + return list; + } + + // 返回一个账号所拥有的角色标识集合 + @Override + @SuppressWarnings("unchecked") + public List getRoleList(Object loginId, String loginType) { + List roleList = (List)SaManager.getSaTokenDao().getObject("satoken:loginId-find-role:" + loginId); + if(roleList == null) { + // 从数据库查询这个账号id拥有的角色列表, + roleList = ... + // 查好后,set 到缓存中 + SaManager.getSaTokenDao().setObject("satoken:loginId-find-role:" + loginId, roleList, 60 * 60 * 24 * 30); + } + return roleList; + } } ```