grgw_old_java/heatsupply2/build/classes/mappings/modules/sys/UserDao.xml

481 lines
15 KiB
XML
Raw Normal View History

2025-07-01 14:56:45 +08:00
<?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.jeeplus.modules.sys.dao.UserDao">
<!-- <resultMap id="userResult" type="User">
<id property="id" column="id" />
<result property="company.id" column="company.id" />
<result property="office.id" column="office.id" />
<result property="loginName" column="login_name" />
<result property="password" column="password" />
<result property="no" column="no" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="phone" column="phone" />
<result property="mobile" column="mobile" />
<result property="userType" column="user_type" />
<result property="loginIp" column="login_ip" />
<result property="loginDate" column="login_date" />
<result property="remarks" column="remarks" />
<result property="loginFlag" column="loginFlag" />
<result property="photo" column="photo" />
<result property="createBy.id" column="createBy.id" />
<result property="createDate" column="create_date" />
<result property="updateBy.id" column="updateBy.id" />
<result property="updateDate" column="update_date" />
<result property="company.name" column="company.name" />
<result property="company.parentId" column="company.parentId" />
<result property="company.parentIds" column="company.parentIds" />
<result property="company.area.id" column="company.area.id" />
<result property="company.area.name" column="company.area.name" />
<result property="company.area.parentId" column="company.area.parentId" />
<result property="company.area.parentIds" column="company.area.parentIds" />
<result property="company.primaryPerson.id" column="company.primaryPerson.id" />
<result property="company.primaryPerson.name" column="company.primaryPerson.name" />
<result property="company.deputyPerson.id" column="company.deputyPerson.id" />
<result property="company.deputyPerson.name" column="company.deputyPerson.name" />
<result property="office.name" column="office.name" />
<result property="office.parentId" column="office.parentId" />
<result property="office.parentIds" column="office.parentIds" />
<result property="office.area.id" column="office.area.id" />
<result property="office.area.name" column="office.area.name" />
<result property="office.area.parentId" column="office.area.parentId" />
<result property="office.area.parentIds" column="office.area.parentIds" />
<result property="office.primaryPerson.id" column="office.primaryPerson.id" />
<result property="office.primaryPerson.name" column="office.primaryPerson.name" />
<result property="office.deputyPerson.id" column="office.deputyPerson.id" />
<result property="office.deputyPerson.name" column="office.deputyPerson.name" />
<collection property="roleList" ofType="Role">
<id property="id" column="roleList.id" />
<result property="office.id" column="roleList.office.id" />
<result property="name" column="roleList.name" />
<result property="enname" column="roleList.enname" />
<result property="roleType" column="roleList.roleType" />
<result property="dataScope" column="roleList.dataScope" />
<collection property="officeList" ofType="Office">
<id property="id" column="roleList.officeList.id" />
</collection>
</collection>
</resultMap> -->
<sql id="userColumns">
a.id,
a.company_id AS "company.id",
a.office_id AS "office.id",
a.login_name,
a.password,
a.no,
a.name,
a.email,
a.phone,
a.mobile,
a.user_type,
a.login_ip,
a.login_date,
a.remarks,
a.login_flag,
a.photo,
a.qrcode,
a.create_by AS "createBy.id",
a.create_date,
a.update_by AS "updateBy.id",
a.update_date,
a.del_flag,
c.name AS "company.name",
c.parent_id AS "company.parent.id",
c.parent_ids AS "company.parentIds",
ca.id AS "company.area.id",
ca.name AS "company.area.name",
ca.parent_id AS "company.area.parent.id",
ca.parent_ids AS "company.area.parentIds",
o.name AS "office.name",
o.parent_id AS "office.parent.id",
o.parent_ids AS "office.parentIds",
oa.id AS "office.area.id",
oa.name AS "office.area.name",
oa.type AS "office.area.type",
oa.parent_id AS "office.area.parent.id",
oa.parent_ids AS "office.area.parentIds",
cu.id AS "company.primaryPerson.id",
cu.name AS "company.primaryPerson.name",
cu2.id AS "company.deputyPerson.id",
cu2.name AS "company.deputyPerson.name",
ou.id AS "office.primaryPerson.id",
ou.name AS "office.primaryPerson.name",
ou2.id AS "office.deputyPerson.id",
ou2.name AS "office.deputyPerson.name",
<!-- (select wm_concat(r.name) from sys_role r left join sys_user_role ur ON r.id = ur.role_id where ur.user_id = a.id) emportRole -->
(select GROUP_CONCAT(r.name) from sys_role r left join sys_user_role ur ON r.id = ur.role_id where ur.user_id = a.id) emportRole
<!-- ,
r.id AS "roleList.id",
r.office_id AS "roleList.office.id",
r.name AS "roleList.name",
r.enname AS "roleList.enname",
r.role_type AS "roleList.roleType",
r.data_scope AS "roleList.dataScope" -->
</sql>
<sql id="userJoins">
LEFT JOIN sys_office c ON c.id = a.company_id
LEFT JOIN sys_area ca ON ca.id = c.area_id
LEFT JOIN sys_office o ON o.id = a.office_id
LEFT JOIN sys_area oa ON oa.id = o.area_id
LEFT JOIN sys_user cu ON cu.id = c.primary_person
LEFT JOIN sys_user cu2 ON cu2.id = c.deputy_person
LEFT JOIN sys_user ou ON ou.id = o.primary_person
LEFT JOIN sys_user ou2 ON ou2.id = o.deputy_person<!--
LEFT JOIN sys_user_role ur ON ur.user_id = a.id
LEFT JOIN sys_role r ON r.id = ur.role_id -->
</sql>
<!-- 根据编号获得用户 -->
<select id="get" resultType="User">
SELECT
<include refid="userColumns"/><!-- ,
ro.office_id AS "roleList.officeList.id" -->
FROM sys_user a
<include refid="userJoins"/><!--
LEFT JOIN sys_role_office ro ON ro.role_id = r.id -->
WHERE a.id = #{id}
</select>
<!-- 根据登录名查询用户 -->
<select id="getByLoginName" resultType="User" parameterType="User">
SELECT
<include refid="userColumns"/><!-- ,
ro.office_id AS "roleList.officeList.id" -->
FROM sys_user a
<include refid="userJoins"/><!--
LEFT JOIN sys_role_office ro ON ro.role_id = r.id -->
WHERE a.login_name = #{loginName} AND a.del_flag = #{DEL_FLAG_NORMAL}
</select>
<!-- 分页查询用户信息 -->
<select id="findList" resultType="User">
SELECT
<include refid="userColumns"/>
FROM sys_user a
<include refid="userJoins"/>
<if test="role != null and role.id != null and role.id != ''">
JOIN sys_user_role ur ON ur.user_id = a.id AND ur.role_id = #{role.id}
</if>
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
<if test="company != null and company.id != null and company.id != ''">
AND (c.id = #{company.id} OR c.parent_ids LIKE
<if test="dbName == 'oracle'">'%,'||#{company.id}||',%')</if>
<if test="dbName == 'mysql'">CONCAT('%,', #{company.id}, ',%'))</if>
</if>
<if test="office != null and office.id != null and office.id != ''">
AND (o.id = #{office.id} OR o.parent_ids LIKE
<if test="dbName == 'oracle'">'%,'||#{office.id}||',%')</if>
<if test="dbName == 'mysql'">CONCAT('%,', #{office.id}, ',%'))</if>
</if>
<!-- 如果不是超级管理员,则不显示超级管理员用户 -->
<if test="!currentUser.admin">
AND a.id != '1'
</if>
<if test="loginName != null and loginName != ''">
AND a.login_name like
<if test="dbName == 'oracle'">'%'||#{loginName}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{loginName}, '%')</if>
</if>
<if test="name != null and name != ''">
AND a.name like
<if test="dbName == 'oracle'">'%'||#{name}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{name}, '%')</if>
</if>
<if test="mobile != null and mobile != ''">
AND a.mobile like
<if test="dbName == 'oracle'">'%'||#{mobile}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{mobile}, '%')</if>
</if>
<if test="areaType != null and areaType != ''">
AND oa.type = #{areaType}
</if>
<!-- 数据范围过滤 -->
${sqlMap.dsf}
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy}
</when>
<otherwise>
ORDER BY c.code, o.code, a.name
</otherwise>
</choose>
</select>
<!-- 根据部门查询用户信息 -->
<select id="findListByOffice" resultType="User">
SELECT
<include refid="userColumns"/>
FROM sys_user a
<include refid="userJoins"/>
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
<if test="company != null and company.id != null and company.id != ''">
AND c.id = #{company.id}
</if>
<if test="office != null and office.id != null and office.id != ''">
AND o.id = #{office.id}
</if>
<if test="office == null">
AND (o.id = '' or o.id is null)
</if>
<if test="loginName != null and loginName != ''">
AND a.login_name like
<if test="dbName == 'oracle'">'%'||#{loginName}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{loginName}, '%')</if>
</if>
<if test="name != null and name != ''">
AND a.name like
<if test="dbName == 'oracle'">'%'||#{name}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{name}, '%')</if>
</if>
<!-- 数据范围过滤 -->
${sqlMap.dsf}
<!-- 排序 -->
ORDER BY a.name
</select>
<!-- 根据OfficeId获取用户树查询用户时用 -->
<select id="findUserByOfficeId" resultType="User" useCache="true">
SELECT
a.id, a.name, a.login_name
FROM sys_user a
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
AND a.office_id = #{office.id}
ORDER BY a.name
</select>
<!-- 查询全部用户 -->
<select id="findAllList" resultType="User">
SELECT
<include refid="userColumns"/>
FROM sys_user a
<include refid="userJoins"/>
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
ORDER BY c.code, o.code, a.name
</select>
<!-- 查询全部用户数目 -->
<select id="findAllCount" resultType="long">
SELECT
COUNT(1)
FROM sys_user a
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
</select>
<!-- 插入用户 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
INSERT INTO sys_user(
company_id,
office_id,
login_name,
password,
no,
name,
email,
phone,
mobile,
user_type,
create_by,
create_date,
update_by,
update_date,
remarks,
login_flag,
photo,
qrcode,
del_flag
) VALUES (
#{company.id},
#{office.id},
#{loginName},
#{password},
#{no},
#{name},
#{email},
#{phone},
#{mobile},
#{userType},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{remarks},
#{loginFlag},
#{photo},
#{qrCode},
#{delFlag}
)
</insert>
<!-- 更新用户 -->
<update id="update">
UPDATE sys_user SET
company_id = #{company.id},
office_id = #{office.id},
login_name = #{loginName},
password = #{password},
no = #{no},
name = #{name},
email = #{email},
phone = #{phone},
mobile = #{mobile},
user_type = #{userType},
update_by = #{updateBy.id},
update_date = #{updateDate},
remarks = #{remarks},
login_flag = #{loginFlag},
photo = #{photo},
qrcode = #{qrCode}
WHERE id = #{id}
</update>
<!-- 删除用户和角色关联表数据 -->
<delete id="deleteUserRole">
DELETE FROM sys_user_role WHERE user_id = #{id}
</delete>
<!-- 插入用户和角色关联表数据 -->
<insert id="insertUserRole">
INSERT INTO sys_user_role(user_id, role_id)
<foreach collection="roleList" item="role" separator=" union all ">
SELECT #{id}, #{role.id} FROM dual
</foreach>
</insert>
<!-- 更新用户信息 -->
<update id="updateUserInfo">
UPDATE sys_user SET
name = #{name},
email = #{email},
phone = #{phone},
mobile = #{mobile},
update_by = #{updateBy.id},
update_date = #{updateDate},
remarks = #{remarks},
photo = #{photo},
qrcode = #{qrCode}
WHERE id = #{id}
</update>
<!-- 更新用户密码 -->
<update id="updatePasswordById">
UPDATE sys_user SET
password = #{password}
WHERE id = #{id}
</update>
<!-- 更新登录信息如登录IP、登录时间 -->
<update id="updateLoginInfo">
UPDATE sys_user SET
login_ip = #{loginIp},
login_Date = #{loginDate}
WHERE id = #{id}
</update>
<!-- 物理删除用户 -->
<update id="delete">
DELETE FROM sys_user
WHERE id = #{id}
</update>
<!-- 逻辑删除用户 -->
<update id="deleteByLogic">
UPDATE sys_user SET
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select id="findUniqueByProperty" resultType="User" statementType="STATEMENT">
select * from sys_user where ${propertyName} = '${value}'
</select>
<!-- 添加好友 -->
<insert id="insertFriend">
INSERT INTO sys_user_friend(
id,
userId,
friendId
) VALUES (
#{id},
#{userId},
#{friendId}
)
</insert>
<!-- 根据用户id和好友id获取唯一记录 -->
<select id="findFriend" resultType="User">
SELECT
*
FROM sys_user a
LEFT JOIN sys_user_friend p ON p.userId = a.id
WHERE p.userId = #{userId} and p.friendId = #{friendId}
</select>
<!-- 删除好友 -->
<select id="deleteFriend">
DELETE FROM sys_user_friend WHERE userId = #{userId} and friendId = #{friendId}
</select>
<!-- 查询我的好友列表 -->
<select id="findFriends" resultType="User">
SELECT
<include refid="userColumns"/><!-- ,
ro.office_id AS "roleList.officeList.id" -->
FROM sys_user a
<include refid="userJoins"/>
LEFT JOIN sys_user_friend p ON p.friendId = a.id
WHERE p.userId = #{id}
</select>
<!-- 根据条件检索用户,添加到好友列表 -->
<select id="searchUsers" resultType="User">
SELECT
<include refid="userColumns"/><!-- ,
ro.office_id AS "roleList.officeList.id" -->
FROM sys_user a
<include refid="userJoins"/>
<if test="name != null and name != ''">
WHERE a.name like
<if test="dbName == 'oracle'">'%'||#{name}||'%'</if>
<if test="dbName == 'mysql'">CONCAT('%', #{name}, '%')</if>
</if>
</select>
<!-- 更新用户密码 -->
<update id="updatePasswordByEmail">
UPDATE sys_user SET
password = #{password}
WHERE email = #{email}
</update>
<select id="findUserAny" resultType="User" >
select * from sys_user where email = #{email}
</select>
<!-- 根据OfficeId获取用户树查询用户时用 -->
<select id="findUserByRegionId" resultType="User" useCache="true">
SELECT
a.id, a.name, a.login_name
FROM sys_user a
WHERE a.del_flag = #{DEL_FLAG_NORMAL}
AND a.region_id = #{dtRefionId}
ORDER BY a.name
</select>
<select id="getUserOffice" resultType="User" >
select GROUP_CONCAT(o.id) underOffice
from sys_office o
where ','||o.parent_ids||',' like
<if test="dbName == 'oracle'">'%,'||#{office.id}||',%'</if>
<if test="dbName == 'mysql'">CONCAT('%,', #{office.id}, ',%')</if>
or o.id = #{office.id}
</select>
</mapper>