<?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.iformall.mapper.WxCUserTagsMapper">
    <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxCUserTags">
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
        <result column="user_id" jdbcType="BIGINT" property="userId"/>
        <result column="tags" jdbcType="VARCHAR" property="tags"/>
        <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
        <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
    </resultMap>

    <sql id="allColumns">
	    `id`,`tenant_id`,`user_id`,`tags`,`create_date`,`update_date` 
	</sql>

    <sql id="dynamicWhereConditions">
        where 1 = 1

        <if test=" null != id ">
            and `id` = #{id}

        </if>

        <if test=" null != tenantId ">
            and `tenant_id` = #{tenantId}

        </if>

        <if test=" null != userId ">
            and `user_id` = #{userId}

        </if>

        <if test=" null != tags ">
            and `tags` like concat('%', #{tags},'%')

        </if>

        <if test=" null != createDate ">
            and `create_date` = #{createDate}

        </if>

        <if test=" null != updateDate ">
            and `update_date` = #{updateDate}

        </if>
        <if test=" null != ids ">
            and id in
            <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
                #{idItem}
            </foreach>
        </if>
        <if test=" null != sortColumns">order by ${sortColumns}</if>
    </sql>

    <select id="findList" parameterType="com.iformall.domain.po.WxCUserTags" resultMap="BaseResultMap">
        select
        <include refid="allColumns"/>
        from wx_c_user_tags
        <include refid="dynamicWhereConditions"/>
    </select>

    <update id="updateNewId" parameterType="com.iformall.domain.vo.CUserTagVo">
		update wx_c_user_tags
		set user_id=#{newUserId}
		where tenant_id=#{tenantId}
		and user_id = #{userId}
	</update>

    <select id="countUser" resultType="java.lang.Long">
	    select count(cut.user_id) from wx_c_user_tags cut, wx_c_user_basic_info cubi
	    where cut.user_id = cubi.id
        <if test="null != tenantId">
            and cut.tenant_id = #{tenantId}
        </if>
        <if test=" null != startTime ">
            and cubi.create_date &gt;= #{startTime}
        </if>
        <if test=" null != endTime">
            and cubi.create_date &lt; #{endTime}
        </if>
        <if test=" null != tagIds">
            and JSON_CONTAINS(cut.tags,#{tagIds})
        </if>

	</select>

</mapper>
