<?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="cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <update id="emptyOpenId">
        update system_users
        set open_id = null
        where open_id = #{openId}
    </update>

    <select id="selectByDeptIds" resultType="cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO">
        select a.*, b.name deptName FROM system_users a, system_dept b
        where
            a.dept_id = b.id
            and a.status = 0
            and a.user_type = 1
            and a.dept_id in
            <foreach collection="list" item="deptIds" open="(" close=")" separator=",">
                #{deptIds}
            </foreach>
    </select>

    <select id="selectUserByBoss" resultType="java.lang.Long">
        SELECT DISTINCT
            a.id
        FROM
            system_users AS a,
            system_dept AS b
        WHERE
            ( LOCATE( '7', a.post_ids ) OR LOCATE( '8', a.post_ids ) )
           OR ((
                   b.`level` = 2
                       OR b.`level` = 3
                   )
            AND b.leader_user_id = a.id)
    </select>
    <select id="selectByDeptIdsFilterGroupUser"
            resultType="cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO">
        select a.*, b.name deptName FROM system_users a, system_dept b
        where
        a.dept_id = b.id
        and a.status = 0
        and a.user_type = 1
        and a.dept_id in
        <foreach collection="deptIds" item="deptId" open="(" close=")" separator=",">
            #{deptId}
        </foreach>
        and not exists(select id from kq_attendance_group_user where user_id = a.id and attendance_group_id != #{groupId} and deleted = 0)
    </select>

    <select id="getAllUserListByGroupIds"
            resultType="cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO">
        select a.id,
        a.nickname,
        a.avatar,
        a.dept_id,
        c.name deptName
        from system_users as a
        left join kq_attendance_group_user b on a.id = b.user_id
        left join system_dept as c on a.dept_id = c.id
        <where>
            a.deleted = 0 and b.deleted = 0
            <if test="dto.groupIds != null and dto.groupIds.size() > 0">
                and b.attendance_group_id in
                <foreach collection="dto.groupIds" item="groupId" open="(" close=")" separator=",">
                    #{groupId}
                </foreach>
            </if>
            <if test="dto.deptId != null">
                and a.dept_id = #{dto.deptId}
            </if>
            <if test="dto.name != null and dto.name != ''">
                and a.nickname like concat('%', #{dto.name}, '%')
            </if>
            <if test="dto.status != null">
                and a.status = #{dto.status}
            </if>
        </where>
    </select>
</mapper>
