<?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.ruoyi.manage.mapper.FacilityBuildingMapper">
    <!--
      模块：功能房-楼房
      说明：
        - 软删：softDeleteByIds 使用 del_flag；列表支持按名称/状态过滤（由上层传参）。
    -->

    <resultMap id="BuildingResult" type="com.ruoyi.manage.domain.FacilityBuilding">
        <id property="id" column="id"/>
        <result property="buildingName" column="building_name"/>
        <result property="status" column="status"/>
        <result property="remark" column="remark"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
    </resultMap>

    <sql id="baseSelect">select *
                         from tb_facility_building</sql>

    <select id="selectList" resultMap="BuildingResult">
        <include refid="baseSelect"/>
        <where>
            del_flag = '0'
            <if test="query != null and query.status != null and query.status != ''">and status = #{query.status}</if>
            <if test="query != null and query.buildingName != null and query.buildingName != ''">and building_name like
                concat('%', #{query.buildingName}, '%')
            </if>
        </where>
        order by id asc
    </select>

    <select id="selectById" parameterType="long" resultMap="BuildingResult">
        <include refid="baseSelect"/>
        where id = #{id}
    </select>

    <insert id="insert" parameterType="com.ruoyi.manage.domain.FacilityBuilding" useGeneratedKeys="true"
            keyProperty="id">
        insert into tb_facility_building(building_name, status, remark, create_by, create_time, del_flag)
        values (#{buildingName}, #{status}, #{remark}, #{createBy}, #{createTime}, '0')
    </insert>

    <update id="update" parameterType="com.ruoyi.manage.domain.FacilityBuilding">
        update tb_facility_building
        <set>
            <if test="buildingName != null">building_name = #{buildingName},</if>
            <if test="status != null">status = #{status},</if>
            <if test="remark != null">remark = #{remark},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </set>
        where id = #{id}
    </update>

    <update id="softDeleteByIds">
        update tb_facility_building set del_flag = '2', update_time = now()
        where id in
        <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
    </update>

</mapper>
