<?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.partner.mapper.PartnerCustomerInfoMapper">

    <resultMap type="cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo" id="PartnerCustomerInfoResult">
        <result property="id"    column="id"    />
        <result property="partnerId"    column="partner_id"    />
        <result property="customerName"    column="customer_name"    />
        <result property="customerPhone"    column="customer_phone"    />
        <result property="userId"    column="user_id"    />
        <result property="sex"    column="sex"    />
        <result property="userAge"    column="user_age"    />
        <result property="deptId"    column="dept_id"    />
        <result property="createTime"    column="create_time"    />
        <result property="creator"    column="creator"    />
        <result property="updateTime"    column="update_time"    />
        <result property="updater"    column="updater"    />
    </resultMap>

    <sql id="selectPartnerCustomerInfoVo">
        select id, partner_id, customer_name, customer_phone, user_id, sex, user_age, dept_id, create_time, creator, update_time, updater from partner_customer_info
    </sql>

    <select id="selectPartnerCustomerInfoList" resultType="cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo">
        select pci.*,
               sr.name as roleName,
               sr.code as roleCode
        from partner_customer_info pci
        left join shop_user_car suc on suc.user_id = pci.user_id
        left join system_users su on su.id = pci.user_id
        left join system_user_role sur on sur.user_id = su.id
        left join system_role sr on sr.id = sur.role_id
        <where>
            <if test="vo.carNum != null  and vo.carNum != ''"> and suc.car_no like concat('%', #{vo.carNum}, '%')</if>
            <if test="vo.customerName != null  and vo.customerName != ''"> and pci.customer_name like concat('%', #{vo.customerName}, '%')</if>
            <if test="vo.customerPhone != null  and vo.customerPhone != ''"> and pci.customer_phone like concat('%', #{vo.customerPhone}, '%')</if>
            <if test="vo.roleCode != null  and vo.roleCode != ''"> and sr.code = #{vo.roleCode}</if>
        </where>
        group  by pci.id
        order by suc.next_inspection_date
    </select>

    <select id="selectPartnerCustomerInfoById" parameterType="Long" resultMap="PartnerCustomerInfoResult">
        <include refid="selectPartnerCustomerInfoVo"/>
        where id = #{id}
    </select>
    <select id="pagePartnerCustomerInfoList"
            resultType="cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo">
        select pci.*,
        sr.name as roleName,
        sr.code as roleCode
        from partner_customer_info pci
        left join shop_user_car suc on suc.user_id = pci.user_id
        left join system_users su on su.id = pci.user_id
        left join system_user_role sur on sur.user_id = su.id
        left join system_role sr on sr.id = sur.role_id
        <where>
            <if test="vo.carNum != null  and vo.carNum != ''"> and suc.car_no like concat('%', #{vo.carNum}, '%')</if>
            <if test="vo.customerName != null  and vo.customerName != ''"> and pci.customer_name like concat('%', #{vo.customerName}, '%')</if>
            <if test="vo.customerPhone != null  and vo.customerPhone != ''"> and pci.customer_phone like concat('%', #{vo.customerPhone}, '%')</if>
            <if test="vo.roleCode != null  and vo.roleCode != ''"> and sr.code = #{vo.roleCode}</if>
        </where>
        group  by pci.id
        order by suc.next_inspection_date
    </select>

    <insert id="insertPartnerCustomerInfo" parameterType="cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo">
        insert into partner_customer_info
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="partnerId != null">partner_id,</if>
            <if test="customerName != null">customer_name,</if>
            <if test="customerPhone != null">customer_phone,</if>
            <if test="userId != null">user_id,</if>
            <if test="sex != null">sex,</if>
            <if test="userAge != null">user_age,</if>
            <if test="deptId != null">dept_id,</if>
            <if test="createTime != null">create_time,</if>
            <if test="creator != null">creator,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="updater != null">updater,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="partnerId != null">#{partnerId},</if>
            <if test="customerName != null">#{customerName},</if>
            <if test="customerPhone != null">#{customerPhone},</if>
            <if test="userId != null">#{userId},</if>
            <if test="sex != null">#{sex},</if>
            <if test="userAge != null">#{userAge},</if>
            <if test="deptId != null">#{deptId},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="creator != null">#{creator},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="updater != null">#{updater},</if>
         </trim>
    </insert>

    <update id="updatePartnerCustomerInfo" parameterType="cn.iocoder.yudao.module.partner.entity.PartnerCustomerInfo">
        update partner_customer_info
        <trim prefix="SET" suffixOverrides=",">
            <if test="partnerId != null">partner_id = #{partnerId},</if>
            <if test="customerName != null">customer_name = #{customerName},</if>
            <if test="customerPhone != null">customer_phone = #{customerPhone},</if>
            <if test="userId != null">user_id = #{userId},</if>
            <if test="sex != null">sex = #{sex},</if>
            <if test="userAge != null">user_age = #{userAge},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="creator != null">creator = #{creator},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="updater != null">updater = #{updater},</if>
        </trim>
        where id = #{id}
    </update>

    <delete id="deletePartnerCustomerInfoById" parameterType="Long">
        delete from partner_customer_info where id = #{id}
    </delete>

    <delete id="deletePartnerCustomerInfoByIds" parameterType="String">
        delete from partner_customer_info where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
