fix: 修改权限查询效率问题等

This commit is contained in:
wangjiahao 2021-05-19 19:47:49 +08:00
parent 7ebb015bd6
commit f6f668cad7
4 changed files with 26 additions and 90 deletions

View File

@ -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 ;

View File

@ -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"

View File

@ -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>

View File

@ -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"