de/backend/src/main/java/io/dataease/ext/ExtPanelShareMapper.xml
2022-11-01 12:56:24 +08:00

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>