package com.qianwen.smartman.common.cache; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import com.qianwen.smartman.common.constant.ExtCacheConstant; import com.qianwen.core.cache.utils.CacheUtil; import com.qianwen.core.tool.utils.SpringUtil; import com.qianwen.smartman.modules.system.entity.Dept; import com.qianwen.smartman.modules.system.entity.Menu; import com.qianwen.smartman.modules.system.entity.Post; import com.qianwen.smartman.modules.system.entity.Role; import com.qianwen.smartman.modules.system.entity.Tenant; import com.qianwen.smartman.modules.system.service.IDataScopeManagerService; import com.qianwen.smartman.modules.system.service.IMenuService; import com.qianwen.smartman.modules.system.service.IPostService; import com.qianwen.smartman.modules.system.service.IRoleService; import com.qianwen.smartman.modules.system.service.ITenantService; public class SysCache { private static final String MENU_ID = "menu:id:"; private static final String DEPT_ID = "dept:id:"; private static final String DEPT_NAME = "dept:name:"; private static final String DEPT_NAME_FUZZY = "dept:nameFuzzy:"; private static final String DEPT_NAME_ID = "deptName:id:"; private static final String DEPT_NAMES_ID = "deptNames:id:"; private static final String DEPT_CHILD_ID = "deptChild:id:"; private static final String DEPT_CHILDIDS_ID = "deptChildIds:id:"; private static final String POST_ID = "post:id:"; private static final String POST_NAME = "post:name:"; private static final String POST_NAME_FUZZY = "post:nameFuzzy:"; private static final String POST_NAME_ID = "postName:id:"; private static final String POST_NAMES_ID = "postNames:id:"; private static final String ROLE_ID = "role:id:"; private static final String ROLE_NAME = "role:name:"; private static final String ROLE_NAME_ID = "roleName:id:"; private static final String ROLE_NAMES_ID = "roleNames:id:"; private static final String ROLE_ALIAS_ID = "roleAlias:id:"; private static final String ROLE_ALIASES_ID = "roleAliases:id:"; private static final String TENANT_ID = "tenant:id:"; private static final String TENANT_TENANT_ID = "tenant:tenantId:"; private static final IMenuService menuService = (IMenuService) SpringUtil.getBean(IMenuService.class); private static final IDataScopeManagerService deptService = (IDataScopeManagerService) SpringUtil.getBean(IDataScopeManagerService.class); private static final IPostService postService = (IPostService) SpringUtil.getBean(IPostService.class); private static final IRoleService roleService = (IRoleService) SpringUtil.getBean(IRoleService.class); private static final ITenantService tenantService = (ITenantService) SpringUtil.getBean(ITenantService.class); public static Menu getMenu(Long id) { return (Menu) CacheUtil.get("blade:sys", MENU_ID, id, () -> { return (Menu) menuService.getById(id); }, ExtCacheConstant.TENANT_MODE); } public static Dept getDept(Long id) { return (Dept) CacheUtil.get("blade:sys", DEPT_ID, id, () -> { return (Dept) deptService.getById(id); }, ExtCacheConstant.TENANT_MODE); } public static String getDeptIds(String tenantId, String deptNames) { return (String) CacheUtil.get("blade:sys", DEPT_NAME, tenantId + "-" + deptNames, () -> { return deptService.getDeptIds(tenantId, deptNames); }, ExtCacheConstant.TENANT_MODE); } public static String getDeptIdsByFuzzy(String tenantId, String deptNames) { return (String) CacheUtil.get("blade:sys", DEPT_NAME_FUZZY, tenantId + "-" + deptNames, () -> { return deptService.getDeptIdsByFuzzy(tenantId, deptNames); }, ExtCacheConstant.TENANT_MODE); } public static String getDeptName(Long id) { return (String) CacheUtil.get("blade:sys", DEPT_NAME_ID, id, () -> { return ((Dept) deptService.getById(id)).getDeptName(); }, ExtCacheConstant.TENANT_MODE); } public static List getDeptNames(String deptIds) { return (List) CacheUtil.get("blade:sys", DEPT_NAMES_ID, deptIds, () -> { return deptService.getDeptNames(deptIds); }, ExtCacheConstant.TENANT_MODE); } public static List getDeptChild(Long deptId) { return (List) CacheUtil.get("blade:sys", DEPT_CHILD_ID, deptId, () -> { return deptService.getDeptChild(deptId); }, ExtCacheConstant.TENANT_MODE); } public static List getDeptChildIds(Long deptId) { if (deptId == null) { return null; } List deptIdList = (List) CacheUtil.get("blade:sys", DEPT_CHILDIDS_ID, deptId, List.class, ExtCacheConstant.TENANT_MODE); List deptIdList2 = deptIdList; if (deptIdList == null) { List deptIdList3 = new ArrayList<>(); List deptChild = getDeptChild(deptId); if (deptChild != null) { List collect = (List) deptChild.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); deptIdList3.addAll(collect); } deptIdList3.add(deptId); CacheUtil.put("blade:sys", DEPT_CHILDIDS_ID, deptId, deptIdList3, ExtCacheConstant.TENANT_MODE); deptIdList2 = deptIdList3; } return deptIdList2; } public static Post getPost(Long id) { return (Post) CacheUtil.get("blade:sys", POST_ID, id, () -> { return (Post) postService.getById(id); }, ExtCacheConstant.TENANT_MODE); } public static String getPostIds(String tenantId, String postNames) { return (String) CacheUtil.get("blade:sys", POST_NAME, tenantId + "-" + postNames, () -> { return postService.getPostIds(tenantId, postNames); }, ExtCacheConstant.TENANT_MODE); } public static String getPostIdsByFuzzy(String tenantId, String postNames) { return (String) CacheUtil.get("blade:sys", POST_NAME_FUZZY, tenantId + "-" + postNames, () -> { return postService.getPostIdsByFuzzy(tenantId, postNames); }, ExtCacheConstant.TENANT_MODE); } public static String getPostName(Long id) { return (String) CacheUtil.get("blade:sys", POST_NAME_ID, id, () -> { return ((Post) postService.getById(id)).getPostName(); }, ExtCacheConstant.TENANT_MODE); } public static List getPostNames(String postIds) { return (List) CacheUtil.get("blade:sys", POST_NAMES_ID, postIds, () -> { return postService.getPostNames(postIds); }, ExtCacheConstant.TENANT_MODE); } public static Role getRole(Long id) { return (Role) CacheUtil.get("blade:sys", ROLE_ID, id, () -> { return (Role) roleService.getById(id); }, ExtCacheConstant.TENANT_MODE); } public static String getRoleIds(String tenantId, String roleNames) { return (String) CacheUtil.get("blade:sys", ROLE_NAME, tenantId + "-" + roleNames, () -> { return roleService.getRoleIds(tenantId, roleNames); }, ExtCacheConstant.TENANT_MODE); } public static String getRoleName(Long id) { return (String) CacheUtil.get("blade:sys", ROLE_NAME_ID, id, () -> { return ((Role) roleService.getById(id)).getRoleName(); }, ExtCacheConstant.TENANT_MODE); } public static List getRoleNames(String roleIds) { return (List) CacheUtil.get("blade:sys", ROLE_NAMES_ID, roleIds, () -> { return roleService.getRoleNames(roleIds); }, ExtCacheConstant.TENANT_MODE); } public static String getRoleAlias(Long id) { return (String) CacheUtil.get("blade:sys", ROLE_ALIAS_ID, id, () -> { return ((Role) roleService.getById(id)).getRoleAlias(); }, ExtCacheConstant.TENANT_MODE); } public static List getRoleAliases(String roleIds) { return (List) CacheUtil.get("blade:sys", ROLE_ALIASES_ID, roleIds, () -> { return roleService.getRoleAliases(roleIds); }, ExtCacheConstant.TENANT_MODE); } public static Tenant getTenant(Long id) { return (Tenant) CacheUtil.get("blade:sys", TENANT_ID, id, () -> { return (Tenant) tenantService.getById(id); }, ExtCacheConstant.TENANT_MODE); } public static Tenant getTenant(String tenantId) { return (Tenant) CacheUtil.get("blade:sys", TENANT_TENANT_ID, tenantId, () -> { return tenantService.getByTenantId(tenantId); }, ExtCacheConstant.TENANT_MODE); } }