forked from github/dataease
fix: 新建资源缓存一致性问题
This commit is contained in:
parent
7ff7025f0c
commit
f6bfccdb24
@ -0,0 +1,14 @@
|
||||
package io.dataease.auth.annotation;
|
||||
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface DeCleaner {
|
||||
DePermissionType value();
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package io.dataease.auth.aop;
|
||||
|
||||
|
||||
import io.dataease.auth.annotation.DeCleaner;
|
||||
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||
import io.dataease.commons.constants.AuthConstants;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.listener.util.CacheUtils;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
@Aspect
|
||||
@Component
|
||||
public class DeCleanerAnnotationHandler {
|
||||
|
||||
@Around(value = "@annotation(io.dataease.auth.annotation.DeCleaner)")
|
||||
public Object CleanerAround(ProceedingJoinPoint point) {
|
||||
try {
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
MethodSignature ms = (MethodSignature) point.getSignature();
|
||||
Method method = ms.getMethod();
|
||||
DeCleaner deCleaner = method.getAnnotation(DeCleaner.class);
|
||||
DePermissionType type = deCleaner.value();
|
||||
switch (type.name()) {
|
||||
case "DATASOURCE":
|
||||
cleanDataSource();
|
||||
break;
|
||||
case "DATASET":
|
||||
cleanDataSet();
|
||||
break;
|
||||
default:
|
||||
cleanPanel();
|
||||
break;
|
||||
}
|
||||
return point.proceed(point.getArgs());
|
||||
|
||||
}catch (Throwable e) {
|
||||
LogUtil.error(e.getMessage(), e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void cleanPanel() {
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
CacheUtils.remove(AuthConstants.USER_PANEL_NAME, "user" + user.getUserId());
|
||||
CacheUtils.remove(AuthConstants.DEPT_PANEL_NAME, "dept" + user.getDeptId());
|
||||
user.getRoles().forEach(role -> {
|
||||
CacheUtils.remove(AuthConstants.ROLE_PANEL_NAME, "role" + role.getId());
|
||||
});
|
||||
}
|
||||
public void cleanDataSet() {
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
CacheUtils.remove(AuthConstants.USER_DATASET_NAME, "user" + user.getUserId());
|
||||
CacheUtils.remove(AuthConstants.DEPT_DATASET_NAME, "dept" + user.getDeptId());
|
||||
user.getRoles().forEach(role -> {
|
||||
CacheUtils.remove(AuthConstants.ROLE_DATASET_NAME, "role" + role.getId());
|
||||
});
|
||||
}
|
||||
public void cleanDataSource() {
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
CacheUtils.remove(AuthConstants.USER_LINK_NAME, "user" + user.getUserId());
|
||||
CacheUtils.remove(AuthConstants.DEPT_LINK_NAME, "dept" + user.getDeptId());
|
||||
user.getRoles().forEach(role -> {
|
||||
CacheUtils.remove(AuthConstants.ROLE_LINK_NAME, "role" + role.getId());
|
||||
});
|
||||
}
|
||||
}
|
@ -1,12 +1,15 @@
|
||||
package io.dataease.auth.service.impl;
|
||||
|
||||
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||
import io.dataease.auth.entity.AuthItem;
|
||||
import io.dataease.auth.service.ExtAuthService;
|
||||
import io.dataease.base.domain.SysAuth;
|
||||
import io.dataease.base.mapper.ext.ExtAuthMapper;
|
||||
import io.dataease.commons.constants.AuthConstants;
|
||||
import io.dataease.commons.model.AuthURD;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.listener.util.CacheUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
@ -146,4 +149,7 @@ public class ExtAuthServiceImpl implements ExtAuthService {
|
||||
public void clearRoleResource(Long roleId) {
|
||||
LogUtil.info("all permission resource of role {} is cleanning...", roleId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
package io.dataease.service.dataset;
|
||||
|
||||
import io.dataease.auth.annotation.DeCleaner;
|
||||
import io.dataease.base.domain.DatasetGroup;
|
||||
import io.dataease.base.domain.DatasetGroupExample;
|
||||
import io.dataease.base.mapper.DatasetGroupMapper;
|
||||
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
import io.dataease.commons.utils.BeanUtils;
|
||||
import io.dataease.commons.utils.TreeUtils;
|
||||
@ -39,6 +41,7 @@ public class DataSetGroupService {
|
||||
@Resource
|
||||
private SysAuthService sysAuthService;
|
||||
|
||||
@DeCleaner(DePermissionType.DATASET)
|
||||
public DataSetGroupDTO save(DatasetGroup datasetGroup) {
|
||||
checkName(datasetGroup);
|
||||
if (StringUtils.isEmpty(datasetGroup.getId())) {
|
||||
|
@ -2,10 +2,12 @@ package io.dataease.service.datasource;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.google.gson.Gson;
|
||||
import io.dataease.auth.annotation.DeCleaner;
|
||||
import io.dataease.base.domain.*;
|
||||
import io.dataease.base.mapper.*;
|
||||
import io.dataease.base.mapper.ext.ExtDataSourceMapper;
|
||||
import io.dataease.base.mapper.ext.query.GridExample;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.exception.DEException;
|
||||
import io.dataease.commons.model.AuthURD;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
@ -51,6 +53,7 @@ public class DatasourceService {
|
||||
@Resource
|
||||
private CommonThreadPool commonThreadPool;
|
||||
|
||||
@DeCleaner(DePermissionType.DATASOURCE)
|
||||
public Datasource addDatasource(Datasource datasource) throws Exception{
|
||||
checkName(datasource);
|
||||
long currentTimeMillis = System.currentTimeMillis();
|
||||
|
@ -1,10 +1,12 @@
|
||||
package io.dataease.service.panel;
|
||||
|
||||
import io.dataease.auth.annotation.DeCleaner;
|
||||
import io.dataease.base.domain.*;
|
||||
import io.dataease.base.mapper.ChartViewMapper;
|
||||
import io.dataease.base.mapper.PanelGroupMapper;
|
||||
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
|
||||
import io.dataease.base.mapper.ext.ExtPanelLinkJumpMapper;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.constants.PanelConstants;
|
||||
import io.dataease.commons.utils.AuthUtils;
|
||||
import io.dataease.commons.utils.TreeUtils;
|
||||
@ -75,6 +77,7 @@ public class PanelGroupService {
|
||||
return TreeUtils.mergeTree(panelGroupDTOList, "default_panel");
|
||||
}
|
||||
|
||||
@DeCleaner(DePermissionType.PANEL)
|
||||
@Transactional
|
||||
public PanelGroup saveOrUpdate(PanelGroupRequest request) {
|
||||
try {
|
||||
|
Loading…
Reference in New Issue
Block a user