<?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.xjrsoft.module.room.mapper.RoomTeacherAppointMapper">
    <select id="getPage" parameterType="com.xjrsoft.module.room.dto.RoomTeacherAppointPageDto" resultType="com.xjrsoft.module.room.vo.RoomTeacherAppointPageVo">
        SELECT t1.id,t1.sort_code,t2.name AS build_name,t1.floor_number,t1.room_name,t3.name AS gender_cn,
        (
        SELECT GROUP_CONCAT(c2.name) FROM room_teacher_appoint c1
        LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
        WHERE c1.delete_mark = 0 AND c1.room_id = t1.id
        ) AS appoint_users FROM room t1
        LEFT JOIN base_office_build t2 ON t1.office_build_id = t2.id
        LEFT JOIN xjr_dictionary_detail t3 ON t1.gender = t3.code AND t3.item_id = 2023000000000000004
        WHERE t1.delete_mark = 0
        <if test="dto.officeBuildId != null">
            and t1.office_build_id = #{dto.officeBuildId}
        </if>
        <if test="dto.floorNumber != null">
            and t1.floor_number = #{dto.floorNumber}
        </if>
        <if test="dto.roomName != null and dto.roomName != ''">
            and t1.room_name like concat('%', #{dto.checkInStatus},'%')
        </if>
        <if test="dto.gender != null and dto.gender != ''">
            and t1.gender = #{dto.gender}
        </if>
        <if test="dto.userId != null">
            and t1.id in (
            SELECT DISTINCT c1.room_id FROM room_teacher_appoint c1
            LEFT JOIN xjr_user c2 ON c1.user_id = c2.id
            WHERE c1.delete_mark = 0 AND c2.id = #{dto.userId}
            )
        </if>
        <if test="dto.identity != null and dto.identity != ''">
            and t1.check_in_status like concat('%',#{dto.identity},'%')
        </if>
        ORDER BY t1.sort_code
    </select>
</mapper>