提交 f6f668ca authored 作者: wangjiahao's avatar wangjiahao

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

上级 7ebb015b
...@@ -305,75 +305,22 @@ delimiter ; ...@@ -305,75 +305,22 @@ delimiter ;
-- ---------------------------- -- ----------------------------
DROP FUNCTION IF EXISTS `GET_V_AUTH_MODEL_ID_P_USE`; DROP FUNCTION IF EXISTS `GET_V_AUTH_MODEL_ID_P_USE`;
delimiter ;; delimiter ;;
CREATE FUNCTION `GET_V_AUTH_MODEL_ID_P_USE`(userId longtext,modelType varchar(255)) CREATE DEFINER=`root`@`%` FUNCTION `GET_V_AUTH_MODEL_ID_P_USE`(userId longtext,modelType varchar(255)) RETURNS longtext CHARSET utf8
RETURNS longtext CHARSET utf8
READS SQL DATA READS SQL DATA
BEGIN BEGIN
DECLARE oTempIds longtext; DECLARE oTempLeafIds longtext;
DECLARE oTempAllIds longtext;
select GROUP_CONCAT(auth_source) into oTempLeafIds from (
SELECT 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
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_type,
sys_auth.auth_source 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 FROM
sys_auth sys_auth
LEFT JOIN sys_auth_detail ON sys_auth.id = sys_auth_detail.auth_id LEFT JOIN sys_auth_detail ON sys_auth.id = sys_auth_detail.auth_id
WHERE WHERE
sys_auth_detail.privilege_type = 1 sys_auth_detail.privilege_type = 1
and sys_auth.auth_source_type = modelType
AND ( AND (
( (
sys_auth.auth_target_type = 'dept' sys_auth.auth_target_type = 'dept'
...@@ -391,22 +338,11 @@ FROM ...@@ -391,22 +338,11 @@ FROM
GROUP BY GROUP BY
sys_auth.auth_source_type, sys_auth.auth_source_type,
sys_auth.auth_source sys_auth.auth_source
) authTemp ON v_auth_model.model_type = authTemp.auth_source_type having sum( sys_auth_detail.privilege_value )> 0) temp;
AND v_auth_model.id = authTemp.auth_source
WHERE 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));
authTemp.auth_source_type=modelType and
( RETURN oTempAllIds;
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;
END END
;; ;;
delimiter ; delimiter ;
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
</span> </span>
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span> <span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
</span> </span>
<span> <span v-if="hasDataPermission('manage',data.privileges)">
<span v-if="data.type ==='group'" @click.stop> <span v-if="data.type ==='group'" @click.stop>
<el-dropdown trigger="click" size="small" @command="clickAdd"> <el-dropdown trigger="click" size="small" @command="clickAdd">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</span> </span>
<span style="margin-left: 12px;" @click.stop> <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"> <span class="el-dropdown-link">
<el-button <el-button
icon="el-icon-more" icon="el-icon-more"
...@@ -155,9 +155,9 @@ ...@@ -155,9 +155,9 @@
<span><svg-icon :icon-class="data.type" /></span> <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 style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
</span> </span>
<span> <span v-if="hasDataPermission('manage',data.privileges)">
<span style="margin-left: 12px;" @click.stop> <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"> <span class="el-dropdown-link">
<el-button <el-button
icon="el-icon-more" icon="el-icon-more"
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
</span> </span>
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span> <span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
</span> </span>
<span> <span v-if="hasDataPermission('manage',data.privileges)">
<span v-if="data.type ==='group'" @click.stop> <span v-if="data.type ==='group'" @click.stop>
<el-dropdown trigger="click" size="small" @command="clickAdd"> <el-dropdown trigger="click" size="small" @command="clickAdd">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</span> </span>
<span style="margin-left: 12px;" @click.stop> <span style="margin-left: 12px;" @click.stop >
<el-dropdown trigger="click" size="small" @command="clickMore"> <el-dropdown trigger="click" size="small" @command="clickMore">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<el-button <el-button
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
size="small" size="small"
/> />
</span> </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)"> <el-dropdown-item icon="el-icon-edit-outline" :command="beforeClickMore('rename',data,node)">
{{ $t('dataset.rename') }} {{ $t('dataset.rename') }}
</el-dropdown-item> </el-dropdown-item>
...@@ -193,8 +193,8 @@ ...@@ -193,8 +193,8 @@
</span> </span>
<span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span> <span style="margin-left: 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{ data.name }}</span>
</span> </span>
<span> <span v-if="hasDataPermission('manage',data.privileges)">
<span style="margin-left: 12px;" @click.stop> <span style="margin-left: 12px;" @click.stop >
<el-dropdown trigger="click" size="small" @command="clickMore"> <el-dropdown trigger="click" size="small" @command="clickMore">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<el-button <el-button
...@@ -203,7 +203,7 @@ ...@@ -203,7 +203,7 @@
size="small" size="small"
/> />
</span> </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)"> <el-dropdown-item icon="el-icon-edit-outline" :command="beforeClickMore('editTable',data,node)">
{{ $t('dataset.rename') }} {{ $t('dataset.rename') }}
</el-dropdown-item> </el-dropdown-item>
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</span> </span>
<span style="margin-left: 6px">{{ data.name }}</span> <span style="margin-left: 6px">{{ data.name }}</span>
</span> </span>
<span> <span v-if="hasDataPermission('manage',data.privileges)">
<span v-if="data.nodeType ==='folder'" @click.stop> <span v-if="data.nodeType ==='folder'" @click.stop>
<el-dropdown trigger="click" size="small" @command="showEditPanel"> <el-dropdown trigger="click" size="small" @command="showEditPanel">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
</el-dropdown> </el-dropdown>
</span> </span>
<span style="margin-left: 12px;" @click.stop> <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"> <span class="el-dropdown-link">
<el-button <el-button
icon="el-icon-more" icon="el-icon-more"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论