<?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.yunzhi.marketing.statistic.mapper.TaActicityStaticMapper">

    <select id="selectSharePersonNum" resultType="java.lang.Integer">
        SELECT count(1) as sharePersonNum
        FROM (
        SELECT count(DISTINCT(t.person_id))
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f ON t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
                <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                    #{taPersonBuilding.buildingId}
                </foreach>
             or
                b.building_id in
                <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                    #{taPersonBuilding.buildingId}
                </foreach>
             or
                e.building_id in
                <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                    #{taPersonBuilding.buildingId}
                </foreach>
            or
                c.building_id in
                <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                    #{taPersonBuilding.buildingId}
                </foreach>
            or
            d.building_id in
                <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                    #{taPersonBuilding.buildingId}
                </foreach>
              or d.create_user = #{userId}
              or c.create_user = #{userId}
            )
        </if>
        GROUP BY DATE_FORMAT( t.create_date, '%Y-%m-%d' ) ,t.person_id
        ) as temp1
    </select>

    <select id="selectShareNum" resultType="java.lang.Integer">
        SELECT
        COUNT( 1 ) AS shareNum
        FROM
        ta_share_count t
        left join ta_help_activity a on t.be_share = a.help_activity_id
        left join ta_share_activity b on t.be_share = b.share_id
        left join ta_live_activity c on t.be_share = c.live_activity_id
        left join ta_drainage d on t.be_share = d.drainage_id
        left join ta_building_dynamic e on t.be_share = e.dynamic_id
        left join ta_person f on t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
    </select>

    <select id="selectVisitPersonNum" resultType="java.lang.Integer">
        select count(*)AS visitPersonNum from (
        SELECT
        t.visit_time AS create_date,
        t.person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT(t.visit_time, '%Y-%m-%d'),
        person_id) as visitPersonCount
    </select>

    <select id="selectVisitNum" resultType="java.lang.Integer">
        select count(*) from ta_person_visit_record t where t.`event` = 'detail' and t.event_type in
        ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
    </select>

    <select id="selectShareCount" resultType="java.util.Map">
        SELECT
        share_count_table.date AS date,
        ifnull( share_count_table.user_count, 0 ) AS share_count
        FROM
        (
        SELECT
        *
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB( #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS user_count,
        t.create_date AS create_date
        FROM
        ta_share_count t
        left join ta_help_activity a on t.be_share = a.help_activity_id
        left join ta_share_activity b on t.be_share = b.share_id
        left join ta_live_activity c on t.be_share = c.live_activity_id
        left join ta_drainage d on t.be_share = d.drainage_id
        left join ta_building_dynamic e on t.be_share = e.dynamic_id
        left join ta_person f on t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY
        DATE_FORMAT( t.create_date, '%Y-%m-%d' )
        ) AS temp ON temp_date.date = DATE_FORMAT( temp.create_date, '%Y-%m-%d' )
        ) AS share_count_table

        group by date order by date
    </select>

    <select id="selectSharePersonCount" resultType="java.util.Map">
        SELECT
        share_person_count_table.date AS date,
        ifnull( share_person_count_table.user_count, 0 ) AS share_person_count
        FROM
        (
        SELECT
        *
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB(  #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT count(1) as user_count , temp1.*
        FROM (
        SELECT DISTINCT(t.person_id),t.create_date
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f
        ON t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY DATE_FORMAT( t.create_date, '%Y-%m-%d' ) ,t.person_id
        ) as temp1 GROUP BY DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )
        ) AS temp1 ON temp_date.date = DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )

        ) AS share_person_count_table

        group by date order by date
    </select>

    <select id="selectVisitCount" resultType="java.util.Map">
        SELECT
        visit_count_table.date AS date,
        ifnull( visit_count_table.user_count, 0 ) AS visit_count
        FROM (
        SELECT
        *
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB(  #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS user_count,
        t.visit_time AS create_date
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT( t.visit_time, '%Y-%m-%d' )
        ) AS temp ON temp_date.date = DATE_FORMAT( temp.create_date, '%Y-%m-%d' )
        ) AS visit_count_table
        group by date order by date
    </select>

    <select id="selectVisitPersonCount" resultType="java.util.Map">
        SELECT
        visit_person_count_table.date AS date,
        ifnull( visit_person_count_table.user_count, 0 ) AS visit_person_count
        FROM (
        SELECT
        *
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB(  #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        select count(*) AS user_count , visitPersonCount.* from (
        SELECT
        t.visit_time AS create_date,
        t.person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT(t.visit_time, '%Y-%m-%d'),
        person_id) as visitPersonCount GROUP BY DATE_FORMAT(visitPersonCount.create_date, '%Y-%m-%d')
        ) AS temp ON temp_date.date = DATE_FORMAT( temp.create_date, '%Y-%m-%d' )
        ) AS visit_person_count_table
        group by date order by date
    </select>

    <select id="selectAddRegistCount" resultType="java.util.Map">
        SELECT
        date,
        ifnull( addRegistNum, 0 ) AS addRegist_count
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB(  #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT
        count( * ) AS addRegistNum,
        temp4.*
        FROM
        (
        SELECT
        t.create_date AS create_date,
        t.person_id
        FROM
        ta_customer_from t
        WHERE
        t.target_type IN ( 'dynamic', 'h5', 'help', 'live', 'group', 'activity' )
        AND t.org_id = #{orgId}
        and t.is_org_first = 1
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and t.target_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        group by t.person_id
        ) AS temp4
        GROUP BY
        DATE_FORMAT( temp4.create_date, '%Y-%m-%d' )
        ) AS temp4 ON temp_date.date = DATE_FORMAT( temp4.create_date, '%Y-%m-%d' )
        GROUP BY
        date
        ORDER BY
        date DESC
    </select>

    <select id="selectTableData" resultType="com.yunzhi.marketing.excel.ActivityStatistics.StatisicAttractUser">
        SELECT date, ifnull(shareNum ,0) as shareNum, ifnull(sharePersonNum, 0) as sharePersonNum, ifnull(visitNum, 0)
        as visitNum, ifnull(visitPersonNum, 0) as visitPersonNum, ifnull(addRegistNum,0) as addRegistNum
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB( #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS shareNum,
        t.create_date AS create_date
        FROM
        ta_share_count t
        left join ta_help_activity a on t.be_share = a.help_activity_id
        left join ta_share_activity b on t.be_share = b.share_id
        left join ta_live_activity c on t.be_share = c.live_activity_id
        left join ta_drainage d on t.be_share = d.drainage_id
        left join ta_building_dynamic e on t.be_share = e.dynamic_id
        left join ta_person f on t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY
        DATE_FORMAT( t.create_date, '%Y-%m-%d' )
        ) AS temp ON temp_date.date = DATE_FORMAT( temp.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        SELECT count(1) as sharePersonNum , temp1.*
        FROM (
        SELECT DISTINCT(t.person_id),t.create_date
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f ON t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY DATE_FORMAT( t.create_date, '%Y-%m-%d' ) ,t.person_id
        ) as temp1 GROUP BY DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )
        ) AS temp1 ON temp_date.date = DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS visitNum,
        t.visit_time AS create_date
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' when #{targetType} = 'h5' then t.event_type = 'h5' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT( t.visit_time, '%Y-%m-%d' )
        ) AS temp2 ON temp_date.date = DATE_FORMAT( temp2.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        select count(*)AS visitPersonNum , visitPersonCount.* from (
        SELECT
        t.visit_time AS create_date,
        t.person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' when #{targetType} = 'h5' then t.event_type = 'h5' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT(t.visit_time, '%Y-%m-%d'),
        person_id) as visitPersonCount GROUP BY DATE_FORMAT(visitPersonCount.create_date, '%Y-%m-%d')
        ) AS temp3 ON temp_date.date = DATE_FORMAT( temp3.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        select count(*) as addRegistNum,temp4.* from (
        SELECT
        t.create_date AS create_date,
        t.person_id
        FROM
        ta_customer_from t
        WHERE
        t.target_type in ('dynamic','h5','help','live', 'group', 'activity') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        and t.is_org_first = 1
        <if test="targetType != null and targetType != ''">
            and t.target_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        GROUP BY t.person_id
        ) as temp4 GROUP BY DATE_FORMAT(temp4.create_date,'%Y-%m-%d')
        ) AS temp4 ON temp_date.date = DATE_FORMAT( temp4.create_date, '%Y-%m-%d' )
        GROUP BY date
        <if test="colKey == null or colKey == ''">
            ORDER BY date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sortType}
        </if>
    </select>
    <select id="selectExportTableData" resultType="com.yunzhi.marketing.excel.ActivityStatistics.StatisicAttractUser">
        SELECT date, ifnull(shareNum ,0) as shareNum, ifnull(sharePersonNum, 0) as sharePersonNum, ifnull(visitNum, 0)
        as visitNum, ifnull(visitPersonNum, 0) as visitPersonNum, ifnull(addRegistNum,0) as addRegistNum
        FROM
        (
        SELECT
        DATE_FORMAT( DATE_SUB( #{endDate}, INTERVAL a.rownum DAY ), '%Y-%m-%d' ) AS date
        FROM
        sequence a
        <trim prefix="where">
            <if test="startDate != null or endDate != null">
                a.rownum <![CDATA[ <= ]]> datediff(#{endDate}, #{startDate})
            </if>
        </trim>
        ) AS temp_date
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS shareNum,
        t.create_date AS create_date
        FROM
        ta_share_count t
        left join ta_help_activity a on t.be_share = a.help_activity_id
        left join ta_share_activity b on t.be_share = b.share_id
        left join ta_live_activity c on t.be_share = c.live_activity_id
        left join ta_drainage d on t.be_share = d.drainage_id
        left join ta_building_dynamic e on t.be_share = e.dynamic_id
        left join ta_person f on t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY
        DATE_FORMAT( t.create_date, '%Y-%m-%d' )
        ) AS temp ON temp_date.date = DATE_FORMAT( temp.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        SELECT count(1) as sharePersonNum , temp1.*
        FROM (
        SELECT DISTINCT(t.person_id),t.create_date
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f ON t.person_id = f.person_id
        WHERE
        t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and (a.building_id = #{buildingId} or b.building_id = #{buildingId} or c.building_id = #{buildingId} or
            d.building_id = #{buildingId} or e.building_id = #{buildingId})
        </if>
        <if test="targetType != null and targetType != ''">
            and t.tagert_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        GROUP BY DATE_FORMAT( t.create_date, '%Y-%m-%d' ) ,t.person_id
        ) as temp1 GROUP BY DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )
        ) AS temp1 ON temp_date.date = DATE_FORMAT( temp1.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        SELECT
        COUNT( 1 ) AS visitNum,
        t.visit_time AS create_date
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT( t.visit_time, '%Y-%m-%d' )
        ) AS temp2 ON temp_date.date = DATE_FORMAT( temp2.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        select count(*)AS visitPersonNum , visitPersonCount.* from (
        SELECT
        t.visit_time AS create_date,
        t.person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail' and t.event_type in ('activity','help','group','h5') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'activity' then t.target_type = 'dynamic' else t.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and t.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        DATE_FORMAT(t.visit_time, '%Y-%m-%d'),
        person_id) as visitPersonCount GROUP BY DATE_FORMAT(visitPersonCount.create_date, '%Y-%m-%d')
        ) AS temp3 ON temp_date.date = DATE_FORMAT( temp3.create_date, '%Y-%m-%d' )
        LEFT JOIN (
        select count(*) as addRegistNum,temp4.* from (
        SELECT
        t.create_date AS create_date,
        t.person_id
        FROM
        ta_customer_from t
        WHERE
        t.target_type in ('dynamic','h5','help','live', 'group', 'activity') and t.org_id = #{orgId}
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        and t.is_org_first = 1
        <if test="targetType != null and targetType != ''">
            and t.target_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        GROUP BY t.person_id
        ) as temp4 GROUP BY DATE_FORMAT(temp4.create_date,'%Y-%m-%d')
        ) AS temp4 ON temp_date.date = DATE_FORMAT( temp4.create_date, '%Y-%m-%d' )
        GROUP BY date
        <if test="colKey == null or colKey == ''">
            ORDER BY date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sortType}
        </if>
    </select>

    <select id="selectActivityStatisDetail"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.ActivityDetailShareRecord">
        select
        activity.*,
        ifnull(shareNum.shareNum, 0) as shareNum,
        ifnull(sharePersonNum.sharePersonNum, 0) as sharePersonNum,
        ifnull(visitNum.visitNum, 0) as visitNum,
        ifnull(visitPersonNum.visitPersonNum, 0) as visitPersonNum,
        ifnull(addRegistNum.addRegistNum, 0) as addRegistNum
        from (
        select a.dynamic_id as activityId, a.title as activityName, "activity" as activityType from ta_building_dynamic
        a
        where org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and a.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and a.title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select b.help_activity_id activityId, b.title as activityName, "help" as activityType from ta_help_activity b
        where b.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and b.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and b.title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select c.group_activity_id as activityId, c.activity_name as activityName, "group" as activityType From
        ta_share_activity c
        where c.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and c.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and c.activity_name like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select d.drainage_id as activityId, d.name as activityName, "h5" as activityType from ta_drainage d
        where d.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and d.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and d.name like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and (d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            )
        </if>
        union all
        select e.live_activity_id as activityId, e.live_activity_title as activityName, "live" as activityType From
        ta_live_activity e
        where e.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and e.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and e.live_activity_title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and (e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or e.create_user = #{userId}
            )
        </if>
        ) as activity

        left join (
            select count(1) as shareNum, a.* from (
            SELECT a.be_share, case when a.tagert_type = 'liveApp' then 'live' when a.tagert_type = 'livePost' then 'live' else a.tagert_type end as tagert_type, a.create_date
            FROM ta_share_count a where a.tagert_type in (
            'activity', 'group','h5','help','liveApp','livePost')
            and a.org_id = #{orgId}
            <if test="targetType != null and targetType != ''">
                and (case when #{targetType} = 'live' then a.tagert_type in ('liveApp', 'livePost') else a.tagert_type = #{targetType}
                end)
            </if>
            <if test="startDate != null ">
                and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="endDate != null ">
                and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="startDate == null or endDate == null ">
                AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
            </if>
            order by a.create_date desc limit 9999999) as a group by a.be_share,a.tagert_type order by a.create_date desc
        ) as shareNum on shareNum.be_share = activity.activityId and shareNum.tagert_type = activity.activityType

        left join (
        SELECT count(*) as sharePersonNum ,sharePersonNum.be_share, sharePersonNum.tagert_type, sharePersonNum.create_date from (
        SELECT a.be_share, a.create_date ,case when a.tagert_type = 'liveApp' then 'live' when a.tagert_type = 'livePost' then 'live' else a.tagert_type end   as tagert_type
        From ta_share_count a where a.tagert_type in ( 'activity', 'group','h5','help','liveApp','livePost')
        and a.org_id = #{orgId}
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'live' then a.tagert_type in ('liveApp', 'livePost') else a.tagert_type = #{targetType}
            end)
        </if>
        <if test="startDate != null ">
            and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.person_id, be_share
<!--        , be_share, tagert_type-->
        ) as sharePersonNum group by sharePersonNum.be_share, sharePersonNum.tagert_type
        ) as sharePersonNum on sharePersonNum.be_share = activity.activityId and sharePersonNum.tagert_type =
        activity.activityType

        left join (
            select count(*) as visitNum, a.target_id, case when a.target_type = 'dynamic' then 'activity' when a.target_type is null then 'h5' else a.target_type end as target_type
            From ta_person_visit_record a where a.event_type in
            ('activity','group','h5','help') and a.`event` = 'detail' and a.org_id = #{orgId}
            <if test="targetType != null and targetType != '' and targetType != 'h5'">
                and (case when #{targetType} = 'activity' then a.target_type = 'dynamic' else a.target_type = #{targetType}
                end)
            </if>
            <if test="startDate != null">
                and a.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="endDate != null">
                and a.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="startDate == null or endDate == null ">
                AND a.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
            </if>
            group by a.target_id, a.target_type
        ) as visitNum on visitNum.target_id = activity.activityId and visitNum.target_type = activity.activityType

        left join (
            SELECT count(DISTINCT(a.person_id)) as visitPersonNum , a.target_id, case when a.target_type = 'dynamic' then 'activity' when a.target_type is null then 'h5' else a.target_type end as event_type
            From ta_person_visit_record a where a.event_type in ('activity','group','h5','help') and a.`event` =
            'detail' and a.org_id = #{orgId}
            <if test="targetType != null and targetType != '' and targetType != 'h5'">
                and (case when #{targetType} = 'activity' then a.target_type = 'dynamic' else a.target_type = #{targetType}
                end)
            </if>
            <if test="startDate != null">
                and a.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="endDate != null">
                and a.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
            </if>
            <if test="startDate == null or endDate == null ">
                AND a.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
            </if>
            group by a.target_id, a.target_type
        ) as visitPersonNum on visitPersonNum.target_id = activity.activityId and visitPersonNum.event_type =
        activity.activityType

        left join (
        select count(*) as addRegistNum ,addRegistNum.target_id, addRegistNum.target_type From (
        select count(*), a.* From ta_customer_from a where a.target_type IN ( 'dynamic', 'h5',
        'help', 'live', 'group', 'activity' ) and a.org_id = #{orgId}
        and a.is_org_first = 1
        <if test="targetType != null and targetType != '' and targetType != 'h5'">
            and a.target_type = #{targetType}
        </if>
        <if test="startDate != null ">
            and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.person_id, a.target_type ,a.target_id
        ) as addRegistNum group by addRegistNum.target_type, addRegistNum.target_id
        ) as addRegistNum on addRegistNum.target_id = activity.activityId and activity.activityType  = addRegistNum.target_type
        <if test="targetType != null and targetType != ''">
            where activity.activityType = #{targetType}
        </if>
        group by activity.activityId, activity.activityType
        <if test="colKey == null or colKey == ''">
            order by shareNum.create_date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sortType}
        </if>
    </select>

    <select id="selectActivityStatisDetailExport"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.ActivityDetailShareRecord">
        select
        activity.*,
        ifnull(shareNum.shareNum, 0) as shareNum,
        ifnull(sharePersonNum.sharePersonNum, 0) as sharePersonNum,
        ifnull(visitNum.visitNum, 0) as visitNum,
        ifnull(visitPersonNum.visitPersonNum, 0) as visitPersonNum,
        ifnull(addRegistNum.addRegistNum, 0) as addRegistNum
        from (
        select a.dynamic_id as activityId, a.title as activityName, "activity" as activityType from ta_building_dynamic
        a
        where org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and a.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and a.title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select b.help_activity_id activityId, b.title as activityName, "help" as activityType from ta_help_activity b
        where b.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and b.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and b.title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select c.group_activity_id as activityId, c.activity_name as activityName, "group" as activityType From
        ta_share_activity c
        where c.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and c.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and c.activity_name like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        union all
        select d.drainage_id as activityId, d.name as activityName, "h5" as activityType from ta_drainage d
        where d.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and d.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and d.name like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and (d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            )
        </if>
        union all
        select e.live_activity_id as activityId, e.live_activity_title as activityName, "live" as activityType From
        ta_live_activity e
        where e.org_id = #{orgId}
        <if test="buildingId != null and buildingId != '' ">
            and e.building_id = #{buildingId}
        </if>
        <if test="activityName != null and activityName != '' ">
            and e.live_activity_title like concat('%', #{activityName}, '%')
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and (e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or e.create_user = #{userId}
            )
        </if>
        ) as activity

        left join (
        select count(1) as shareNum, a.* from (

        SELECT a.be_share, case when a.tagert_type = 'liveApp' then 'live' when a.tagert_type = 'livePost' then 'live' else a.tagert_type end as tagert_type, a.create_date
        FROM ta_share_count a where a.tagert_type in (
        'activity', 'group','h5','help','liveApp','livePost')
        and a.org_id = #{orgId}
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'live' then a.tagert_type in ('liveApp', 'livePost') else a.tagert_type = #{targetType}
            end)
        </if>
        <if test="startDate != null ">
            and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        order by a.create_date desc limit 9999999) as a group by a.be_share,a.tagert_type order by a.create_date desc
        ) as shareNum on shareNum.be_share = activity.activityId and shareNum.tagert_type = activity.activityType

        left join (
        SELECT count(*) as sharePersonNum ,sharePersonNum.be_share, sharePersonNum.tagert_type, sharePersonNum.create_date from (
        SELECT a.be_share, a.create_date ,case when a.tagert_type = 'liveApp' then 'live' when a.tagert_type = 'livePost' then 'live' else a.tagert_type end   as tagert_type
        From ta_share_count a where a.tagert_type in ( 'activity', 'group','h5','help','liveApp','livePost')
        and a.org_id = #{orgId}
        <if test="targetType != null and targetType != ''">
            and (case when #{targetType} = 'live' then a.tagert_type in ('liveApp', 'livePost') else a.tagert_type = #{targetType}
            end)
        </if>
        <if test="startDate != null ">
            and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.person_id, be_share
        <!--        , be_share, tagert_type-->
        ) as sharePersonNum group by sharePersonNum.be_share, sharePersonNum.tagert_type
        ) as sharePersonNum on sharePersonNum.be_share = activity.activityId and sharePersonNum.tagert_type =
        activity.activityType

        left join (
        select count(*) as visitNum, a.target_id, case when a.target_type = 'dynamic' then 'activity' when a.target_type is null then 'h5' else a.target_type end as target_type
        From ta_person_visit_record a where a.event_type in
        ('activity','group','h5','help') and a.`event` = 'detail' and a.org_id = #{orgId}
        <if test="targetType != null and targetType != '' and targetType != 'h5'">
            and (case when #{targetType} = 'activity' then a.target_type = 'dynamic' else a.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and a.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and a.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND a.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.target_id, a.target_type
        ) as visitNum on visitNum.target_id = activity.activityId and visitNum.target_type = activity.activityType

        left join (
        SELECT count(DISTINCT(a.person_id)) as visitPersonNum , a.target_id, case when a.target_type = 'dynamic' then 'activity' when a.target_type is null then 'h5' else a.target_type end as event_type
        From ta_person_visit_record a where a.event_type in ('activity','group','h5','help') and a.`event` =
        'detail' and a.org_id = #{orgId}
        <if test="targetType != null and targetType != '' and targetType != 'h5'">
            and (case when #{targetType} = 'activity' then a.target_type = 'dynamic' else a.target_type = #{targetType}
            end)
        </if>
        <if test="startDate != null">
            and a.visit_time &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null">
            and a.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null ">
            AND a.visit_time BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.target_id, a.target_type
        ) as visitPersonNum on visitPersonNum.target_id = activity.activityId and visitPersonNum.event_type =
        activity.activityType

        left join (
        select count(*) as addRegistNum ,addRegistNum.target_id, addRegistNum.target_type From (
        select count(*), a.* From ta_customer_from a where a.target_type IN ( 'dynamic', 'h5',
        'help', 'live', 'group', 'activity') and a.org_id = #{orgId}
        and a.is_org_first = 1
        <if test="targetType != null and targetType != '' and targetType != 'h5'">
            and a.target_type = concat(REPLACE(#{targetType}, 'activity', 'dynamic'), '_share')
        </if>
        <if test="startDate != null ">
            and a.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="endDate != null ">
            and a.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S' )
        </if>
        <if test="startDate == null or endDate == null">
            AND a.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
        </if>
        group by a.person_id, a.target_type ,a.target_id
        ) as addRegistNum group by addRegistNum.target_type, addRegistNum.target_id
        ) as addRegistNum on addRegistNum.target_id = activity.activityId and activity.activityType  = addRegistNum.target_type
        <if test="targetType != null and targetType != ''">
            where activity.activityType = #{targetType}
        </if>
        group by activity.activityId, activity.activityType
        <if test="colKey == null or colKey == ''">
            order by shareNum.create_date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sortType}
        </if>
    </select>




    <select id="selectActivitySharePersonNum"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.SharePersonNum">
        select person.nickname as sharePersonName,
        ifnull(person.phone, '空') as sharePersonPhone ,
        ifnull(shareNum, 0) as shareNum,
        ifnull(visitNum, 0) as visitNum,
        ifnull(visitPersonNum, 0) as visitPersonNum,
        person.person_type as sharePersonType,
        person.person_id
        from (
        SELECT t.*, f.nickname, f.phone, f.person_type
        FROM ta_share_count t
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f
        ON t.person_id = f.person_id
        WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="buildingId != null and buildingId != ''">
            and (
            a.building_id = #{buildingId}
            or b.building_id = #{buildingId}
            or c.building_id = #{buildingId}
            or d.building_id = #{buildingId}
            or e.building_id = #{buildingId}
            )
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        <if test="activityId != null and activityId != ''">
            and t.be_share = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
            end)
        </if>
        <if test="sharePersonType != null and sharePersonType != ''">
            and f.person_type = #{sharePersonType}
        </if>
        <if test="sharePersonName != null and sharePersonName != ''">
            and f.nickname like CONCAT('%',#{sharePersonName}, '%')
        </if>
        <if test="sharePhone != null and sharePhone != ''">
            and f.phone like CONCAT('%',#{sharePhone}, '%')
        </if>
        GROUP BY t.person_id
        ) as person

        left join (
            select count(*) as shareNum, temp.person_id, temp.create_date from (
                SELECT t.person_id, t.create_date
                FROM ta_share_count t
                LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
                LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
                LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
                LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
                LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
                LEFT JOIN ta_person f
                ON t.person_id = f.person_id
                WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
                and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
                DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
                <if test="activityId != null and activityId != ''">
                    and t.be_share = #{activityId}
                </if>
                <if test="activityType != null and activityType != ''">
                    and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
                    end)
                </if>
                order by t.create_date desc limit 999999
            ) as temp group by temp.person_id order by temp.create_date desc
        ) as shareNum on person.person_id = shareNum.person_id

        left join (
        SELECT t.visitNum, ifnull(a.person_id,b.person_id) AS person_id
        FROM (
        SELECT t.share_person, count(1) as visitNum
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S') AND t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S') AND t.target_type IN ('dynamic_share', 'h5_share', 'help_share',
        'live_share', 'group_share')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.org_id = #{orgId} group by t.share_person) t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        ) as visitNum on visitNum.person_id = person.person_id

        left join (

        SELECT t.visitPersonNum, ifnull(a.person_id,b.person_id) AS person_id
        FROM (
        SELECT count(DISTINCT t.person_id ) as visitPersonNum, t.share_person
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.target_type in ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        and t.org_id = #{orgId}
        group by t.share_person
        ) t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        ) as visitPersonNum on visitPersonNum.person_id = person.person_id
        group by person.person_id
        <if test="colKey == null or colKey == ''">
            order by shareNum.create_date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sort}
        </if>

    </select>
    <select id="selectActivitySharePersonNumExport"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.SharePersonNum">
        select person.nickname as sharePersonName,
        ifnull(person.phone, '空') as sharePersonPhone ,
        ifnull(shareNum, 0) as shareNum,
        ifnull(visitNum, 0) as visitNum,
        ifnull(visitPersonNum, 0) as visitPersonNum,
        CASE
        WHEN person.person_type = 'drift' THEN
        "游客"
        WHEN person.person_type = 'customer' THEN
        "普通客户"
        WHEN person.person_type = 'Realty Consultant' THEN
        "置业顾问"
        END `sharePersonType`,
        person.person_id
        from (
        SELECT t.*, f.nickname, f.phone, f.person_type
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f
        ON t.person_id = f.person_id
        WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="buildingId != null and buildingId != ''">
            and (
            a.building_id = #{buildingId}
            or b.building_id = #{buildingId}
            or c.building_id = #{buildingId}
            or d.building_id = #{buildingId}
            or e.building_id = #{buildingId}
            )
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        <if test="activityId != null and activityId != ''">
            and t.be_share = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
            end)
        </if>
        <if test="sharePersonType != null and sharePersonType != ''">
            and f.person_type = #{sharePersonType}
        </if>
        <if test="sharePersonName != null and sharePersonName != ''">
            and f.nickname like CONCAT('%',#{sharePersonName}, '%')
        </if>
        <if test="sharePhone != null and sharePhone != ''">
            and f.phone like CONCAT('%',#{sharePhone}, '%')
        </if>
        GROUP BY t.person_id
        ) as person

        left join (
        select count(*) as shareNum, temp.person_id, temp.create_date from (
        SELECT t.person_id, t.create_date
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f
        ON t.person_id = f.person_id
        WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost') and t.org_id = #{orgId}
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="activityId != null and activityId != ''">
            and t.be_share = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
            end)
        </if>
        order by t.create_date desc limit 999999
        ) as temp group by temp.person_id order by temp.create_date desc
        ) as shareNum on person.person_id = shareNum.person_id

        left join (
        SELECT t.visitNum, ifnull(a.person_id,b.person_id) AS person_id
        FROM (
        SELECT t.share_person, count(1) as visitNum
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S') AND t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S') AND t.target_type IN ('dynamic_share', 'h5_share', 'help_share',
        'live_share', 'group_share')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.org_id = #{orgId} ) t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        ) as visitNum on visitNum.person_id = person.person_id

        left join (

        SELECT t.visitPersonNum, ifnull(a.person_id,b.person_id) AS person_id
        FROM (
        SELECT count(DISTINCT t.person_id ) as visitPersonNum, t.share_person
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.target_type in ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        and t.org_id = #{orgId}
        <!--        group by t.share_person -->
        ) t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        ) as visitPersonNum on visitPersonNum.person_id = person.person_id
        group by person.person_id
        <if test="colKey == null or colKey == ''">
            order by shareNum.create_date desc
        </if>
        <if test="colKey != null and colKey != ''">
            ORDER BY ${colKey} ${sort}
        </if>

    </select>

    <select id="selectActivityShareNum" resultType="com.yunzhi.marketing.excel.ActivityStatistics.ShareNum">
        select person.nickname as sharePersonName,
        ifnull(person.phone, '空') as sharePersonPhone ,
        person.create_date as shareTime,
        ifnull(visitPersonNum.visitPersonNum, 0) as visitPersonNum,
        person.person_type as sharePersonType
        FROM (
        SELECT t.*, f.nickname, f.phone, f.person_type
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f ON t.person_id = f.person_id
        WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost')
        <if test="activityId != null and activityId != ''">
            and t.be_share = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and (
            a.building_id = #{buildingId}
            or b.building_id = #{buildingId}
            or c.building_id = #{buildingId}
            or d.building_id = #{buildingId}
            or e.building_id = #{buildingId}
            )
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        and t.org_id = #{orgId}
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' )
        and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="personId != null and personId != ''">
            and t.person_id = #{personId}
        </if>
        <if test="sharePersonName != null and sharePersonName != ''">
            and f.nickname like CONCAT('%',#{sharePersonName}, '%')
        </if>
        <if test="sharePhone != null and sharePhone != ''">
            and f.phone like CONCAT('%',#{sharePhone}, '%')
        </if>
        <if test="sharePersonType != null and sharePersonType != ''">
            and f.person_type = #{sharePersonType}
        </if>
        ) as person
        LEFT JOIN (
        SELECT count(DISTINCT(t.person_id)) as visitPersonNum, ifnull(a.person_id,b.person_id) as person_id
        FROM ta_share_person_from t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        where t.target_type in ('dynamic_share','h5_share','help_share','live_share', 'group_share') and t.org_id = #{orgId}
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(#{activityType}, '_share')
        </if>
        <if test="personId != null and personId != ''">
            and t.share_person = #{personId}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d' )
        </if>
        ) as visitPersonNum
        ON visitPersonNum.person_id = person.person_id order by person.create_date desc
    </select>

    <select id="selectActivityShareNumExport" resultType="com.yunzhi.marketing.excel.ActivityStatistics.ShareNum">
        select person.nickname as sharePersonName,
        ifnull(person.phone, '空') as sharePersonPhone ,
        person.create_date as shareTime,
        ifnull(visitPersonNum.visitPersonNum, 0) as visitPersonNum,
        CASE
        WHEN person.person_type = 'drift' THEN
        "游客"
        WHEN person.person_type = 'customer' THEN
        "普通客户"
        WHEN person.person_type = 'Realty Consultant' THEN
        "置业顾问"
        END `sharePersonType`
        FROM (
        SELECT t.*, f.nickname, f.phone, f.person_type
        FROM ta_share_count t
        LEFT JOIN ta_help_activity a ON t.be_share = a.help_activity_id
        LEFT JOIN ta_share_activity b ON t.be_share = b.share_id
        LEFT JOIN ta_live_activity c ON t.be_share = c.live_activity_id
        LEFT JOIN ta_drainage d ON t.be_share = d.drainage_id
        LEFT JOIN ta_building_dynamic e ON t.be_share = e.dynamic_id
        LEFT JOIN ta_person f ON t.person_id = f.person_id
        WHERE t.tagert_type in ('activity','group','h5','help','liveApp','livePost')
        <if test="activityId != null and activityId != ''">
            and t.be_share = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'live' then t.tagert_type in ('liveApp', 'livePost') else t.tagert_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and (
            a.building_id = #{buildingId}
            or b.building_id = #{buildingId}
            or c.building_id = #{buildingId}
            or d.building_id = #{buildingId}
            or e.building_id = #{buildingId}
            )
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            AND
            (a.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            b.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            e.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            c.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or
            d.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
            or d.create_user = #{userId}
            or c.create_user = #{userId}
            )
        </if>
        and t.org_id = #{orgId}
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' )
        and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="personId != null and personId != ''">
            and t.person_id = #{personId}
        </if>
        <if test="sharePersonName != null and sharePersonName != ''">
            and f.nickname like CONCAT('%',#{sharePersonName}, '%')
        </if>
        <if test="sharePhone != null and sharePhone != ''">
            and f.phone like CONCAT('%',#{sharePhone}, '%')
        </if>
        <if test="sharePersonType != null and sharePersonType != ''">
            and f.person_type = #{sharePersonType}
        </if>
        ) as person
        LEFT JOIN (
        SELECT count(DISTINCT(t.person_id)) as visitPersonNum, ifnull(a.person_id,b.person_id) as person_id
        FROM ta_share_person_from t
        left join ta_person a on t.share_person = a.person_id
        left join ta_person b on t.share_person = b.user_id
        where t.target_type in ('dynamic_share','h5_share','help_share','live_share', 'group_share') and t.org_id = #{orgId}
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(#{activityType}, '_share')
        </if>
        <if test="personId != null and personId != ''">
            and t.share_person = #{personId}
        </if>
        <if test="startDate != null ">
            and t.create_date &gt;= DATE_FORMAT(#{startDate}, '%Y-%m-%d' )
        </if>
        <if test="endDate != null ">
            and t.create_date &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d' )
        </if>
        ) as visitPersonNum
        ON visitPersonNum.person_id = person.person_id order by person.create_date desc
    </select>

    <select id="selectActivityAddRegistNum" resultType="com.yunzhi.marketing.excel.ActivityStatistics.AddRegistNum">
        SELECT
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        d.user_name as realtyConsultant,
        d.phone as realtyConsultantPhone,
        e.nickname  AS sharePersonName,
        e.phone AS sharePersonPhone
        FROM ta_customer_from t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId} and b.is_first_time =1
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        left join ta_recommend_customer c on c.person_id = t.person_id and c.realty_consultant is not null
        LEFT JOIN ta_user d ON c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON t.share_person_id = e.person_id
        WHERE t.target_type in ('dynamic','h5','help','live', 'group','activity') and t.org_id =
        #{orgId}
        and t.is_org_first = 1
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d' ) and t.create_date &lt;= DATE_FORMAT(#{endDate},
        '%Y-%m-%d' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = #{activityType}
        </if>
        <if test="province != null and province != ''">
            and a.province like concat('%', #{province}, '%')
        </if>
        <if test="personFrom != null and personFrom != ''">
            and b.scene_type = #{personFrom}
        </if>
        <if test="buildingId != null and buildingId != ''">
            and c.building_id = #{buildingId}
        </if>
        group by t.person_id order by t.create_date desc
    </select>

    <select id="selectActivityAddRegistNumExport"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.AddRegistNum">
        SELECT
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        group_concat(d.phone) as realtyConsultantPhone,
        e.nickname  AS sharePersonName,
        e.phone AS sharePersonPhone
        FROM ta_customer_from t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId} and b.is_first_time =1
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        left join ta_recommend_customer c on c.person_id = t.person_id
        LEFT JOIN ta_user d ON c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON t.share_person_id = e.person_id
        WHERE t.target_type in ('dynamic','h5','help','live', 'group','activity') and t.org_id =
        #{orgId}
        and t.is_org_first = 1
        and t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d' ) and t.create_date &lt;= DATE_FORMAT(#{endDate},
        '%Y-%m-%d' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = #{activityType}
        </if>
        <if test="province != null and province != ''">
            and a.province like concat('%', #{province}, '%')
        </if>
        <if test="personFrom != null and personFrom != ''">
            and b.scene_type = #{personFrom}
        </if>
        <if test="buildingId != null and buildingId != ''">
            and c.building_id = #{buildingId}
        </if>
        group by t.person_id order by t.create_date desc
    </select>

    <select id="selectActivityVisitNum" resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        e.nickname as sharePersonName,
        e.phone as sharePersonPhone,
        t.visit_time as visitDate
        From (
        SELECT
        t.person_id, t.visit_time, t.share_person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail'
        AND t.event_type IN (
        'activity',
        'help',
        'group',
        'h5'
        )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'activity' then t.target_type = 'dynamic' when #{activityType} = 'h5' then t.event_type = 'h5' else t.target_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        AND t.org_id = #{orgId}
        AND t.visit_time >= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
        AND t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
        ) t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        left join ta_person e on t.share_person_id = e.person_id
        <where>
            <if test="personFrom != null and personFrom != ''">
                and b.scene_type = #{personFrom}
            </if>
            <if test="province != null and province != ''">
                and a.province like concat('%', #{province}, '%')
            </if>
            <if test="realtyConsultant != null and realtyConsultant != ''">
                and d.user_name like concat('%', #{realtyConsultant}, '%')
            </if>
            <if test="realtyConsultantPhone != null and realtyConsultantPhone != ''">
                and d.phone like concat('%', #{realtyConsultantPhone}, '%')
            </if>
        </where>
        group by t.visit_time
        order by t.visit_time desc
    </select>

    <select id="selectActivityVisitNumExport" resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        e.nickname as sharePersonName,
        e.phone as sharePersonPhone,
        t.visit_time as visitDate
        From (
        SELECT
        t.person_id, t.visit_time, t.share_person_id
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail'
        AND t.event_type IN (
        'activity',
        'help',
        'group',
        'h5'
        )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'activity' then t.target_type = 'dynamic' when #{activityType} = 'h5' then t.event_type = 'h5' else t.target_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        AND t.org_id = #{orgId}
        AND t.visit_time >= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
        AND t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
        ) t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        left join ta_person e on t.share_person_id = e.person_id
        <where>
            <if test="personFrom != null and personFrom != ''">
                and b.scene_type = #{personFrom}
            </if>
            <if test="province != null and province != ''">
                and a.province like concat('%', #{province}, '%')
            </if>
            <if test="realtyConsultant != null and realtyConsultant != ''">
                and d.user_name like concat('%', #{realtyConsultant}, '%')
            </if>
            <if test="realtyConsultantPhone != null and realtyConsultantPhone != ''">
                and d.phone like concat('%', #{realtyConsultantPhone}, '%')
            </if>
        </where>
        group by t.visit_time
        order by t.visit_time desc
    </select>

    <select id="selectActivityVisitPersonNum"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitPersonNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        e.nickName as sharePersonName,
        t.visitNum
        from (
        SELECT
        t.visit_time AS create_date,
        t.person_id,
        count(*) as visitNum
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail'
        AND t.event_type IN (
        'activity',
        'help',
        'group',
        'h5'
        )
        AND t.org_id = #{orgId}
        AND t.visit_time >= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
        AND t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'activity' then t.target_type = 'dynamic' when #{activityType} = 'h5' then t.event_type = 'h5' else t.target_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        <if test="taPersonBuildings != null and taPersonBuildings.size > 0">
            and t.building_id in
            <foreach collection="taPersonBuildings" item="taPersonBuilding" open="(" close=")" separator=",">
                #{taPersonBuilding.buildingId}
            </foreach>
        </if>
        GROUP BY
        t.person_id ) as t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId} and b.is_first_time = 1
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON e.person_id = b.share_person_id
        <where>
            <if test="personFrom != null and personFrom != ''">
                and b.scene_type = #{personFrom}
            </if>
            <if test="province != null and province != ''">
                and a.province like concat('%', #{province},'%')
            </if>
            <if test="realtyConsultant != null and realtyConsultant != ''">
                and d.user_name like concat('%', #{realtyConsultant},'%')
            </if>
            <if test="realtyConsultantPhone != null and realtyConsultantPhone != ''">
                and d.phone like concat('%', #{realtyConsultantPhone},'%')
            </if>
        </where>
        group by t.person_id
        order by t.create_date desc
    </select>

    <select id="selectActivityVisitPersonNumExport"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitPersonNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        e.nickName as sharePersonName,
        t.visitNum
        from (
        SELECT
        t.visit_time AS create_date,
        t.person_id,
        count(*) as visitNum
        FROM
        ta_person_visit_record t
        WHERE
        t.`event` = 'detail'
        AND t.event_type IN (
        'activity',
        'help',
        'group',
        'h5'
        )
        AND t.org_id = #{orgId}
        AND t.visit_time >= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
        AND t.visit_time &lt;= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and (case when #{activityType} = 'activity' then t.target_type = 'dynamic' when #{activityType} = 'h5' then t.event_type = 'h5' else t.target_type = #{activityType}
            end)
        </if>
        <if test="buildingId != null and buildingId != ''">
            and t.building_id = #{buildingId}
        </if>
        GROUP BY
        t.person_id ) as t
        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId} and b.is_first_time = 1
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON e.person_id = b.share_person_id
        <where>
            <if test="personFrom != null and personFrom != ''">
                and b.scene_type = #{personFrom}
            </if>
            <if test="province != null and province != ''">
                and a.province like concat('%', #{province},'%')
            </if>
            <if test="realtyConsultant != null and realtyConsultant != ''">
                and d.user_name like concat('%', #{realtyConsultant},'%')
            </if>
            <if test="realtyConsultantPhone != null and realtyConsultantPhone != ''">
                and d.phone like concat('%', #{realtyConsultantPhone},'%')
            </if>
        </where>
        group by t.person_id
        order by t.create_date desc
    </select>

    <select id="selectActivityVisitPersonNumByPersonId"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitPersonNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        e.nickName as sharePersonName,
        t.visitNum
        From (
        SELECT count(1) as visitNum, t.person_id, t.create_date
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.target_type in
        ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        and
        (t.share_person = (select b.user_id from ta_person t left join ta_user b on t.user_id = b.user_id where t.person_id = #{personId})
        or t.share_person = #{personId})
        group by t.person_id
        ) as t

        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON e.person_id = b.share_person_id
        group by t.person_id
    </select>

    <select id="selectActivityVisitNumByPersonId" resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        ifnull(e.nickname, f.user_name) as sharePersonName,
        ifnull(e.phone, f.phone) as sharePersonPhone
        From (
        SELECT t.person_id, t.create_date, t.share_person
        FROM ta_share_person_from t
        LEFT JOIN (
        SELECT a.person_id, b.user_id
        FROM ta_person a
        LEFT JOIN ta_user b
        ON a.user_id = b.user_id
        WHERE a.org_id = #{orgId} ) as a ON t.share_person = a.person_id or t.share_person = a.user_id
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' ) and t.target_type in
        ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and
        (t.share_person = (select b.user_id from ta_person t left join ta_user b on t.user_id = b.user_id where t.person_id = #{personId})
        or t.share_person = #{personId})
        ) as t

        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        left join ta_person e on t.share_person = e.person_id
        left join ta_user f on t.share_person = f.user_id
        group by t.create_date
    </select>

    <select id="selectActivityVisitPersonNumExportByPersonId"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitPersonNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        e.nickName as sharePersonName,
        t.visitNum
        From (
        SELECT count(1) as visitNum, t.person_id, t.create_date
        FROM ta_share_person_from t
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' )
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and t.target_type in
        ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        and
        (t.share_person = (select b.user_id from ta_person t left join ta_user b on t.user_id = b.user_id where t.person_id = #{personId})
        or t.share_person = #{personId})
        group by t.person_id
        ) as t

        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        LEFT JOIN ta_person e ON e.person_id = b.share_person_id
        group by t.person_id
    </select>

    <select id="selectActivityVisitNumExportByPersonId"
            resultType="com.yunzhi.marketing.excel.ActivityStatistics.VisitNum">
        select
        a.nickname, a.phone,
        if(a.gender = '1', '男', if(a.gender = '2', '女','未知') ) as gender,
        a.province,
        b1.scene_alias as personFrom,
        GROUP_CONCAT(d.user_name) as realtyConsultant,
        GROUP_CONCAT(d.phone) as realtyConsultantPhone,
        t.create_date as visitDate,
        ifnull(e.nickname, f.user_name) as sharePersonName,
        ifnull(e.phone, f.phone) as sharePersonPhone
        From (
        SELECT t.person_id, t.create_date, t.share_person
        FROM ta_share_person_from t
        LEFT JOIN (
        SELECT a.person_id, b.user_id
        FROM ta_person a
        LEFT JOIN ta_user b
        ON a.user_id = b.user_id
        WHERE a.org_id = #{orgId} ) as a ON t.share_person = a.person_id or t.share_person = a.user_id
        WHERE t.create_date >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%I:%S' ) and t.create_date &lt;=
        DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%I:%S' ) and t.target_type in
        ('dynamic_share','h5_share','help_share','live_share', 'group_share')
        <if test="activityId != null and activityId != ''">
            and t.target_id = #{activityId}
        </if>
        <if test="activityType != null and activityType != ''">
            and t.target_type = concat(REPLACE(#{activityType}, 'activity', 'dynamic'), '_share')
        </if>
        and
        (t.share_person = (select b.user_id from ta_person t left join ta_user b on t.user_id = b.user_id where t.person_id = #{personId})
        or t.share_person = #{personId})
        ) as t

        left join ta_person a on t.person_id = a.person_id
        left join ta_person_from_record b on a.person_id = b.person_id and b.org_id = #{orgId}
        left join td_wx_dict b1 on b.scene_id = b1.scene_id
        LEFT JOIN ta_recommend_customer c on c.person_id = t.person_id
        left join ta_user d on c.realty_consultant = d.user_id
        left join ta_person e on t.share_person = e.person_id
        left join ta_user f on t.share_person = f.user_id
        group by t.create_date
    </select>
</mapper>
