Unverified 提交 f631fc98 authored 作者: fit2cloudrd's avatar fit2cloudrd 提交者: GitHub

fix: 新建仪表板卡顿问题

Co-authored-by: 's avatarwangjiahao <1522128093@qq.com>
上级 4b42e738
...@@ -5,8 +5,8 @@ import org.apache.ibatis.annotations.Param; ...@@ -5,8 +5,8 @@ import org.apache.ibatis.annotations.Param;
public interface ExtSysAuthMapper { public interface ExtSysAuthMapper {
Boolean checkTreeNoManageCount(@Param("userId") Long userId , @Param("modelType") String modelType, @Param("nodeId") String nodeId); Boolean checkTreeNoManageCount(@Param("userId") Long userId, @Param("modelType") String modelType, @Param("nodeId") String nodeId);
String copyAuth(@Param("authSource") String authSource, @Param("authSourceType") String authSourceType, @Param("authUser") String authUser);
} }
...@@ -14,4 +14,8 @@ ...@@ -14,4 +14,8 @@
select if(CHECK_TREE_NO_MANAGE_PRIVILEGE(#{userId},#{modelType},#{nodeId})>0,1,0) select if(CHECK_TREE_NO_MANAGE_PRIVILEGE(#{userId},#{modelType},#{nodeId})>0,1,0)
</select> </select>
<select id="copyAuth" resultType="String">
select copy_auth(#{authSource},#{authSourceType},#{authUser})
</select>
</mapper> </mapper>
package io.dataease.commons.constants;
/**
* Author: wangjiahao
* Date: 2022/4/2
* Description:
*/
public class SysAuthConstants {
public final static String AUTH_SOURCE_TYPE_PANEL = "panel";
public final static String AUTH_SOURCE_TYPE_DATASET = "dataset";
public final static String AUTH_SOURCE_TYPE_DATASOURCE = "link";
}
...@@ -7,6 +7,7 @@ import io.dataease.base.mapper.DatasetGroupMapper; ...@@ -7,6 +7,7 @@ import io.dataease.base.mapper.DatasetGroupMapper;
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper; import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
import io.dataease.commons.constants.AuthConstants; import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.constants.DePermissionType; import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.SysAuthConstants;
import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.TreeUtils; import io.dataease.commons.utils.TreeUtils;
...@@ -54,8 +55,10 @@ public class DataSetGroupService { ...@@ -54,8 +55,10 @@ public class DataSetGroupService {
datasetGroup.setCreateBy(AuthUtils.getUser().getUsername()); datasetGroup.setCreateBy(AuthUtils.getUser().getUsername());
datasetGroup.setCreateTime(System.currentTimeMillis()); datasetGroup.setCreateTime(System.currentTimeMillis());
datasetGroupMapper.insert(datasetGroup); datasetGroupMapper.insert(datasetGroup);
String userName = AuthUtils.getUser().getUsername();
// 清理权限缓存 // 清理权限缓存
CacheUtils.removeAll(AuthConstants.USER_PERMISSION_CACHE_NAME); CacheUtils.removeAll(AuthConstants.USER_PERMISSION_CACHE_NAME);
sysAuthService.copyAuth(datasetGroup.getId(), SysAuthConstants.AUTH_SOURCE_TYPE_DATASET);
} else { } else {
datasetGroupMapper.updateByPrimaryKeySelective(datasetGroup); datasetGroupMapper.updateByPrimaryKeySelective(datasetGroup);
} }
......
...@@ -33,6 +33,7 @@ import io.dataease.provider.datasource.JdbcProvider; ...@@ -33,6 +33,7 @@ import io.dataease.provider.datasource.JdbcProvider;
import io.dataease.provider.DDLProvider; import io.dataease.provider.DDLProvider;
import io.dataease.provider.QueryProvider; import io.dataease.provider.QueryProvider;
import io.dataease.service.engine.EngineService; import io.dataease.service.engine.EngineService;
import io.dataease.service.sys.SysAuthService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -102,6 +103,8 @@ public class DataSetTableService { ...@@ -102,6 +103,8 @@ public class DataSetTableService {
private PermissionService permissionService; private PermissionService permissionService;
@Resource @Resource
private EngineService engineService; private EngineService engineService;
@Resource
private SysAuthService sysAuthService;
private static boolean isUpdatingDatasetTableStatus = false; private static boolean isUpdatingDatasetTableStatus = false;
private static final String lastUpdateTime = "${__last_update_time__}"; private static final String lastUpdateTime = "${__last_update_time__}";
...@@ -261,6 +264,10 @@ public class DataSetTableService { ...@@ -261,6 +264,10 @@ public class DataSetTableService {
datasetTable.setCreateBy(AuthUtils.getUser().getUsername()); datasetTable.setCreateBy(AuthUtils.getUser().getUsername());
datasetTable.setCreateTime(System.currentTimeMillis()); datasetTable.setCreateTime(System.currentTimeMillis());
int insert = datasetTableMapper.insert(datasetTable); int insert = datasetTableMapper.insert(datasetTable);
// 清理权限缓存
CacheUtils.removeAll(AuthConstants.USER_PERMISSION_CACHE_NAME);
sysAuthService.copyAuth(datasetTable.getId(), SysAuthConstants.AUTH_SOURCE_TYPE_DATASET);
// 添加表成功后,获取当前表字段和类型,抽象到dataease数据库 // 添加表成功后,获取当前表字段和类型,抽象到dataease数据库
if (insert == 1) { if (insert == 1) {
saveTableField(datasetTable); saveTableField(datasetTable);
......
...@@ -11,6 +11,7 @@ import io.dataease.base.mapper.DatasourceMapper; ...@@ -11,6 +11,7 @@ import io.dataease.base.mapper.DatasourceMapper;
import io.dataease.base.mapper.ext.ExtDataSourceMapper; import io.dataease.base.mapper.ext.ExtDataSourceMapper;
import io.dataease.base.mapper.ext.query.GridExample; import io.dataease.base.mapper.ext.query.GridExample;
import io.dataease.commons.constants.DePermissionType; import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.SysAuthConstants;
import io.dataease.commons.exception.DEException; import io.dataease.commons.exception.DEException;
import io.dataease.commons.model.AuthURD; import io.dataease.commons.model.AuthURD;
import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.AuthUtils;
...@@ -34,6 +35,7 @@ import io.dataease.provider.datasource.ApiProvider; ...@@ -34,6 +35,7 @@ import io.dataease.provider.datasource.ApiProvider;
import io.dataease.provider.datasource.DatasourceProvider; import io.dataease.provider.datasource.DatasourceProvider;
import io.dataease.service.dataset.DataSetGroupService; import io.dataease.service.dataset.DataSetGroupService;
import io.dataease.service.message.DeMsgutil; import io.dataease.service.message.DeMsgutil;
import io.dataease.service.sys.SysAuthService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -57,6 +59,8 @@ public class DatasourceService { ...@@ -57,6 +59,8 @@ public class DatasourceService {
private DataSetGroupService dataSetGroupService; private DataSetGroupService dataSetGroupService;
@Resource @Resource
private CommonThreadPool commonThreadPool; private CommonThreadPool commonThreadPool;
@Resource
private SysAuthService sysAuthService;
private static List<String> dsTypes = Arrays.asList("TiDB", "StarRocks", "excel", "mysql", "hive", "impala", "mariadb", "ds_doris", "pg", "sqlServer", "oracle", "mongo", "ck", "db2", "es", "redshift", "api"); private static List<String> dsTypes = Arrays.asList("TiDB", "StarRocks", "excel", "mysql", "hive", "impala", "mariadb", "ds_doris", "pg", "sqlServer", "oracle", "mongo", "ck", "db2", "es", "redshift", "api");
@DeCleaner(DePermissionType.DATASOURCE) @DeCleaner(DePermissionType.DATASOURCE)
...@@ -73,6 +77,7 @@ public class DatasourceService { ...@@ -73,6 +77,7 @@ public class DatasourceService {
checkAndUpdateDatasourceStatus(datasource); checkAndUpdateDatasourceStatus(datasource);
datasourceMapper.insertSelective(datasource); datasourceMapper.insertSelective(datasource);
handleConnectionPool(datasource, "add"); handleConnectionPool(datasource, "add");
sysAuthService.copyAuth(datasource.getId(), SysAuthConstants.AUTH_SOURCE_TYPE_DATASOURCE);
return datasource; return datasource;
} }
......
...@@ -6,10 +6,7 @@ import io.dataease.auth.annotation.DeCleaner; ...@@ -6,10 +6,7 @@ import io.dataease.auth.annotation.DeCleaner;
import io.dataease.base.domain.*; import io.dataease.base.domain.*;
import io.dataease.base.mapper.*; import io.dataease.base.mapper.*;
import io.dataease.base.mapper.ext.*; import io.dataease.base.mapper.ext.*;
import io.dataease.commons.constants.AuthConstants; import io.dataease.commons.constants.*;
import io.dataease.commons.constants.CommonConstants;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.PanelConstants;
import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.LogUtil; import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.TreeUtils; import io.dataease.commons.utils.TreeUtils;
...@@ -31,6 +28,7 @@ import io.dataease.service.dataset.DataSetTableService; ...@@ -31,6 +28,7 @@ import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.sys.SysAuthService; import io.dataease.service.sys.SysAuthService;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.pentaho.di.core.util.UUIDUtil; import org.pentaho.di.core.util.UUIDUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -94,7 +92,6 @@ public class PanelGroupService { ...@@ -94,7 +92,6 @@ public class PanelGroupService {
@Resource @Resource
private ExtPanelGroupExtendDataMapper extPanelGroupExtendDataMapper; private ExtPanelGroupExtendDataMapper extPanelGroupExtendDataMapper;
public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) { public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) {
String userId = String.valueOf(AuthUtils.getUser().getUserId()); String userId = String.valueOf(AuthUtils.getUser().getUserId());
panelGroupRequest.setUserId(userId); panelGroupRequest.setUserId(userId);
...@@ -110,22 +107,21 @@ public class PanelGroupService { ...@@ -110,22 +107,21 @@ public class PanelGroupService {
} }
@DeCleaner(DePermissionType.PANEL) @DeCleaner(DePermissionType.PANEL)
// @Transactional
public PanelGroup saveOrUpdate(PanelGroupRequest request) { public PanelGroup saveOrUpdate(PanelGroupRequest request) {
String userName = AuthUtils.getUser().getUsername();
String panelId = request.getId(); String panelId = request.getId();
if(StringUtils.isNotEmpty(panelId)){ if(StringUtils.isNotEmpty(panelId)){
panelViewService.syncPanelViews(request); panelViewService.syncPanelViews(request);
} }
if (StringUtils.isEmpty(panelId)) { if (StringUtils.isEmpty(panelId)) { // 新建
// 新建
checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType()); checkPanelName(request.getName(), request.getPid(), PanelConstants.OPT_TYPE_INSERT, null, request.getNodeType());
panelId = newPanel(request); panelId = newPanel(request);
panelGroupMapper.insert(request); panelGroupMapper.insert(request);
// 清理权限缓存 // 清理权限缓存
clearPermissionCache(); clearPermissionCache();
} else if ("toDefaultPanel".equals(request.getOptType())) { sysAuthService.copyAuth(panelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL);
} else if ("toDefaultPanel".equals(request.getOptType())) { // 转存为默认仪表板
panelId = UUID.randomUUID().toString(); panelId = UUID.randomUUID().toString();
// 转存为默认仪表板
PanelGroupWithBLOBs newDefaultPanel = panelGroupMapper.selectByPrimaryKey(request.getId()); PanelGroupWithBLOBs newDefaultPanel = panelGroupMapper.selectByPrimaryKey(request.getId());
newDefaultPanel.setPanelType(PanelConstants.PANEL_TYPE_SYSTEM); newDefaultPanel.setPanelType(PanelConstants.PANEL_TYPE_SYSTEM);
newDefaultPanel.setNodeType(PanelConstants.PANEL_NODE_TYPE_PANEL); newDefaultPanel.setNodeType(PanelConstants.PANEL_NODE_TYPE_PANEL);
...@@ -139,10 +135,12 @@ public class PanelGroupService { ...@@ -139,10 +135,12 @@ public class PanelGroupService {
panelGroupMapper.insertSelective(newDefaultPanel); panelGroupMapper.insertSelective(newDefaultPanel);
// 清理权限缓存 // 清理权限缓存
clearPermissionCache(); clearPermissionCache();
sysAuthService.copyAuth(panelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL);
} else if ("copy".equals(request.getOptType())) { } else if ("copy".equals(request.getOptType())) {
panelId = this.panelGroupCopy(request, null, true); panelId = this.panelGroupCopy(request, null, true);
// 清理权限缓存 // 清理权限缓存
clearPermissionCache(); clearPermissionCache();
sysAuthService.copyAuth(panelId, SysAuthConstants.AUTH_SOURCE_TYPE_PANEL);
} else if ("move".equals(request.getOptType())) { } else if ("move".equals(request.getOptType())) {
PanelGroupWithBLOBs panelInfo = panelGroupMapper.selectByPrimaryKey(request.getId()); PanelGroupWithBLOBs panelInfo = panelGroupMapper.selectByPrimaryKey(request.getId());
if (panelInfo.getPid().equalsIgnoreCase(request.getPid())) { if (panelInfo.getPid().equalsIgnoreCase(request.getPid())) {
...@@ -447,5 +445,4 @@ public class PanelGroupService { ...@@ -447,5 +445,4 @@ public class PanelGroupService {
CacheUtils.removeAll(AuthConstants.DEPT_PANEL_NAME); CacheUtils.removeAll(AuthConstants.DEPT_PANEL_NAME);
} }
} }
...@@ -20,4 +20,9 @@ public class SysAuthService { ...@@ -20,4 +20,9 @@ public class SysAuthService {
} }
} }
public void copyAuth(String authSource,String authSourceType){
String userName = AuthUtils.getUser().getUsername();
extSysAuthMapper.copyAuth(authSource,authSourceType,userName);
}
} }
...@@ -101,9 +101,7 @@ ADD COLUMN `copy_from` varchar(255) NULL COMMENT '复制来源' AFTER `update_ti ...@@ -101,9 +101,7 @@ ADD COLUMN `copy_from` varchar(255) NULL COMMENT '复制来源' AFTER `update_ti
ADD COLUMN `copy_id` varchar(255) NULL COMMENT '复制ID' AFTER `copy_from`; ADD COLUMN `copy_id` varchar(255) NULL COMMENT '复制ID' AFTER `copy_from`;
-- ----------------------------
-- Function structure for copy_auth
-- ----------------------------
DROP FUNCTION IF EXISTS `copy_auth`; DROP FUNCTION IF EXISTS `copy_auth`;
delimiter ;; delimiter ;;
CREATE FUNCTION `copy_auth`(authSource varchar(255),authSourceType varchar(255),authUser varchar(255)) CREATE FUNCTION `copy_auth`(authSource varchar(255),authSourceType varchar(255),authUser varchar(255))
...@@ -130,25 +128,25 @@ select id from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth ...@@ -130,25 +128,25 @@ select id from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth
delete from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType; delete from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType;
INSERT INTO sys_auth ( INSERT INTO sys_auth (
id, id,
auth_source, auth_source,
auth_source_type, auth_source_type,
auth_target, auth_target,
auth_target_type, auth_target_type,
auth_time, auth_time,
auth_user auth_user
) )
VALUES VALUES
( (
authId, authId,
authSource, authSource,
authSourceType, authSourceType,
userId, userId,
'user', 'user',
unix_timestamp( unix_timestamp(
now())* 1000,'auto'); now())* 1000,'auto');
INSERT INTO sys_auth_detail ( INSERT INTO sys_auth_detail (
id, id,
auth_id, auth_id,
privilege_name, privilege_name,
...@@ -175,50 +173,52 @@ VALUES ...@@ -175,50 +173,52 @@ VALUES
insert into sys_auth( insert into sys_auth(
id, id,
auth_source, auth_source,
auth_source_type, auth_source_type,
auth_target, auth_target,
auth_target_type, auth_target_type,
auth_time, auth_time,
auth_user, auth_user,
copy_from, copy_from,
copy_id copy_id
) )
SELECT SELECT
uuid() as id, uuid() as id,
authSource as auth_source, authSource as auth_source,
authSourceType as auth_source_type, authSourceType as auth_source_type,
auth_target, auth_target,
auth_target_type, auth_target_type,
NOW()* 1000 as auth_time, NOW()* 1000 as auth_time,
'auto' as auth_user, 'auto' as auth_user,
id as copy_from, id as copy_from,
copyId as copy_id copyId as copy_id
FROM FROM
sys_auth sys_auth
WHERE WHERE
auth_source IN ( auth_source = (
SELECT SELECT
pid pid
FROM FROM
v_auth_model v_auth_model
WHERE WHERE
id = authSource id = authSource
AND model_type = authSourceType AND model_type = authSourceType
) )
AND auth_source_type = authSourceType; AND auth_source_type = authSourceType
and concat(auth_target,'-',auth_target_type) !=CONCAT(userId,'-','user');
INSERT INTO sys_auth_detail ( INSERT INTO sys_auth_detail (
id, id,
auth_id, auth_id,
privilege_name, privilege_name,
privilege_type, privilege_type,
privilege_value, privilege_value,
privilege_extend, privilege_extend,
remark, remark,
create_user, create_user,
create_time, create_time,
copy_from, copy_from,
copy_id copy_id
) SELECT ) SELECT
uuid() AS id, uuid() AS id,
sa_copy.t_id AS auth_id, sa_copy.t_id AS auth_id,
...@@ -233,16 +233,38 @@ now())* 1000 AS create_time, ...@@ -233,16 +233,38 @@ now())* 1000 AS create_time,
id AS copy_from, id AS copy_from,
copyId AS copy_id copyId AS copy_id
FROM FROM
sys_auth_detail sys_auth_detail
INNER JOIN ( INNER JOIN (
SELECT SELECT
id AS t_id, id AS t_id,
copy_from AS s_id copy_from AS s_id
FROM FROM
sys_auth sys_auth
WHERE WHERE
copy_id = copyId copy_id = copyId
) sa_copy ON sys_auth_detail.auth_id = sa_copy.s_id; ) sa_copy ON sys_auth_detail.auth_id = sa_copy.s_id;
RETURN 'success';
END
;;
delimiter ;
-- ----------------------------
-- Function structure for delete_auth_source
-- ----------------------------
DROP FUNCTION IF EXISTS `delete_auth_source`;
delimiter ;;
CREATE FUNCTION `delete_auth_source`(authSource varchar(255),authSourceType varchar(255))
RETURNS varchar(255) CHARSET utf8mb4
READS SQL DATA
BEGIN
delete from sys_auth_detail where auth_id in (
select id from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType
);
delete from sys_auth where sys_auth.auth_source=authSource and sys_auth.auth_source_type=authSourceType;
RETURN 'success'; RETURN 'success';
...@@ -336,3 +358,8 @@ CREATE TABLE `panel_outer_params_target_view_info` ( ...@@ -336,3 +358,8 @@ CREATE TABLE `panel_outer_params_target_view_info` (
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
update `my_plugin` set `name` = 'X-Pack默认插件' where `plugin_id` = 1; update `my_plugin` set `name` = 'X-Pack默认插件' where `plugin_id` = 1;
update `my_plugin` set `module_name` = 'view-bubblemap-backend' where `plugin_id` = 2; update `my_plugin` set `module_name` = 'view-bubblemap-backend' where `plugin_id` = 2;
DROP TRIGGER `new_auth_panel`;
DROP TRIGGER `new_auth_dataset_group`;
DROP TRIGGER `new_auth_dataset_table`;
DROP TRIGGER `new_auth_link`;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论