update 优化 数据权限查询增加缓存
This commit is contained in:
parent
d2ffbfb80b
commit
a82ed1e9dd
@ -60,6 +60,16 @@ public interface CacheNames {
|
|||||||
*/
|
*/
|
||||||
String SYS_OSS = "sys_oss#30d";
|
String SYS_OSS = "sys_oss#30d";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色自定义权限
|
||||||
|
*/
|
||||||
|
String SYS_ROLE_CUSTOM = "sys_role_custom#30d";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门及以下权限
|
||||||
|
*/
|
||||||
|
String SYS_DEPT_AND_CHILD = "sys_dept_and_child#30d";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OSS配置
|
* OSS配置
|
||||||
*/
|
*/
|
||||||
|
@ -15,28 +15,32 @@ import java.util.function.Function;
|
|||||||
public class ObjectUtils extends ObjectUtil {
|
public class ObjectUtils extends ObjectUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 如果对象不为空,则获取对象中的某个字段
|
* 如果对象不为空,则获取对象中的某个字段 ObjectUtils.notNullGetter(user, User::getName);
|
||||||
* <p>
|
*
|
||||||
* 例:
|
|
||||||
* <code>
|
|
||||||
* <p> public class User {
|
|
||||||
* <p> private String name;
|
|
||||||
* <p> // 省略 getter/setter
|
|
||||||
* <p> }
|
|
||||||
* </code>
|
|
||||||
* <code>
|
|
||||||
* <p> User user = userService.queryById(userId);
|
|
||||||
* <p> String name = ObjectUtils.notNullGetter(user,User::getName);
|
|
||||||
* </code>
|
|
||||||
* @param obj 对象
|
* @param obj 对象
|
||||||
* @param func 获取方法
|
* @param func 获取方法
|
||||||
* @return 对象字段
|
* @return 对象字段
|
||||||
*/
|
*/
|
||||||
public static <T,E> E notNullGetter(T obj, Function<T,E> func) {
|
public static <T, E> E notNullGetter(T obj, Function<T, E> func) {
|
||||||
if (isNotNull(obj) && isNotNull(func)) {
|
if (isNotNull(obj) && isNotNull(func)) {
|
||||||
return func.apply(obj);
|
return func.apply(obj);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果对象不为空,则获取对象中的某个字段 ObjectUtils.notNullGetter(user, User::getName, "");
|
||||||
|
*
|
||||||
|
* @param obj 对象
|
||||||
|
* @param func 获取方法
|
||||||
|
* @param defaultValue 默认值
|
||||||
|
* @return 对象字段
|
||||||
|
*/
|
||||||
|
public static <T, E> E notNullGetter(T obj, Function<T, E> func, E defaultValue) {
|
||||||
|
if (isNotNull(obj) && isNotNull(func)) {
|
||||||
|
return func.apply(obj);
|
||||||
|
}
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,12 +5,14 @@ import cn.hutool.core.convert.Convert;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.constant.CacheNames;
|
||||||
import org.dromara.common.core.utils.StreamUtils;
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
import org.dromara.system.domain.SysDept;
|
import org.dromara.system.domain.SysDept;
|
||||||
import org.dromara.system.domain.SysRoleDept;
|
import org.dromara.system.domain.SysRoleDept;
|
||||||
import org.dromara.system.mapper.SysDeptMapper;
|
import org.dromara.system.mapper.SysDeptMapper;
|
||||||
import org.dromara.system.mapper.SysRoleDeptMapper;
|
import org.dromara.system.mapper.SysRoleDeptMapper;
|
||||||
import org.dromara.system.service.ISysDataScopeService;
|
import org.dromara.system.service.ISysDataScopeService;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -36,6 +38,7 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService {
|
|||||||
* @param roleId 角色Id
|
* @param roleId 角色Id
|
||||||
* @return 部门Id组
|
* @return 部门Id组
|
||||||
*/
|
*/
|
||||||
|
@Cacheable(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#roleId")
|
||||||
@Override
|
@Override
|
||||||
public String getRoleCustom(Long roleId) {
|
public String getRoleCustom(Long roleId) {
|
||||||
if (ObjectUtil.isNull(roleId)) {
|
if (ObjectUtil.isNull(roleId)) {
|
||||||
@ -57,6 +60,7 @@ public class SysDataScopeServiceImpl implements ISysDataScopeService {
|
|||||||
* @param deptId 部门Id
|
* @param deptId 部门Id
|
||||||
* @return 部门Id组
|
* @return 部门Id组
|
||||||
*/
|
*/
|
||||||
|
@Cacheable(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId")
|
||||||
@Override
|
@Override
|
||||||
public String getDeptAndChild(Long deptId) {
|
public String getDeptAndChild(Long deptId) {
|
||||||
if (ObjectUtil.isNull(deptId)) {
|
if (ObjectUtil.isNull(deptId)) {
|
||||||
|
@ -27,6 +27,7 @@ import org.dromara.system.mapper.SysUserMapper;
|
|||||||
import org.dromara.system.service.ISysDeptService;
|
import org.dromara.system.service.ISysDeptService;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.Caching;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -250,6 +251,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
* @param bo 部门信息
|
* @param bo 部门信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true)
|
||||||
@Override
|
@Override
|
||||||
public int insertDept(SysDeptBo bo) {
|
public int insertDept(SysDeptBo bo) {
|
||||||
SysDept info = baseMapper.selectById(bo.getParentId());
|
SysDept info = baseMapper.selectById(bo.getParentId());
|
||||||
@ -268,7 +270,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
* @param bo 部门信息
|
* @param bo 部门信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId")
|
@Caching(evict = {
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId"),
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true)
|
||||||
|
})
|
||||||
@Override
|
@Override
|
||||||
public int updateDept(SysDeptBo bo) {
|
public int updateDept(SysDeptBo bo) {
|
||||||
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
|
SysDept dept = MapstructUtils.convert(bo, SysDept.class);
|
||||||
@ -341,7 +346,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
|
|||||||
* @param deptId 部门ID
|
* @param deptId 部门ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#deptId")
|
@Caching(evict = {
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#deptId"),
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId")
|
||||||
|
})
|
||||||
@Override
|
@Override
|
||||||
public int deleteDeptById(Long deptId) {
|
public int deleteDeptById(Long deptId) {
|
||||||
return baseMapper.deleteById(deptId);
|
return baseMapper.deleteById(deptId);
|
||||||
|
@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.constant.CacheNames;
|
||||||
import org.dromara.common.core.constant.SystemConstants;
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.constant.TenantConstants;
|
import org.dromara.common.core.constant.TenantConstants;
|
||||||
import org.dromara.common.core.domain.model.LoginUser;
|
import org.dromara.common.core.domain.model.LoginUser;
|
||||||
@ -33,6 +34,7 @@ import org.dromara.system.mapper.SysRoleMapper;
|
|||||||
import org.dromara.system.mapper.SysRoleMenuMapper;
|
import org.dromara.system.mapper.SysRoleMenuMapper;
|
||||||
import org.dromara.system.mapper.SysUserRoleMapper;
|
import org.dromara.system.mapper.SysUserRoleMapper;
|
||||||
import org.dromara.system.service.ISysRoleService;
|
import org.dromara.system.service.ISysRoleService;
|
||||||
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -328,6 +330,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
|
|||||||
* @param bo 角色信息
|
* @param bo 角色信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#bo.roleId")
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int authDataScope(SysRoleBo bo) {
|
public int authDataScope(SysRoleBo bo) {
|
||||||
@ -404,6 +407,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
|
|||||||
* @param roleIds 需要删除的角色ID
|
* @param roleIds 需要删除的角色ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, allEntries = true)
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int deleteRoleByIds(Long[] roleIds) {
|
public int deleteRoleByIds(Long[] roleIds) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user