<?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="com.landtool.lanbase.modules.sys.dao.SysRoleDao">
|
|
<resultMap type="com.landtool.lanbase.modules.sys.entity.SysRole" id="roleMap">
|
<result property="roleId" column="ROLEID"/>
|
<result property="appId" column="APPID"/>
|
<result property="roleName" column="ROLENAME"/>
|
<result property="description" column="DESCRIPTION"/>
|
<result property="rCreateUser" column="RCREATEUSER"/>
|
<result property="rCreateDate" column="RCREATEDATE"/>
|
<result property="totalOfUsers" column="TOTALOFUSERS"/>
|
<result property="systemName" column="SYSTEMNAME"/>
|
<result property="powers" column="POWERS"/>
|
<result property="respowers" column="RESPOWERS"/>
|
</resultMap>
|
|
<resultMap type="com.landtool.lanbase.common.utils.NameBindId" id="NameBindIdMap">
|
<result property="name" column="NAME"/>
|
<result property="id" column="ID"/>
|
</resultMap>
|
|
<sql id="roleColumns">
|
sr.ROLEID,
|
sr.APPID,
|
sr.ROLENAME,
|
sr.DESCRIPTION,
|
sr.RCREATEUSER,
|
sr.RCREATEDATE
|
</sql>
|
|
<select id="queryObject" resultType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
SELECT
|
distinct
|
<include refid="roleColumns"/>,
|
ss.APPFULLNAME AS SYSTEMNAME,
|
(SELECT
|
STRING_AGG(cast(b.CATALOGID as varchar),',') as t
|
FROM (
|
SELECT * FROM ROLE_CATALOGID_REL
|
) b WHERE b.ROLEID = #{value} group by b.ROLEID order by b.ROLEID) AS RESPOWERS
|
FROM SYS_ROLE sr
|
LEFT JOIN SYS_SYSTEMINFO ss ON sr.APPID = ss.APPID
|
LEFT JOIN ROLE_CATALOGID_REL rcr ON sr.ROLEID=rcr.ROLEID
|
WHERE cast(sr.ROLEID as bigint) = #{value}
|
</select>
|
|
<select id="queryList" resultType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
select * from (
|
SELECT *
|
FROM(
|
SELECT ROW_NUMBER() OVER(ORDER BY B.ROLEID) AS rownumber,B.*
|
FROM (
|
|
SELECT
|
<include refid="roleColumns" />,
|
ss.APPFULLNAME SYSTEMNAME,
|
b.TOTALOFUSERS TOTALOFUSERS,
|
b2.POWERS POWERS,
|
resr.RESPOWER RESPOWERS
|
|
FROM SYS_ROLE sr
|
LEFT JOIN SYS_SYSTEMINFO ss ON sr.APPID = ss.APPID
|
LEFT JOIN (
|
|
SELECT DISTINCT
|
c.ROLEID,
|
(SELECT
|
STRING_AGG(cast(b.CATALOGID as varchar),',') as t
|
FROM (
|
SELECT * FROM ROLE_CATALOGID_REL
|
) b group by b.ROLEID order by b.ROLEID) AS RESPOWER
|
FROM(
|
SELECT *
|
FROM ROLE_CATALOGID_REL
|
)c) resr on resr.ROLEID=sr.ROLEID
|
LEFT JOIN (
|
SELECT
|
srg.ROLEID ROLEID,
|
COUNT(og.groupid) TOTALOFUSERS
|
FROM SYS_ROLEGROUP srg
|
INNER JOIN ORG_GROUP og ON srg.groupid = og.groupid
|
GROUP BY srg.ROLEID
|
) b ON sr.ROLEID = b.ROLEID
|
LEFT JOIN (
|
SELECT DISTINCT
|
A.ROLEID,
|
(SELECT STRING_AGG(cast(B.resourcername as varchar),',')
|
FROM ( SELECT srr.roleid, sr.resourcername FROM SYS_ROLERESOURCE srr
|
LEFT JOIN SYS_RESOURCE sr ON srr.resourceid = sr.resourceid ) B
|
WHERE B.roleid = A.roleid group by A.ROLEID order by A.ROLEID) AS POWERS
|
FROM (
|
SELECT
|
srr.roleid,
|
sr.resourcername
|
FROM SYS_ROLERESOURCE srr
|
LEFT JOIN SYS_RESOURCE sr ON srr.resourceid = sr.resourceid
|
) A
|
)b2 ON b2.ROLEID = sr.ROLEID
|
<where>
|
<if test="roleName != null and roleName != ''">
|
AND sr.ROLENAME LIKE ('%' || #{roleName} || '%')
|
</if>
|
<if test="appId != null and appId != ''">
|
AND cast(ss.APPID as varchar) = #{appId}
|
</if>
|
</where>
|
|
) B
|
) A
|
WHERE rownumber > #{lowerOffset} AND <![CDATA[ rownumber <= ${upperOffset} ]]>
|
)a order by
|
<choose>
|
<when test="sidx != null and sidx != ''">
|
${sidx} ${order}
|
</when>
|
<otherwise>
|
ROLEID
|
</otherwise>
|
</choose>
|
</select>
|
|
<select id="queryTotal" resultType="int">
|
SELECT
|
count(*)
|
FROM SYS_ROLE sr
|
LEFT JOIN SYS_SYSTEMINFO ss ON sr.APPID = ss.APPID
|
LEFT JOIN (
|
SELECT
|
srg.ROLEID AS ROLEID,
|
COUNT(og.groupid) AS TOTALOFUSERS
|
FROM SYS_ROLEGROUP srg
|
INNER JOIN ORG_GROUP og ON srg.groupid = og.groupid
|
GROUP BY srg.ROLEID
|
) b ON sr.ROLEID = b.ROLEID
|
LEFT JOIN (
|
SELECT DISTINCT
|
A.ROLEID,
|
(SELECT STRING_AGG(cast(B.resourcername as varchar),',')
|
FROM ( SELECT srr.roleid, sr.resourcername FROM SYS_ROLERESOURCE srr
|
LEFT JOIN SYS_RESOURCE sr ON srr.resourceid = sr.resourceid ) B
|
WHERE B.roleid = A.roleid group by A.ROLEID order by A.ROLEID) AS POWERS
|
FROM (
|
SELECT
|
srr.roleid,
|
sr.resourcername
|
FROM SYS_ROLERESOURCE srr
|
LEFT JOIN SYS_RESOURCE sr ON srr.resourceid = sr.resourceid
|
) A
|
)b2 ON b2.ROLEID = sr.ROLEID
|
<where>
|
<if test="roleName != null and roleName != ''">
|
AND sr.ROLENAME LIKE ('%' || #{roleName} || '%')
|
</if>
|
<if test="appId != null and appId != ''">
|
AND cast(ss.APPID as varchar)= #{appId}
|
</if>
|
</where>
|
</select>
|
|
<insert id="save" parameterType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
insert into SYS_ROLE
|
(
|
APPID,
|
ROLENAME,
|
DESCRIPTION,
|
RCREATEUSER,
|
RCREATEDATE
|
)
|
values
|
(
|
#{appId},
|
#{roleName},
|
#{description,jdbcType=VARCHAR},
|
#{rCreateUser},
|
#{rCreateDate}
|
)
|
</insert>
|
|
<update id="update" parameterType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
update SYS_ROLE
|
<set>
|
<if test="appId != null">APPID = #{appId}, </if>
|
<if test="roleName != null">ROLENAME = #{roleName}, </if>
|
<if test="description != null">DESCRIPTION = #{description}, </if>
|
<if test="rCreateUser != null">RCREATEUSER = #{rCreateUser}, </if>
|
<if test="rCreateDate != null">RCREATEDATE = #{rCreateDate}</if>
|
</set>
|
where ROLEID = #{roleId}
|
</update>
|
|
<delete id="delete">
|
delete from SYS_ROLE where ROLEID = #{value}
|
</delete>
|
|
<delete id="deleteBatch">
|
delete from SYS_ROLE where ROLEID in
|
<foreach item="roleId" collection="array" open="(" separator="," close=")">
|
#{roleId}
|
</foreach>
|
</delete>
|
|
<select id="queryListForBareAPI" resultType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
SELECT
|
<include refid="roleColumns"/>
|
FROM SYS_ROLE sr
|
<if test="userId != null">
|
LEFT JOIN SYS_ROLEGROUP srg ON sr.roleid = srg.roleid
|
LEFT JOIN ORG_GROUP og ON og.groupid = srg.groupid
|
LEFT JOIN ORG_USERGROUP oug ON oug.groupid = og.groupid
|
LEFT JOIN ORG_USER ou ON ou.userid = oug.userid
|
</if>
|
WHERE 1=1
|
<if test="appId != null"> AND sr.APPID = #{appId} </if>
|
<if test="userId != null"> AND ou.USERID = #{userId} </if>
|
</select>
|
|
<select id="findSysNames" resultType="com.landtool.lanbase.common.utils.NameBindId">
|
SELECT DISTINCT
|
ssi.APPFULLNAME AS NAME,ssi.APPID AS ID
|
<choose>
|
<when test="roleId != null and roleId != ''">
|
FROM SYS_ROLE sr
|
INNER JOIN SYS_SYSTEMINFO ssi ON sr.APPID = ssi.APPID
|
</when>
|
<otherwise>
|
FROM SYS_SYSTEMINFO ssi
|
</otherwise>
|
</choose>
|
<where>
|
<if test="keyWord != null and keyWord != '' ">
|
AND APPFULLNAME LIKE ('%'|| #{keyWord} ||'%')
|
</if>
|
<if test="roleId != null and roleId != ''">
|
AND cast(sr.ROLEID as varchar) = #{roleId}
|
</if>
|
</where>
|
</select>
|
|
<select id="getSystemResources" resultType="com.landtool.lanbase.common.utils.NameBindId">
|
SELECT
|
sr2.RESOURCEID AS ID,sr2.RESOURCERNAME AS NAME
|
<choose>
|
<when test="roleIdForOwner != null and roleIdForOwner != ''">
|
FROM SYS_ROLE sr
|
INNER JOIN SYS_ROLERESOURCE srr on sr.ROLEID = srr.ROLEID
|
INNER JOIN SYS_RESOURCE sr2 on srr.RESOURCEID = sr2.RESOURCEID
|
</when>
|
<otherwise>
|
FROM SYS_SYSTEMINFO ssi
|
INNER JOIN SYS_RESOURCE sr2 on ssi.APPID = sr2.APPID
|
</otherwise>
|
</choose>
|
<where>
|
<if test="roleIdForOwner != null and roleIdForOwner != '' ">
|
AND cast(sr.ROLEID as varchar) = #{roleIdForOwner}
|
</if>
|
<if test="systemIdForOwner != null and systemIdForOwner != '' ">
|
AND cast(ssi.APPID as varchar) = #{systemIdForOwner}
|
</if>
|
</where>
|
</select>
|
|
<select id="queryRoleWithIdByParams" parameterType="com.landtool.lanbase.modules.sys.entity.SysRole" resultType="com.landtool.lanbase.modules.sys.entity.SysRole">
|
SELECT
|
<include refid="roleColumns"/>
|
FROM SYS_ROLE sr
|
<where>
|
<if test="roleName != null and roleName != ''">
|
AND ROLENAME = #{roleName}
|
</if>
|
<if test="rCreateUser != null">
|
AND RCREATEUSER = #{rCreateUser}
|
</if>
|
<if test="appId != null">
|
AND APPID = #{appId}
|
</if>
|
<if test="description != null and description != ''">
|
AND DESCRIPTION = #{description}
|
</if>
|
<if test="rCreateDate != null">
|
AND RCREATEDATE = to_timestamp(#{rCreateDate},'yyyy-MM-dd HH24:mi:ss')
|
</if>
|
|
</where>
|
</select>
|
</mapper>
|