Files
shz-backend/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

362 lines
17 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.system.mapper.SysUserMapper">
<resultMap type="SysUser" id="SysUserResult">
<id property="userId" column="user_id" />
<result property="deptId" column="dept_id" />
<result property="userName" column="user_name" />
<result property="nickName" column="nick_name" />
<result property="email" column="email" />
<result property="phonenumber" column="phonenumber" />
<result property="sex" column="sex" />
<result property="avatar" column="avatar" />
<result property="password" column="password" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" />
<result property="loginIp" column="login_ip" />
<result property="loginDate" column="login_date" />
<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="idCard" column="id_card" />
<result property="appUserId" column="app_user_id" />
<result property="lcUserid" column="lc_userid" />
<association property="dept" javaType="SysDept" resultMap="deptResult" />
<!--<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />-->
<collection property="roles" javaType="java.util.List" column="user_id" select="selectRolesByUserId"/>
</resultMap>
<resultMap id="deptResult" type="SysDept">
<id property="deptId" column="dept_id" />
<result property="parentId" column="parent_id" />
<result property="deptName" column="dept_name" />
<result property="ancestors" column="ancestors" />
<result property="orderNum" column="order_num" />
<result property="leader" column="leader" />
<result property="status" column="dept_status" />
</resultMap>
<resultMap id="RoleResult" type="SysRole">
<id property="roleId" column="role_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="role_status" />
</resultMap>
<!-- 后门登录选择页使用轻量结果映射,避免为每个候选用户额外查询角色。 -->
<resultMap id="BackDoorUserResult" type="SysUser">
<id property="userId" column="user_id" />
<result property="deptId" column="dept_id" />
<result property="userName" column="user_name" />
<result property="nickName" column="nick_name" />
<result property="phonenumber" column="phonenumber" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" />
<result property="appUserId" column="app_user_id" />
<result property="lcUserid" column="lc_userid" />
<association property="dept" javaType="SysDept" resultMap="deptResult" />
</resultMap>
<select id="selectBackDoorUserList" resultMap="BackDoorUserResult">
select u.user_id,
u.dept_id,
u.user_name,
u.nick_name,
u.phonenumber,
u.status,
u.del_flag,
u.app_user_id,
u.lc_userid,
d.dept_name
from (
select source_user.*,
row_number() over (
partition by source_user.user_name
order by source_user.create_time desc nulls last, source_user.user_id desc
) as account_rank
from sys_user source_user
where source_user.del_flag = '0'
and source_user.user_name is not null
and source_user.user_name != ''
) u
left join sys_dept d on d.dept_id = u.dept_id
where u.account_rank = 1
and u.status = '0'
<if test="keyword != null and keyword != ''">
and (
cast(u.user_id as varchar) like concat('%', cast(#{keyword} as varchar), '%')
or u.user_name like concat('%', cast(#{keyword} as varchar), '%')
or u.nick_name like concat('%', cast(#{keyword} as varchar), '%')
or u.phonenumber like concat('%', cast(#{keyword} as varchar), '%')
)
</if>
order by case when u.app_user_id is not null then 0 else 1 end,
u.user_id desc
limit #{limit}
</select>
<select id="selectBackDoorEffectiveUserId" resultType="java.lang.Long">
select u.user_id
from sys_user u
where u.del_flag = '0'
and u.user_name = #{userName}
order by u.create_time desc nulls last, u.user_id desc
limit 1
</select>
<!--
企业小程序会话以 app_user 为主体。这里只返回未删除、未停用的企业账号;
列表响应还会在服务层转换为最小化 DTO不直接暴露手机号等个人信息。
-->
<select id="selectBackDoorCompanyList" resultType="com.ruoyi.common.core.domain.entity.AppUser">
select u.user_id,
u.name,
u.id_card,
u.status,
u.del_flag,
u.is_company_user
from app_user u
where u.del_flag = '0'
and u.is_company_user = '0'
and (u.status is null or u.status = '' or u.status = '0')
<if test="keyword != null and keyword != ''">
and (
cast(u.user_id as varchar) like concat('%', cast(#{keyword} as varchar), '%')
or u.name like concat('%', cast(#{keyword} as varchar), '%')
or u.id_card like concat('%', cast(#{keyword} as varchar), '%')
)
</if>
order by u.name asc, u.user_id desc
limit #{limit}
</select>
<sql id="selectUserVo">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.id_card,u.app_user_id,u.lc_userid
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
</sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader,u.id_card from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
AND u.user_id = #{userId}
</if>
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', CAST(#{userName} AS VARCHAR), '%')
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', CAST(#{phonenumber} AS VARCHAR), '%')
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(u.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(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
</if>
<if test="deptId != null and deptId != 0">
AND (
u.dept_id = #{deptId}
<if test="params.deptScope != null and params.deptScope == 'CHILDREN'">
OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )
</if>
)
</if>
<if test="idCard != null and idCard != ''">
AND u.id_card = #{idCard}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time,id_card
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and r.role_id = #{roleId}
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test="idCard != null and idCard != ''">
AND u.id_card =#{idCard}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time,u.id_card
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test="idCard != null and idCard != ''">
AND u.id_card =#{idCard}
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.user_name = #{userName} and u.del_flag = '0' order by create_time desc LIMIT 1
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.del_flag='0' and u.user_id = #{userId}
</select>
<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
</select>
<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
</select>
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
</select>
<select id="selectAppUserById" resultType="com.ruoyi.common.core.domain.entity.AppUser">
select * from app_user where user_id = #{id}
</select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="userName != null and userName != ''">user_name,</if>
<if test="nickName != null and nickName != ''">nick_name,</if>
<if test="email != null and email != ''">email,</if>
<if test="avatar != null and avatar != ''">avatar,</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber,</if>
<if test="sex != null and sex != ''">sex,</if>
<if test="password != null and password != ''">password,</if>
<if test="status != null and status != ''">status,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="idCard != null and idCard != ''">id_card,</if>
<if test="appUserId != null and appUserId != ''">app_user_id,</if>
<if test="lcUserid != null">lc_userid,</if>
create_time
)values(
<if test="userId != null and userId != ''">#{userId},</if>
<if test="deptId != null and deptId != ''">#{deptId},</if>
<if test="userName != null and userName != ''">#{userName},</if>
<if test="nickName != null and nickName != ''">#{nickName},</if>
<if test="email != null and email != ''">#{email},</if>
<if test="avatar != null and avatar != ''">#{avatar},</if>
<if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if>
<if test="sex != null and sex != ''">#{sex},</if>
<if test="password != null and password != ''">#{password},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="idCard != null and idCard != ''">#{idCard},</if>
<if test="appUserId != null and appUserId != ''">#{appUserId},</if>
<if test="lcUserid != null">#{lcUserid},</if>
sysdate()
)
</insert>
<update id="updateUser" parameterType="SysUser">
update sys_user
<set>
<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>
<if test="email != null ">email = #{email},</if>
<if test="phonenumber != null ">phonenumber = #{phonenumber},</if>
<if test="sex != null and sex != ''">sex = #{sex},</if>
<if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
<if test="password != null and password != ''">password = #{password},</if>
<if test="status != null and status != ''">status = #{status},</if>
<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
<if test="loginDate != null">login_date = #{loginDate},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="idCard != null">id_card = #{idCard},</if>
<if test="lcUserid != null">lc_userid = #{lcUserid},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
</update>
<update id="updateUserStatus" parameterType="SysUser">
update sys_user set status = #{status} where user_id = #{userId}
</update>
<update id="updateUserAvatar" parameterType="SysUser">
update sys_user set avatar = #{avatar} where user_name = #{userName}
</update>
<update id="resetUserPwd" parameterType="SysUser">
update sys_user set password = #{password} where user_name = #{userName}
</update>
<delete id="deleteUserById" parameterType="Long">
update sys_user set del_flag = '2' where user_id = #{userId}
</delete>
<delete id="deleteUserByIds" parameterType="Long">
update sys_user set del_flag = '2' where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>
<select id="selectUserByIdCard" resultType="com.ruoyi.common.core.domain.entity.SysUser">
select * from sys_user where del_flag='0' and id_card = #{idCard} LIMIT 1
</select>
<sql id="selectUserVoNew">
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,u.id_card,u.app_user_id,u.lc_userid
from sys_user u left join sys_dept d on u.dept_id = d.dept_id
</sql>
<select id="selectUserByUserNameNew" parameterType="String" resultMap="SysUserResult">
<include refid="selectUserVoNew"/>
where u.user_name = #{userName} and u.del_flag = '0'
order by create_time desc LIMIT 1
</select>
<select id="selectRolesByUserId" parameterType="Long" resultMap="RoleResult">
select distinct
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user_role ur
inner join sys_role r on r.role_id = ur.role_id and r.del_flag = '0'
where ur.user_id = #{userId}
</select>
</mapper>