<?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.ruoyi.platform.mapper.saas.SaaSRoleMapper">

	<resultMap type="com.ruoyi.common.core.domain.saas.vo.SysRoleVO" id="SysRoleResult">
		<id     property="id"       column="id"        />
		<result property="roleName"     column="role_name"      />
		<result property="roleKey"      column="role_key"       />
		<result property="roleSort"     column="role_sort"      />
		<result property="dataScope"    column="data_scope"     />
		<result property="status"       column="status"         />
		<result property="delFlag"      column="del_flag"       />
		<result property="createBy"     column="create_by"      />
		<result property="createTime"   column="create_time"    />
		<result property="updateBy"     column="update_by"      />
		<result property="updateTime"   column="update_time"    />
		<result property="remark"       column="remark"         />
		<result property="tenantId" column="tenant_id" />
	</resultMap>

	<sql id="selectRoleContactVo">
		select distinct r.id, r.role_name, r.role_key, r.role_sort, r.data_scope,
						r.status, r.del_flag, r.create_time, r.remark
		from trs_sys_role r
				 left join sys_user_role ur on ur.role_id = r.id
				 left join trs_sys_user u on u.id = ur.user_id
				 left join sys_dept d on u.dept_id = d.id
	</sql>
    
    <sql id="selectRoleVo">
		select r.id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status, r.del_flag, r.create_time, r.remark
        from trs_sys_role r
	</sql>
	
	<select id="selectRoleList" parameterType="com.ruoyi.common.core.domain.saas.dto.SysRoleDTO" resultMap="SysRoleResult">
		select r.id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status, r.del_flag, r.create_time, r.remark, r.tenant_id
		from trs_sys_role r
		where r.del_flag = '0' and r.tenant_id = 'platform_saas'
		<if test="roleName != null and roleName != ''">
			AND r.role_name like concat('%', #{roleName}, '%')
		</if>
		<if test="status != null and status != ''">
			AND r.status = #{status}
		</if>
		<if test="dataScope != null and dataScope != ''">
			AND r.data_scope = #{dataScope}
		</if>
		<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
			and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
		</if>
		<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
			and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
		</if>
	</select>

	<select id="selectPfRoleList" parameterType="com.ruoyi.common.core.domain.saas.dto.SysRoleDTO" resultMap="SysRoleResult">
		select r.id, r.role_name
		from trs_sys_role r
		where r.del_flag = '0' and r.tenant_id = 'platform_saas' AND r.role_key &lt;&gt; 'saas_admin' AND r.status = '0'
		<if test="roleName != null and roleName != ''">
			AND r.role_name like concat('%', #{roleName}, '%')
		</if>
	</select>

	<select id="selectRoleByTenantId" parameterType="String" resultMap="SysRoleResult">
		SELECT id, role_key FROM trs_sys_role WHERE tenant_id = 'platform_saas' and role_key = 'saas_admin' limit 1;
	</select>

	<select id="selectRolesByUserId" parameterType="String" resultMap="SysRoleResult">
		<include refid="selectRoleContactVo"/>
		WHERE r.del_flag = '0' and ur.user_id = #{userId}
	</select>
	
</mapper> 