153 lines
5.9 KiB
XML
153 lines
5.9 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
|
<mapper namespace="io.dataease.ext.ExtPanelShareMapper">
|
|
|
|
<resultMap id="treeNodeMap" type="io.dataease.dto.panel.PanelSharePo">
|
|
<id column="id" property="id"/>
|
|
<result column="name" property="name"/>
|
|
<result column="status" property="status"/>
|
|
<result column="creator" property="creator"/>
|
|
<result column="user_id" jdbcType="BIGINT" property="userId"/>
|
|
</resultMap>
|
|
|
|
<resultMap id="targetMap" type="io.dataease.dto.panel.PanelShareOutDTO">
|
|
<result column="panel_id" property="panelId"/>
|
|
<result column="share_id" property="shareId"/>
|
|
<result column="type" property="type"/>
|
|
<result column="target_Id" property="targetId"/>
|
|
<result column="target_Name" property="targetName"/>
|
|
<result column="create_time" property="createTime"/>
|
|
</resultMap>
|
|
|
|
<insert id="batchInsert" parameterType="io.dataease.plugins.common.base.domain.PanelShare">
|
|
INSERT INTO panel_share (panel_group_id,target_id,granter,create_time,type)
|
|
VALUES
|
|
<foreach collection="shares" item="share" separator=",">
|
|
(#{share.panelGroupId}, #{share.targetId}, #{userName}, #{share.createTime}, #{share.type})
|
|
</foreach>
|
|
</insert>
|
|
|
|
<delete id="batchDelete" parameterType="java.lang.Long">
|
|
delete from panel_share
|
|
where share_id in
|
|
<foreach collection="shareIds" item="shareId" open="(" separator="," close=")">
|
|
#{shareId}
|
|
</foreach>
|
|
</delete>
|
|
|
|
<select id="query" resultMap="treeNodeMap">
|
|
select distinct s.panel_group_id as id, u.nick_name as creator, g.name, u.user_id, g.status
|
|
from panel_share s
|
|
left join panel_group g on g.id = s.panel_group_id
|
|
left join sys_user u on u.username = IFNULL(s.granter,g.create_by)
|
|
where
|
|
( s.target_id = #{userId} and s.type = 0 )
|
|
<if test="deptId != null">
|
|
or ( s.target_id = #{deptId} and s.type = 2 )
|
|
</if>
|
|
<if test="roleIds != null">
|
|
or
|
|
( s.target_id in
|
|
<foreach collection="roleIds" item="roleId" open='(' separator=',' close=')'>
|
|
#{roleId}
|
|
</foreach>
|
|
and s.type = 1 )
|
|
</if>
|
|
|
|
<if test="orderByClause == null">
|
|
order by s.create_time desc
|
|
</if>
|
|
|
|
</select>
|
|
|
|
<select id="queryOut" resultMap="treeNodeMap">
|
|
select distinct id, name, status
|
|
from (select distinct s.panel_group_id as id,
|
|
g.name,
|
|
g.status,
|
|
(
|
|
CASE s.type
|
|
WHEN 0 THEN (select nick_name from sys_user where user_id = s.target_id)
|
|
WHEN 1 THEN (select name from sys_role where role_id = s.target_id)
|
|
WHEN 2 THEN (select name from sys_dept where dept_id = s.target_id)
|
|
END
|
|
) as target_name
|
|
from panel_share s
|
|
left join panel_group g on g.id = s.panel_group_id
|
|
where (s.granter is not null and s.granter = #{userName})
|
|
or (s.granter is null and g.create_by = #{userName})
|
|
order by s.create_time desc) query_temp
|
|
where target_name is not null
|
|
|
|
</select>
|
|
|
|
<select id="queryWithResource" parameterType="io.dataease.controller.request.panel.PanelShareSearchRequest"
|
|
resultMap="io.dataease.plugins.common.base.mapper.PanelShareMapper.BaseResultMap">
|
|
select s.*
|
|
from panel_share s
|
|
left join panel_group g on g.id = s.panel_group_id
|
|
where
|
|
s.panel_group_id = #{resourceId}
|
|
<if test="type != null">
|
|
and s.type = #{type}
|
|
</if>
|
|
and (( s.granter is not null and s.granter = #{currentUserName} ) or ( s.granter is null and g.create_by =
|
|
#{currentUserName} ))
|
|
order by s.create_time desc
|
|
|
|
|
|
</select>
|
|
|
|
<select id="queryTargets" resultMap="targetMap">
|
|
select s.share_id,
|
|
s.panel_group_id as panel_id,
|
|
s.type,
|
|
s.target_id,
|
|
s.create_time,
|
|
(
|
|
CASE s.type
|
|
WHEN 0 THEN (select nick_name from sys_user where user_id = s.target_id)
|
|
WHEN 1 THEN (select name from sys_role where role_id = s.target_id)
|
|
WHEN 2 THEN (select name from sys_dept where dept_id = s.target_id)
|
|
END
|
|
) as target_name
|
|
from panel_share s
|
|
where s.panel_group_id = #{panelId}
|
|
and (
|
|
(s.granter is not null and s.granter = #{userName})
|
|
or
|
|
(#{userName} = 'admin' and s.granter is null)
|
|
)
|
|
|
|
</select>
|
|
|
|
<select id="queryUserIdWithRoleIds" resultType="java.lang.Long">
|
|
select user_id
|
|
from sys_users_roles
|
|
where role_id in
|
|
<foreach collection="roleIds" item="roleId" open='(' separator=',' close=')'>
|
|
#{roleId}
|
|
</foreach>
|
|
</select>
|
|
|
|
|
|
<select id="queryUserIdWithDeptIds" resultType="java.lang.Long">
|
|
select user_id
|
|
from sys_user
|
|
where dept_id in
|
|
<foreach collection="deptIds" item="deptId" open='(' separator=',' close=')'>
|
|
#{deptId}
|
|
</foreach>
|
|
</select>
|
|
|
|
<delete id="removeShares" parameterType="io.dataease.controller.request.panel.PanelShareRemoveRequest">
|
|
delete from panel_share
|
|
where panel_group_id = #{request.panelId}
|
|
<if test="request.shareId != null">
|
|
and share_id = #{request.shareId}
|
|
</if>
|
|
</delete>
|
|
|
|
|
|
</mapper>
|