<?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.bunny.services.mapper.financial.DebtTrackingMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.bunny.dao.entity.financial.DebtTracking">
        <id column="id" property="id"/>
        <id column="create_time" property="createTime"/>
        <id column="update_time" property="updateTime"/>
        <id column="create_user" property="createUser"/>
        <id column="update_user" property="updateUser"/>
        <id column="is_deleted" property="isDeleted"/>
        <id column="user_id" property="userId"/>
        <id column="debtor_name" property="debtorName"/>
        <id column="debt_amount" property="debtAmount"/>
        <id column="debt_type" property="debtType"/>
        <id column="debt_status" property="debtStatus"/>
        <id column="due_date" property="dueDate"/>
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, create_time, update_time, create_user, update_user, is_deleted, user_id, debtor_name, debt_amount, debt_type, debt_status, due_date
    </sql>

    <!-- 分页查询债务追踪内容 -->
    <select id="selectListByPage" resultType="cn.bunny.dao.vo.financial.admin.DebtTrackingVo">
        select
        base.*,
        create_user.username as create_username,
        update_user.username as update_username
        from t_debt_tracking base
        left join sys_user create_user on create_user.id = base.create_user
        left join sys_user update_user on update_user.id = base.update_user
        <where>
            base.is_deleted = 0
            <if test="dto.userId != null and dto.userId != ''">
                and base.user_id like CONCAT('%',#{dto.userId},'%')
            </if>
            <if test="dto.debtorName != null and dto.debtorName != ''">
                and base.debtor_name like CONCAT('%',#{dto.debtorName},'%')
            </if>
            <if test="dto.debtAmount != null and dto.debtAmount != ''">
                and base.debt_amount like CONCAT('%',#{dto.debtAmount},'%')
            </if>
            <if test="dto.debtType != null and dto.debtType != ''">
                and base.debt_type like CONCAT('%',#{dto.debtType},'%')
            </if>
            <if test="dto.debtStatus != null and dto.debtStatus != ''">
                and base.debt_status like CONCAT('%',#{dto.debtStatus},'%')
            </if>
            <if test="dto.dueDate != null and dto.dueDate != ''">
                and base.due_date like CONCAT('%',#{dto.dueDate},'%')
            </if>
        </where>
    </select>

    <!-- 物理删除债务追踪 -->
    <delete id="deleteBatchIdsWithPhysics">
        delete
        from t_debt_tracking
        where id in
        <foreach collection="ids" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>

</mapper>
