forked from github/dataease
fix: 修改权限查询效率问题等
This commit is contained in:
parent
7ebb015bd6
commit
f6f668cad7
@ -305,32 +305,22 @@ delimiter ;
|
||||
-- ----------------------------
|
||||
DROP FUNCTION IF EXISTS `GET_V_AUTH_MODEL_ID_P_USE`;
|
||||
delimiter ;;
|
||||
CREATE FUNCTION `GET_V_AUTH_MODEL_ID_P_USE`(userId longtext,modelType varchar(255))
|
||||
RETURNS longtext CHARSET utf8
|
||||
READS SQL DATA
|
||||
CREATE DEFINER=`root`@`%` FUNCTION `GET_V_AUTH_MODEL_ID_P_USE`(userId longtext,modelType varchar(255)) RETURNS longtext CHARSET utf8
|
||||
READS SQL DATA
|
||||
BEGIN
|
||||
|
||||
DECLARE oTempIds longtext;
|
||||
DECLARE oTempLeafIds longtext;
|
||||
DECLARE oTempAllIds longtext;
|
||||
select GROUP_CONCAT(auth_source) into oTempLeafIds from (
|
||||
SELECT
|
||||
GROUP_CONCAT(mainInfo.id) into oTempIds
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
v_auth_model.*,
|
||||
authTemp.used_auth
|
||||
FROM
|
||||
v_auth_model
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
sys_auth.auth_source_type,
|
||||
sys_auth.auth_source,
|
||||
IF
|
||||
( sum( privilege_value )> 0, 1, 0 ) used_auth
|
||||
sys_auth.auth_source
|
||||
FROM
|
||||
sys_auth
|
||||
LEFT JOIN sys_auth_detail ON sys_auth.id = sys_auth_detail.auth_id
|
||||
WHERE
|
||||
sys_auth_detail.privilege_type = 1
|
||||
and sys_auth.auth_source_type = modelType
|
||||
AND (
|
||||
(
|
||||
sys_auth.auth_target_type = 'dept'
|
||||
@ -348,65 +338,11 @@ FROM
|
||||
GROUP BY
|
||||
sys_auth.auth_source_type,
|
||||
sys_auth.auth_source
|
||||
) authTemp ON v_auth_model.model_type = authTemp.auth_source_type
|
||||
AND v_auth_model.id = authTemp.auth_source
|
||||
WHERE authTemp.auth_source_type=modelType and
|
||||
(
|
||||
v_auth_model.node_type = 'spine'
|
||||
OR (
|
||||
v_auth_model.node_type = 'leaf'
|
||||
AND authTemp.used_auth = 1
|
||||
))) mainInfo
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
count( 1 ) AS `children_count`,
|
||||
v_auth_model.pid
|
||||
FROM
|
||||
v_auth_model
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
sys_auth.auth_source_type,
|
||||
sys_auth.auth_source,
|
||||
IF
|
||||
( sum( privilege_value )> 0, 1, 0 ) used_auth
|
||||
FROM
|
||||
sys_auth
|
||||
LEFT JOIN sys_auth_detail ON sys_auth.id = sys_auth_detail.auth_id
|
||||
WHERE
|
||||
sys_auth_detail.privilege_type = 1
|
||||
AND (
|
||||
(
|
||||
sys_auth.auth_target_type = 'dept'
|
||||
AND sys_auth.auth_target = ( SELECT dept_id FROM sys_user WHERE user_id = userId )
|
||||
)
|
||||
OR (
|
||||
sys_auth.auth_target_type = 'user'
|
||||
AND sys_auth.auth_target = userId
|
||||
)
|
||||
OR (
|
||||
sys_auth.auth_target_type = 'role'
|
||||
AND sys_auth.auth_target = ( SELECT role_id FROM sys_users_roles WHERE user_id = userId )
|
||||
)
|
||||
)
|
||||
GROUP BY
|
||||
sys_auth.auth_source_type,
|
||||
sys_auth.auth_source
|
||||
) authTemp ON v_auth_model.model_type = authTemp.auth_source_type
|
||||
AND v_auth_model.id = authTemp.auth_source
|
||||
WHERE
|
||||
authTemp.auth_source_type=modelType and
|
||||
(
|
||||
v_auth_model.node_type = 'spine'
|
||||
OR (
|
||||
v_auth_model.node_type = 'leaf'
|
||||
AND authTemp.used_auth = 1
|
||||
))
|
||||
GROUP BY
|
||||
v_auth_model.pid
|
||||
) countTemp ON mainInfo.id = countTemp.pid
|
||||
where
|
||||
(countTemp.children_count>0 or mainInfo.used_auth=1);
|
||||
RETURN oTempIds;
|
||||
having sum( sys_auth_detail.privilege_value )> 0) temp;
|
||||
|
||||
select GROUP_CONCAT(id) into oTempAllIds from v_auth_model where v_auth_model.model_type=modelType and FIND_IN_SET(v_auth_model.id,GET_V_AUTH_MODEL_WITH_PARENT ( oTempLeafIds ,modelType));
|
||||
|
||||
RETURN oTempAllIds;
|
||||
END
|
||||
;;
|
||||
delimiter ;
|
||||
|
@ -53,7 +53,7 @@
|
||||
</span>
|
||||
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span v-if="hasDataPermission('manage',data.privileges)">
|
||||
<span v-if="data.type ==='group'" @click.stop>
|
||||
<el-dropdown trigger="click" size="small" @command="clickAdd">
|
||||
<span class="el-dropdown-link">
|
||||
@ -73,8 +73,8 @@
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</span>
|
||||
<span style="margin-left: 12px;" @click.stop>
|
||||
<el-dropdown v-if="hasDataPermission('manage',data.privileges)" trigger="click" size="small" @command="clickMore">
|
||||
<span style="margin-left: 12px;" @click.stop >
|
||||
<el-dropdown trigger="click" size="small" @command="clickMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
icon="el-icon-more"
|
||||
@ -155,9 +155,9 @@
|
||||
<span><svg-icon :icon-class="data.type" /></span>
|
||||
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span style="margin-left: 12px;" @click.stop>
|
||||
<el-dropdown v-if="hasDataPermission('manage',data.privileges)" trigger="click" size="small" @command="clickMore">
|
||||
<span v-if="hasDataPermission('manage',data.privileges)">
|
||||
<span style="margin-left: 12px;" @click.stop >
|
||||
<el-dropdown trigger="click" size="small" @command="clickMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
icon="el-icon-more"
|
||||
|
@ -53,7 +53,7 @@
|
||||
</span>
|
||||
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span v-if="hasDataPermission('manage',data.privileges)">
|
||||
<span v-if="data.type ==='group'" @click.stop>
|
||||
<el-dropdown trigger="click" size="small" @command="clickAdd">
|
||||
<span class="el-dropdown-link">
|
||||
@ -73,7 +73,7 @@
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</span>
|
||||
<span style="margin-left: 12px;" @click.stop>
|
||||
<span style="margin-left: 12px;" @click.stop >
|
||||
<el-dropdown trigger="click" size="small" @command="clickMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
@ -82,7 +82,7 @@
|
||||
size="small"
|
||||
/>
|
||||
</span>
|
||||
<el-dropdown-menu v-if="hasDataPermission('manage',data.privileges)" slot="dropdown">
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item icon="el-icon-edit-outline" :command="beforeClickMore('rename',data,node)">
|
||||
{{ $t('dataset.rename') }}
|
||||
</el-dropdown-item>
|
||||
@ -193,8 +193,8 @@
|
||||
</span>
|
||||
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span style="margin-left: 12px;" @click.stop>
|
||||
<span v-if="hasDataPermission('manage',data.privileges)">
|
||||
<span style="margin-left: 12px;" @click.stop >
|
||||
<el-dropdown trigger="click" size="small" @command="clickMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
@ -203,7 +203,7 @@
|
||||
size="small"
|
||||
/>
|
||||
</span>
|
||||
<el-dropdown-menu v-if="hasDataPermission('manage',data.privileges)" slot="dropdown">
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item icon="el-icon-edit-outline" :command="beforeClickMore('editTable',data,node)">
|
||||
{{ $t('dataset.rename') }}
|
||||
</el-dropdown-item>
|
||||
|
@ -55,7 +55,7 @@
|
||||
</span>
|
||||
<span style="margin-left: 6px">{{ data.name }}</span>
|
||||
</span>
|
||||
<span>
|
||||
<span v-if="hasDataPermission('manage',data.privileges)">
|
||||
<span v-if="data.nodeType ==='folder'" @click.stop>
|
||||
<el-dropdown trigger="click" size="small" @command="showEditPanel">
|
||||
<span class="el-dropdown-link">
|
||||
@ -76,7 +76,7 @@
|
||||
</el-dropdown>
|
||||
</span>
|
||||
<span style="margin-left: 12px;" @click.stop>
|
||||
<el-dropdown v-if="hasDataPermission('manage',data.privileges)" trigger="click" size="small" @command="clickMore">
|
||||
<el-dropdown trigger="click" size="small" @command="clickMore">
|
||||
<span class="el-dropdown-link">
|
||||
<el-button
|
||||
icon="el-icon-more"
|
||||
|
Loading…
Reference in New Issue
Block a user