You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

140 lines
6.2 KiB

<?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.example.web.mapper.UsersManagementsMapper">
<resultMap id="UsersManagementsResultMap" type="com.example.web.entity.UsersManagements">
<id property="id" column="id"/>
<result property="userId" column="userId"/>
<result property="managerId" column="managerId"/>
<result property="managercompany" column="managercompany"/>
<result property="managerdepartment" column="managerdepartment"/>
<result property="organization" column="organization"/>
<result property="role" column="role"/>
<result property="root" column="root"/>
<result property="created_at" column="created_at"/>
<result property="updated_at" column="updated_at"/>
<result property="userName" column="userName"/>
<result property="assistant" column="assistant"/>
</resultMap>
<!-- 在 UsersManagementsMapper.xml 中添加 -->
<select id="findByUserNameAndManagerId" parameterType="map" resultMap="UsersManagementsResultMap">
SELECT id, userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at, userName, assistant
FROM usermanagements
WHERE userName = #{userName} AND managerId = #{managerId}
</select>
<!-- 新增:支持部门查询 -->
<select id="findByDepartment" parameterType="string" resultMap="UsersManagementsResultMap">
SELECT id, userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at, userName, assistant
FROM usermanagements
WHERE managerdepartment = #{department}
</select>
<!-- 新增:组合条件查询 -->
<select id="findByConditions" parameterType="map" resultMap="UsersManagementsResultMap">
SELECT id, userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at, userName, assistant
FROM usermanagements
<where>
<if test="userName != null">AND userName = #{userName}</if>
<if test="department != null">AND managerdepartment = #{department}</if>
<if test="company != null">AND managercompany = #{company}</if>
<if test="role != null">AND role = #{role}</if>
</where>
ORDER BY created_at DESC
</select>
<!-- 根据用户ID查询负责人信息 -->
<select id="findByUserId" parameterType="string" resultMap="UsersManagementsResultMap">
SELECT id, userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at, userName, assistant
FROM usermanagements
WHERE userId = #{userId}
ORDER BY id DESC
LIMIT 1
</select>
<!-- 插入负责人信息 -->
<insert id="insertUsersManagements" parameterType="com.example.web.entity.UsersManagements">
INSERT INTO usermanagements (
userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at,
userName, assistant
) VALUES (
#{userId}, #{managerId}, #{managercompany}, #{managerdepartment},
#{organization}, #{role}, #{root}, #{created_at}, #{updated_at},
#{userName}, #{assistant}
)
</insert>
<!-- 更新负责人信息 -->
<update id="updateUsersManagements" parameterType="com.example.web.entity.UsersManagements">
UPDATE usermanagements
SET managerId = #{managerId},
managercompany = #{managercompany},
managerdepartment = #{managerdepartment},
organization = #{organization},
role = #{role},
root = #{root},
updated_at = #{updated_at},
userName = #{userName},
assistant = #{assistant}
WHERE id = #{id}
</update>
<!-- 更新负责人信息的更新时间 -->
<update id="updateManagerUpdateTime">
UPDATE users_managements
SET updated_at = #{updatedAt}
WHERE user_id = #{userId}
</update>
<!-- 查询完整负责人信息 -->
<select id="findCompleteManagerInfoByUserId" resultType="com.example.web.entity.UsersManagements">
SELECT
manager_id,
managercompany,
managerdepartment,
organization,
role,
user_name,
assistant,
created_at,
updated_at
FROM users_managements
WHERE user_id = #{userId}
</select>
<select id="findByUserIdAndAuthInfo" resultMap="UsersManagementsResultMap">
SELECT * FROM usermanagements
WHERE userId = #{userId}
AND (managercompany = #{authInfo.managercompany} OR #{authInfo.managercompany} IS NULL)
AND (managerdepartment = #{authInfo.managerdepartment} OR #{authInfo.managerdepartment} IS NULL)
AND (organization = #{authInfo.organization} OR #{authInfo.organization} IS NULL)
AND (userName = #{authInfo.userName} OR #{authInfo.userName} IS NULL)
LIMIT 1
</select>
<select id="findAuthorizedUserIds" resultType="string">
SELECT userId FROM usermanagements
WHERE (managercompany = #{authInfo.managercompany} OR #{authInfo.managercompany} IS NULL)
AND (managerdepartment = #{authInfo.managerdepartment} OR #{authInfo.managerdepartment} IS NULL)
AND (organization = #{authInfo.organization} OR #{authInfo.organization} IS NULL)
AND (userName = #{authInfo.userName} OR #{authInfo.userName} IS NULL)
</select>
<!-- 新增:批量查询用户负责人信息 -->
<select id="findByUserIds" resultMap="UsersManagementsResultMap">
SELECT id, userId, managerId, managercompany, managerdepartment,
organization, role, root, created_at, updated_at, userName, assistant
FROM usermanagements
WHERE userId IN
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</select>
</mapper>