rax-remote-v2/upms/upms-biz/src/main/resources/mapper/SysUserMapper.xml
2024-06-03 09:05:20 +08:00

255 lines
6.8 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="com.rax.admin.mapper.SysUserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="baseResultMap" type="com.rax.admin.api.vo.UserVO">
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="salt" property="salt"/>
<result column="phone" property="phone"/>
<result column="avatar" property="avatar"/>
<result column="wx_openid" property="wxOpenid"/>
<result column="qq_openid" property="qqOpenid"/>
<result column="ucreate_time" property="createTime"/>
<result column="uupdate_time" property="updateTime"/>
<result column="lock_flag" property="lockFlag"/>
<result column="del_flag" property="delFlag"/>
<result column="dept_id" property="deptId"/>
<result column="dept_name" property="deptName"/>
<result column="nickname" property="nickname"/>
<result column="name" property="name"/>
<result column="email" property="email"/>
<collection property="roleList" ofType="com.rax.admin.api.entity.SysRole"
select="com.rax.admin.mapper.SysRoleMapper.listRolesByUserId" column="user_id">
</collection>
<collection property="postList" ofType="com.rax.admin.api.entity.SysPost"
select="com.rax.admin.mapper.SysPostMapper.listPostsByUserId" column="user_id">
</collection>
</resultMap>
<sql id="userRoleSql">
u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.qq_openid,
u.dept_id,
u.del_flag,
u.lock_flag,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
r.role_id,
r.role_name,
r.role_code,
r.role_desc,
r.create_time rcreate_time,
r.update_time rupdate_time
</sql>
<sql id="userRoleDeptSql">
u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.qq_openid,
u.del_flag,
u.lock_flag,
u.nickname,
u.name,
u.email,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
d.name dept_name,
d.dept_id
</sql>
<select id="getUserVoByUsername" resultMap="baseResultMap">
SELECT
<include refid="userRoleSql"/>
FROM sys_user u
LEFT JOIN sys_user_role urole ON urole.user_id = u.user_id
LEFT JOIN sys_role r ON r.role_id = urole.role_id and r.del_flag = '0'
WHERE u.username = #{username}
and u.del_flag = '0'
</select>
<select id="getUserVoById" resultMap="baseResultMap">
SELECT
<include refid="userRoleDeptSql"/>
FROM sys_user u
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id and d.del_flag = '0'
WHERE u.user_id = #{id}
and u.del_flag = '0'
</select>
<select id="getUserVosPage" resultMap="baseResultMap">
SELECT u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.qq_openid,
u.dept_id,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
u.del_flag,
u.lock_flag,
u.nickname,
u.name,
u.email,
d.name dept_name
FROM sys_user u
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
<where>
u.del_flag = '0' and u.user_id != '1'
<if test="query.hospitalId != null and query.hospitalId != ''">
and u.hospital_id = #{query.hospitalId}
</if>
<if test="query.name != null and query.name != ''">
<bind name="nameLike" value="'%' + query.name + '%'"/>
AND u.name LIKE #{nameLike}
</if>
<if test="query.username != null and query.username != ''">
<bind name="usernameLike" value="'%' + query.username + '%'"/>
AND u.username LIKE #{usernameLike}
</if>
<if test="query.deptId != null and query.deptId != ''">
AND u.dept_id = #{query.deptId}
</if>
<if test="query.phone != null and query.phone != ''">
<bind name="phoneLike" value="'%' + query.phone + '%'"/>
AND u.phone LIKE #{phoneLike}
</if>
</where>
<if test="_databaseId != 'mssql'">
ORDER BY u.create_time DESC
</if>
</select>
<select id="getUsersPage" resultMap="baseResultMap">
SELECT u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.qq_openid,
u.dept_id,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
u.del_flag,
u.lock_flag,
u.nickname,
u.name,
u.email,
d.name dept_name
FROM sys_user u
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
<where>
u.del_flag = '0' and u.user_id != '1'
<if test="name != null and name != ''">
<bind name="nameLike" value="'%' + name + '%'"/>
AND u.name LIKE #{nameLike}
</if>
</where>
ORDER BY u.create_time DESC
</select>
<select id="selectVoList" resultMap="baseResultMap">
SELECT u.user_id,
u.username,
u.password,
u.salt,
u.phone,
u.avatar,
u.wx_openid,
u.qq_openid,
u.dept_id,
u.create_by,
u.create_time ucreate_time,
u.update_time uupdate_time,
u.del_flag,
u.lock_flag,
u.nickname,
u.name,
u.email,
d.name dept_name
FROM sys_user u
LEFT JOIN sys_dept d ON d.dept_id = u.dept_id
<where>
u.del_flag = '0'
<if test="query.username != null and query.username != ''">
<bind name="usernameLike" value="'%' + query.username + '%'"/>
AND u.username LIKE #{usernameLike}
</if>
<if test="query.deptId != null and query.deptId != ''">
AND u.dept_id = #{query.deptId}
</if>
</where>
<if test="_databaseId != 'mssql'">
ORDER BY u.create_time DESC
</if>
</select>
<select id="getUserListByHospital" resultType="map">
SELECT user_id "id", name, hospital_id "hospitalId", phone
FROM sys_user
WHERE del_flag = 0
AND hospital_id = #{hospitalId}
ORDER BY create_time DESC;
</select>
<update id="deleteByIds">
update sys_user
set del_flag = 1
where
<if test="ids != null and ids.length != 0">
<foreach item="item" index="index" collection="ids"
open="user_id in (" separator="," close=")" nullable="false">
#{item}
</foreach>
</if>
</update>
<select id="getUserCount" resultType="long">
select count(*)
from sys_user
where del_flag = 0 and user_id != '1'
</select>
<select id="getUserCountSlot" resultType="long">
select count(*)
from sys_user
where del_flag = 0 and user_id != '1'
and create_time <![CDATA[ >= ]]> #{start}
and create_time <![CDATA[ <= ]]> #{end}
</select>
<select id="getCountByDate" resultType="map">
select DATE_FORMAT(create_time, '%Y-%m-%d') "date", count(*) "count"
from sys_user
where del_flag = 0 and user_id != 1
and create_time <![CDATA[ >= ]]> #{startTime}
and create_time <![CDATA[ <= ]]> #{endTime}
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')
ORDER BY DATE_FORMAT(create_time, '%Y-%m-%d') asc;
</select>
</mapper>