<?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.xxl.job.executor.report.mapper.KuaishouReportDailyAccountMapper">

    <resultMap id="BaseResultMap" type="com.xxl.job.executor.report.entity.KuaishouReportDailyAccount">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="account_id" property="accountId" jdbcType="BIGINT"/>
        <result column="charge" property="charge" jdbcType="DECIMAL"/>
        <result column="photo_show" property="photoShow" jdbcType="BIGINT"/>
        <result column="aclick" property="aclick" jdbcType="BIGINT"/>
        <result column="bclick" property="bclick" jdbcType="BIGINT"/>
        <result column="photo_share" property="photoShare" jdbcType="BIGINT"/>
        <result column="photo_comment" property="photoComment" jdbcType="BIGINT"/>
        <result column="photo_like" property="photoLike" jdbcType="BIGINT"/>
        <result column="follow" property="follow" jdbcType="BIGINT"/>
        <result column="cancel_follow" property="cancelFollow" jdbcType="BIGINT"/>
        <result column="report" property="report" jdbcType="BIGINT"/>
        <result column="block" property="block" jdbcType="BIGINT"/>
        <result column="negative" property="negative" jdbcType="BIGINT"/>
        <result column="download_started" property="downloadStarted" jdbcType="BIGINT"/>
        <result column="download_completed" property="downloadCompleted" jdbcType="BIGINT"/>
        <result column="activation" property="activation" jdbcType="BIGINT"/>
        <result column="submit" property="submit" jdbcType="BIGINT"/>
        <result column="stat_date" property="statDate" jdbcType="VARCHAR"/>
        <result column="photo_click" property="photoClick" jdbcType="BIGINT"/>
        <result column="photo_click_ratio" property="photoClickRatio" jdbcType="DOUBLE"/>
        <result column="action_ratio" property="actionRatio" jdbcType="DOUBLE"/>
        <result column="impression_1k_cost" property="impression1kCost" jdbcType="DECIMAL"/>
        <result column="photo_click_cost" property="photoClickCost" jdbcType="DECIMAL"/>
        <result column="action_cost" property="actionCost" jdbcType="DECIMAL"/>
        <result column="event_pay_first_day" property="eventPayFirstDay" jdbcType="BIGINT"/>
        <result column="event_pay_purchase_amount_first_day" property="eventPayPurchaseAmountFirstDay"
                jdbcType="DECIMAL"/>
        <result column="event_pay_first_day_roi" property="eventPayFirstDayRoi" jdbcType="DOUBLE"/>
        <result column="event_pay" property="eventPay" jdbcType="BIGINT"/>
        <result column="event_pay_purchase_amount" property="eventPayPurchaseAmount" jdbcType="DECIMAL"/>
        <result column="event_pay_roi" property="eventPayRoi" jdbcType="DOUBLE"/>
        <result column="event_register" property="eventRegister" jdbcType="BIGINT"/>
        <result column="event_register_cost" property="eventRegisterCost" jdbcType="DECIMAL"/>
        <result column="event_register_ratio" property="eventRegisterRatio" jdbcType="DOUBLE"/>
        <result column="event_jin_jian_app" property="eventJinJianApp" jdbcType="BIGINT"/>
        <result column="event_jin_jian_app_cost" property="eventJinJianAppCost" jdbcType="DECIMAL"/>
        <result column="event_credit_grant_app" property="eventCreditGrantApp" jdbcType="BIGINT"/>
        <result column="event_credit_grant_app_cost" property="eventCreditGrantAppCost" jdbcType="DECIMAL"/>
        <result column="event_credit_grant_app_ratio" property="eventCreditGrantAppRatio" jdbcType="DOUBLE"/>
        <result column="event_order_paid" property="eventOrderPaid" jdbcType="BIGINT"/>
        <result column="event_order_paid_purchase_amount" property="eventOrderPaidPurchaseAmount"
                jdbcType="DECIMAL"/>
        <result column="event_jin_jian_landing_page" property="eventJinJianLandingPage" jdbcType="BIGINT"/>
        <result column="event_jin_jian_landing_page_cost" property="eventJinJianLandingPageCost"
                jdbcType="DECIMAL"/>
        <result column="event_credit_grant_landing_page" property="eventCreditGrantLandingPage" jdbcType="BIGINT"/>
        <result column="event_credit_grant_landing_page_cost" property="eventCreditGrantLandingPageCost"
                jdbcType="DECIMAL"/>
        <result column="event_credit_grant_landing_ratio" property="eventCreditGrantLandingRatio"
                jdbcType="DOUBLE"/>
        <result column="event_next_day_stay_cost" property="eventNextDayStayCost" jdbcType="DECIMAL"/>
        <result column="event_next_day_stay_ratio" property="eventNextDayStayRatio" jdbcType="BIGINT"/>
        <result column="form_action_ratio" property="formActionRatio" jdbcType="DOUBLE"/>
        <result column="event_order_paid_cost" property="eventOrderPaidCost" jdbcType="DECIMAL"/>
        <result column="event_next_day_stay" property="eventNextDayStay" jdbcType="BIGINT"/>
        <result column="form_cost" property="formCost" jdbcType="DECIMAL"/>
        <result column="form_count" property="formCount" jdbcType="BIGINT"/>
        <result column="play_3s_ratio" property="play3sRatio" jdbcType="DOUBLE"/>
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
    </resultMap>

    <sql id="Base_Column_List">
    id, account_id, charge, photo_show, aclick, bclick, photo_share, photo_comment, photo_like,
    follow, cancel_follow, report, block, negative, download_started, download_completed,
    activation, submit, stat_date, photo_click, photo_click_ratio, action_ratio, impression_1k_cost,
    photo_click_cost, action_cost, event_pay_first_day, event_pay_purchase_amount_first_day,
    event_pay_first_day_roi, event_pay, event_pay_purchase_amount, event_pay_roi, event_register,
    event_register_cost, event_register_ratio, event_jin_jian_app, event_jin_jian_app_cost,
    event_credit_grant_app, event_credit_grant_app_cost, event_credit_grant_app_ratio,
    event_order_paid, event_order_paid_purchase_amount, event_jin_jian_landing_page,
    event_jin_jian_landing_page_cost, event_credit_grant_landing_page, event_credit_grant_landing_page_cost,
    event_credit_grant_landing_ratio, event_next_day_stay_cost, event_next_day_stay_ratio,
    form_action_ratio, event_order_paid_cost, event_next_day_stay, form_cost, form_count,
    play_3s_ratio, create_time, update_time
  </sql>


    <insert id="insertSelective" parameterType="com.xxl.job.executor.report.entity.KuaishouReportDailyAccount">
        replace into ctop_kuaishou_report_daily_account
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="accountId != null">
                account_id,
            </if>
            <if test="charge != null">
                charge,
            </if>
            <if test="photoShow != null">
                photo_show,
            </if>
            <if test="aclick != null">
                aclick,
            </if>
            <if test="bclick != null">
                bclick,
            </if>
            <if test="photoShare != null">
                photo_share,
            </if>
            <if test="photoComment != null">
                photo_comment,
            </if>
            <if test="photoLike != null">
                photo_like,
            </if>
            <if test="follow != null">
                follow,
            </if>
            <if test="cancelFollow != null">
                cancel_follow,
            </if>
            <if test="report != null">
                report,
            </if>
            <if test="block != null">
                block,
            </if>
            <if test="negative != null">
                negative,
            </if>
            <if test="downloadStarted != null">
                download_started,
            </if>
            <if test="downloadCompleted != null">
                download_completed,
            </if>
            <if test="activation != null">
                activation,
            </if>
            <if test="submit != null">
                submit,
            </if>
            <if test="statDate != null">
                stat_date,
            </if>
            <if test="photoClick != null">
                photo_click,
            </if>
            <if test="photoClickRatio != null">
                photo_click_ratio,
            </if>
            <if test="actionRatio != null">
                action_ratio,
            </if>
            <if test="impression1kCost != null">
                impression_1k_cost,
            </if>
            <if test="photoClickCost != null">
                photo_click_cost,
            </if>
            <if test="actionCost != null">
                action_cost,
            </if>
            <if test="eventPayFirstDay != null">
                event_pay_first_day,
            </if>
            <if test="eventPayPurchaseAmountFirstDay != null">
                event_pay_purchase_amount_first_day,
            </if>
            <if test="eventPayFirstDayRoi != null">
                event_pay_first_day_roi,
            </if>
            <if test="eventPay != null">
                event_pay,
            </if>
            <if test="eventPayPurchaseAmount != null">
                event_pay_purchase_amount,
            </if>
            <if test="eventPayRoi != null">
                event_pay_roi,
            </if>
            <if test="eventRegister != null">
                event_register,
            </if>
            <if test="eventRegisterCost != null">
                event_register_cost,
            </if>
            <if test="eventRegisterRatio != null">
                event_register_ratio,
            </if>
            <if test="eventJinJianApp != null">
                event_jin_jian_app,
            </if>
            <if test="eventJinJianAppCost != null">
                event_jin_jian_app_cost,
            </if>
            <if test="eventCreditGrantApp != null">
                event_credit_grant_app,
            </if>
            <if test="eventCreditGrantAppCost != null">
                event_credit_grant_app_cost,
            </if>
            <if test="eventCreditGrantAppRatio != null">
                event_credit_grant_app_ratio,
            </if>
            <if test="eventOrderPaid != null">
                event_order_paid,
            </if>
            <if test="eventOrderPaidPurchaseAmount != null">
                event_order_paid_purchase_amount,
            </if>
            <if test="eventJinJianLandingPage != null">
                event_jin_jian_landing_page,
            </if>
            <if test="eventJinJianLandingPageCost != null">
                event_jin_jian_landing_page_cost,
            </if>
            <if test="eventCreditGrantLandingPage != null">
                event_credit_grant_landing_page,
            </if>
            <if test="eventCreditGrantLandingPageCost != null">
                event_credit_grant_landing_page_cost,
            </if>
            <if test="eventCreditGrantLandingRatio != null">
                event_credit_grant_landing_ratio,
            </if>
            <if test="eventNextDayStayCost != null">
                event_next_day_stay_cost,
            </if>
            <if test="eventNextDayStayRatio != null">
                event_next_day_stay_ratio,
            </if>
            <if test="formActionRatio != null">
                form_action_ratio,
            </if>
            <if test="eventOrderPaidCost != null">
                event_order_paid_cost,
            </if>
            <if test="eventNextDayStay != null">
                event_next_day_stay,
            </if>
            <if test="formCost != null">
                form_cost,
            </if>
            <if test="formCount != null">
                form_count,
            </if>
            <if test="play3sRatio != null">
                play_3s_ratio,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
            <if test="updateTime != null">
                update_time,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="accountId != null">
                #{accountId,jdbcType=BIGINT},
            </if>
            <if test="charge != null">
                #{charge,jdbcType=DECIMAL},
            </if>
            <if test="photoShow != null">
                #{photoShow,jdbcType=BIGINT},
            </if>
            <if test="aclick != null">
                #{aclick,jdbcType=BIGINT},
            </if>
            <if test="bclick != null">
                #{bclick,jdbcType=BIGINT},
            </if>
            <if test="photoShare != null">
                #{photoShare,jdbcType=BIGINT},
            </if>
            <if test="photoComment != null">
                #{photoComment,jdbcType=BIGINT},
            </if>
            <if test="photoLike != null">
                #{photoLike,jdbcType=BIGINT},
            </if>
            <if test="follow != null">
                #{follow,jdbcType=BIGINT},
            </if>
            <if test="cancelFollow != null">
                #{cancelFollow,jdbcType=BIGINT},
            </if>
            <if test="report != null">
                #{report,jdbcType=BIGINT},
            </if>
            <if test="block != null">
                #{block,jdbcType=BIGINT},
            </if>
            <if test="negative != null">
                #{negative,jdbcType=BIGINT},
            </if>
            <if test="downloadStarted != null">
                #{downloadStarted,jdbcType=BIGINT},
            </if>
            <if test="downloadCompleted != null">
                #{downloadCompleted,jdbcType=BIGINT},
            </if>
            <if test="activation != null">
                #{activation,jdbcType=BIGINT},
            </if>
            <if test="submit != null">
                #{submit,jdbcType=BIGINT},
            </if>
            <if test="statDate != null">
                #{statDate,jdbcType=VARCHAR},
            </if>
            <if test="photoClick != null">
                #{photoClick,jdbcType=BIGINT},
            </if>
            <if test="photoClickRatio != null">
                #{photoClickRatio,jdbcType=DOUBLE},
            </if>
            <if test="actionRatio != null">
                #{actionRatio,jdbcType=DOUBLE},
            </if>
            <if test="impression1kCost != null">
                #{impression1kCost,jdbcType=DECIMAL},
            </if>
            <if test="photoClickCost != null">
                #{photoClickCost,jdbcType=DECIMAL},
            </if>
            <if test="actionCost != null">
                #{actionCost,jdbcType=DECIMAL},
            </if>
            <if test="eventPayFirstDay != null">
                #{eventPayFirstDay,jdbcType=BIGINT},
            </if>
            <if test="eventPayPurchaseAmountFirstDay != null">
                #{eventPayPurchaseAmountFirstDay,jdbcType=DECIMAL},
            </if>
            <if test="eventPayFirstDayRoi != null">
                #{eventPayFirstDayRoi,jdbcType=DOUBLE},
            </if>
            <if test="eventPay != null">
                #{eventPay,jdbcType=BIGINT},
            </if>
            <if test="eventPayPurchaseAmount != null">
                #{eventPayPurchaseAmount,jdbcType=DECIMAL},
            </if>
            <if test="eventPayRoi != null">
                #{eventPayRoi,jdbcType=DOUBLE},
            </if>
            <if test="eventRegister != null">
                #{eventRegister,jdbcType=BIGINT},
            </if>
            <if test="eventRegisterCost != null">
                #{eventRegisterCost,jdbcType=DECIMAL},
            </if>
            <if test="eventRegisterRatio != null">
                #{eventRegisterRatio,jdbcType=DOUBLE},
            </if>
            <if test="eventJinJianApp != null">
                #{eventJinJianApp,jdbcType=BIGINT},
            </if>
            <if test="eventJinJianAppCost != null">
                #{eventJinJianAppCost,jdbcType=DECIMAL},
            </if>
            <if test="eventCreditGrantApp != null">
                #{eventCreditGrantApp,jdbcType=BIGINT},
            </if>
            <if test="eventCreditGrantAppCost != null">
                #{eventCreditGrantAppCost,jdbcType=DECIMAL},
            </if>
            <if test="eventCreditGrantAppRatio != null">
                #{eventCreditGrantAppRatio,jdbcType=DOUBLE},
            </if>
            <if test="eventOrderPaid != null">
                #{eventOrderPaid,jdbcType=BIGINT},
            </if>
            <if test="eventOrderPaidPurchaseAmount != null">
                #{eventOrderPaidPurchaseAmount,jdbcType=DECIMAL},
            </if>
            <if test="eventJinJianLandingPage != null">
                #{eventJinJianLandingPage,jdbcType=BIGINT},
            </if>
            <if test="eventJinJianLandingPageCost != null">
                #{eventJinJianLandingPageCost,jdbcType=DECIMAL},
            </if>
            <if test="eventCreditGrantLandingPage != null">
                #{eventCreditGrantLandingPage,jdbcType=BIGINT},
            </if>
            <if test="eventCreditGrantLandingPageCost != null">
                #{eventCreditGrantLandingPageCost,jdbcType=DECIMAL},
            </if>
            <if test="eventCreditGrantLandingRatio != null">
                #{eventCreditGrantLandingRatio,jdbcType=DOUBLE},
            </if>
            <if test="eventNextDayStayCost != null">
                #{eventNextDayStayCost,jdbcType=DECIMAL},
            </if>
            <if test="eventNextDayStayRatio != null">
                #{eventNextDayStayRatio,jdbcType=BIGINT},
            </if>
            <if test="formActionRatio != null">
                #{formActionRatio,jdbcType=DOUBLE},
            </if>
            <if test="eventOrderPaidCost != null">
                #{eventOrderPaidCost,jdbcType=DECIMAL},
            </if>
            <if test="eventNextDayStay != null">
                #{eventNextDayStay,jdbcType=BIGINT},
            </if>
            <if test="formCost != null">
                #{formCost,jdbcType=DECIMAL},
            </if>
            <if test="formCount != null">
                #{formCount,jdbcType=BIGINT},
            </if>
            <if test="play3sRatio != null">
                #{play3sRatio,jdbcType=DOUBLE},
            </if>
            <if test="createTime != null">
                #{createTime,jdbcType=TIMESTAMP},
            </if>
            <if test="updateTime != null">
                #{updateTime,jdbcType=TIMESTAMP},
            </if>
        </trim>
    </insert>


    <insert id="loadAccountDailyReport">
		LOAD DATA local INFILE  #{localPath}
		INTO TABLE ctop_kuaishou_report_daily_account
		FIELDS TERMINATED BY ',' enclosed by '"' LINES TERMINATED BY '\n'
		IGNORE 1 LINES
		(ad_scene,
        charge,
        photo_show,
        aclick,
        bclick,
        photo_share,
        photo_comment,
        photo_like,
        follow,
        cancel_follow,
        report,
        block,
        negative,
        download_started,
        download_completed,
        activation,
        submit,
        stat_date,
        stat_hour,
        photo_click,
        photo_click_ratio,
        action_ratio,
        impression_1k_cost,
        photo_click_cost,
        click_1k_cost,
        action_cost,
        event_pay_first_day,
        event_pay_purchase_amount_first_day,
        event_pay_first_day_roi,
        event_pay,
        event_pay_purchase_amount,
        event_pay_roi,
        event_register,
        event_register_cost,
        event_register_ratio,
        event_jin_jian_app,
        event_jin_jian_app_cost,
        event_credit_grant_app,
        event_credit_grant_app_cost,
        event_credit_grant_app_ratio,
        event_order_paid,
        event_order_paid_purchase_amount,
        event_order_paid_cost,
        form_count,
        form_cost,
        form_action_ratio,
        event_jin_jian_landing_page,
        event_jin_jian_landing_page_cost,
        event_credit_grant_landing_page,
        event_credit_grant_landing_page_cost,
        event_credit_grant_landing_ratio,
        event_next_day_stay_cost,
        event_next_day_stay_ratio,
        event_next_day_stay,
        play_3s_ratio,
        event_valid_clues,
        event_valid_clues_cost,
        ad_product_cnt,
        event_goods_view,
        merchant_reco_fans,
        event_order_amount_roi,
        event_goods_view_cost,
        merchant_reco_fans_cost,
        event_new_user_pay,
        event_new_user_pay_cost,
        event_new_user_pay_ratio,
        event_button_click,
        event_button_click_cost,
        event_button_click_ratio,
        play_5s_ratio,
        play_end_ratio,
        event_order_paid_roi,
        event_new_user_jinjian_app,
        event_new_user_jinjian_app_cost,
        event_new_user_jinjian_app_roi,
        event_new_user_credit_grant_app,
        event_new_user_credit_grant_app_cost,
        event_new_user_credit_grant_app_roi,
        event_new_user_jinjian_page,
        event_new_user_jinjian_page_cost,
        event_new_user_jinjian_page_roi,
        event_new_user_credit_grant_page,
        event_new_user_credit_grant_page_cost,
        event_new_user_credit_grant_page_roi,
        event_appoint_form,
        event_appoint_form_cost,
        event_appoint_form_ratio,
        event_appoint_jump_click,
        event_appoint_jump_click_cost,
        event_appoint_jump_click_ratio
        )
          set account_id = #{accountId}
    </insert>

    <select id="selectCost" resultType="com.alibaba.fastjson.JSONObject">
        select
            sum(charge) cost,
            stat_date statDate
        from ctop_kuaishou_report_daily_account
        where account_id = #{accountId}
          and stat_date &gt;= #{startDate}
          and stat_date &lt; #{endDate}
        group by stat_date
    </select>

    <select id="queryProjectMemberByUserId" resultType="long">
        select
        distinct c.id as projectId
        from
        ctop_project_member b
        left join ctop_project c on b.project_id = c.id
        where b.user_id = #{userId}
        and c.media_id in
        <foreach collection="mediaIds" item="item" separator=","
                 open="(" close=")">
            #{item}
        </foreach>
        order by c.create_time desc
    </select>

    <select id="queryProjectInfoBySaleId" resultType="long">
        select
        distinct c.id as projectId
        from
        ctop_project c
        left join sys_user u on c.sale_id = u.id
        where c.sale_id = #{userId}
        and c.media_id in
        <foreach collection="mediaIds" item="item" separator=","
                 open="(" close=")">
            #{item}
        </foreach>
        order by c.create_time desc
    </select>

    <select id="queryProjectMemberByAdmins" resultType="long">
        select
        id as projectId
        from
        ctop_project
        where
        media_id in
        <foreach collection="mediaIds" item="item" separator=","
                 open="(" close=")">
            #{item}
        </foreach>
        order by create_time desc
    </select>

    <select id="getUserProjectAccountIds" resultType="long">
        select
        a.account_id
        from
        (select project_id,account_id,media_id from ctop_user_allocation group by account_id) a
        left join ctop_project_member b on a.project_id=b.project_id
        where
        a.media_id in (2,4)
        and user_id = #{userId}
        order by create_time desc
        <if test="yn==1">
            limit 50
        </if>
    </select>

    <select id="getUserProjectAccountIdsByAdmin" resultType="long">
        select
        a.account_id
        from
        ctop_user_allocation a
        left join ctop_project b on a.project_id = b.id
        where
        b.media_id in (2,4)
        <if test="yn==1">
            limit 50
        </if>
    </select>

    <select id="getSaleProjectAccountIds" resultType="long">
        select
        a.account_id
        from
        (select project_id,account_id,media_id,create_time from ctop_user_allocation group by account_id) a
        left join ctop_project b on a.project_id=b.id
        where
        b.sale_id = #{userId}
        and b.media_id in (2,4)
        order by a.create_time desc
        <if test="yn==1">
            limit 50
        </if>
    </select>
</mapper>
