hcst_sunzhen пре 5 година
родитељ
комит
825cd720b7

+ 492 - 173
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/ByteDanceVideoReportDailyMapper.xml

@@ -468,16 +468,27 @@
             <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and f.material_id is not null
-        <if test="accountIds != null">
+       <!-- <if test="accountIds != null">
             and p.account_id in
                 <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
                     #{item}
                 </foreach>
-        </if>
+        </if>-->
+
+         <if test="accountIds != null">
+             and f.material_id in
+             (select signature from ctop_bytedance_account_video_map
+             where account_id in
+             <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                 #{item}
+             </foreach>
+             group by signature
+             )
+         </if>
 
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -494,16 +505,27 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and a.company_id = #{companyId}
         and f.material_id is not null
+<!--        and f.material_id is not null-->
+<!--        <if test="accountIds != null">-->
+<!--            and p.account_id in-->
+<!--                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">-->
+<!--                    #{item}-->
+<!--                </foreach>-->
+<!--        </if>-->
         <if test="accountIds != null">
-            and p.account_id in
-                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
         </if>
 
         <if test="signature != null and signature != '' ">
@@ -521,17 +543,21 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and a.company_id = #{companyId}
         and f.material_id is not null
         and f.plane_id = #{userId}
         <if test="accountIds != null">
-            and p.account_id in
-                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
         </if>
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -548,17 +574,21 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and a.company_id = #{companyId}
         and f.material_id is not null
         and f.plan_id = #{userId}
         <if test="accountIds != null">
-            and p.account_id in
-                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
         </if>
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -575,17 +605,21 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and a.company_id = #{companyId}
         and f.material_id is not null
         and f.clip_id = #{userId}
         <if test="accountIds != null">
-            and p.account_id in
-                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
         </if>
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -602,17 +636,21 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and a.company_id = #{companyId}
         and f.material_id is not null
         and f.shot_id = #{userId}
         <if test="accountIds != null">
-            and p.account_id in
-                <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
         </if>
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -629,14 +667,25 @@
         <include refid="selectSql"></include>
         from ctop_bytedance_video_report_daily a
         left join (select material_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
-        left join ctop_bytedance_account_video_map p on a.signature = p.signature
+        -- left join ctop_bytedance_account_video_map p on a.signature = p.signature
         where stat_datetime &gt;= #{startDate}
         and stat_datetime &lt;= #{endDate}
         and f.material_id is not null
-        and p.account_id in
-        <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+<!--        and p.account_id in-->
+<!--        <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">-->
+<!--            #{item}-->
+<!--        </foreach>-->
+
+        <if test="accountIds != null">
+            and f.material_id in
+            (select signature from ctop_bytedance_account_video_map
+            where account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            group by signature
+            )
+        </if>
 
         <if test="signature != null and signature != '' ">
             and a.signature = #{signature}
@@ -729,145 +778,6 @@
         order by stat_datetime desc
     </select>
 
-   <!--
-    <select id="bytedanceVideoInfoList" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
-                    select
-                    a.project_id as projectId,
-                    a.project_name as projectName,
-                    a.advertiser_id as advertiserId,
-                    a.advertiser_name as advertiserName,
-                    a.stat_datetime as statDatetime,
-                    a.cost as cost,  &#45;&#45; 消耗
-                    a.signature as signature,
-                    (select info.url from ctop_material_info info where info.code = a.signature limit 1) as url,
-                    &lt;!&ndash;  case when e.material_name is null
-                    then '-'
-                    else e.material_name end as materialName, &ndash;&gt;
-                    '-' as materialDesc,
-                    1 as appType,
-                    a.click as clickMaterial,   &#45;&#45; 点击数
-                    a.play25_feed_break_rate as play25FeedBreakRate,  &#45;&#45; 25%进度播放率
-                    a.play_over_rate as playOverRate,  &#45;&#45; 整体完播率
-                    a.convert_rate as convertRate,  &#45;&#45; 转化率  转化数/点击数*100% !
-                    a.active as active, &#45;&#45; 应用下载-激活
-                    a.download_finish as downloadFinish, &#45;&#45; 应用下载-安卓下载完成
-                    a.download_start as downloadStart, &#45;&#45; 应用下载-安卓下载开始
-                    a.install_finish as installFinish, &#45;&#45; 应用下载-安卓安装完成
-                    a.register as register, &#45;&#45; 应用下载-注册
-                    a.pay_count as payCount, &#45;&#45; 应用下载-付费数
-                    &#45;&#45; a.in_app_uv as inAppUv, &#45;&#45; 应用下载-到达uv
-                    &#45;&#45; a.in_app_detail_uv as inAppDetailUv, &#45;&#45; 应用下载-详情页到站uv
-                    &#45;&#45; a.in_app_cart as inAppCart, &#45;&#45; 应用下载-加入购物车
-                    &#45;&#45; a.in_app_order as inAppOrder, &#45;&#45; 应用下载-提交订单
-                    &#45;&#45; a.in_app_pay as inAppPay, &#45;&#45; 应用下载-付费
-                    &#45;&#45; a.phone as phone, &#45;&#45; 落地页-电话拨打数
-                    a.form as form, &#45;&#45;  表单提交数
-                    &#45;&#45; a.map_search as mapSearch, &#45;&#45; 落地页-地图搜索
-                    &#45;&#45; a.button as button, &#45;&#45; 落地页-按钮button
-                    &#45;&#45; a.view_material as viewMaterial, &#45;&#45; 落地页-关键页面浏览
-                    &#45;&#45; a.qq as qq, &#45;&#45; 落地页-QQ咨询数
-                    &#45;&#45; a.lottery as lottery, &#45;&#45; 落地页-抽奖数
-                    &#45;&#45; a.vote as vote, &#45;&#45; 落地页-投票
-                    &#45;&#45; a.redirect as redirect, &#45;&#45; 落地页-页面跳转
-                    &#45;&#45; a.shopping as shopping, &#45;&#45; 落地页-商品购买
-                    &#45;&#45; a.consult as consult, &#45;&#45; 落地页-在线咨询
-                    &#45;&#45; a.wechat as wechat, &#45;&#45; 落地页-微信
-                    &#45;&#45; a.phone_confirm as phoneConfirm, &#45;&#45; 落地页-智能电话确认拨打
-                    &#45;&#45; a.phone_connect as phoneConnect, &#45;&#45; 落地页-智能电话确认接通
-                    &#45;&#45; a.consult_effective as consultEffective, &#45;&#45; 落地页-智能电话有效咨询
-                    a.total_play as totalPlay, &#45;&#45; 视频-总播放
-                    a.valid_play as validPlay, &#45;&#45; 视频-有效播放
-                    a.wifi_play as wifiPlay, &#45;&#45; 视频-wifi播放
-                    a.play25_feed_break as play25FeedBreak, &#45;&#45; 视频-播放25%进度总数
-                    a.play50_feed_break as play50FeedBreak, &#45;&#45; 视频-播放50%进度总数
-                    a.play75_feed_break as play75FeedBreak, &#45;&#45; 视频-播放75%进度总数
-                    a.play100_feed_break as play100FeedBreak, &#45;&#45; 视频-播放100%进度总数
-                    &#45;&#45; a.advanced_creative_phone_click as advancedCreativePhoneClick, &#45;&#45; 附加创意-电话按钮
-                    &#45;&#45; a.advanced_creative_counsel_click as advancedCreativeCounselClick, &#45;&#45; 附加创意-在线咨询
-                    &#45;&#45; a.advanced_creative_form_click as advancedCreativeFormClick, &#45;&#45; 附加创意-表单提交
-                    a.share_material as shareMaterial, &#45;&#45; 互动数据-分享数
-                    &#45;&#45; a.comment_material as commentMaterial, &#45;&#45; 互动数据-评论数
-                    a.follow as follow, &#45;&#45; 互动数据-新增关注数
-                    &#45;&#45; a.home_visited as homeVisited, &#45;&#45; 互动数据-主页访问量
-                    &#45;&#45; a.ies_challenge_click as iesChallengeClick, &#45;&#45; 互动数据-挑战赛查看数
-                    &#45;&#45; a.ies_music_click as iesMusicClick, &#45;&#45; 互动数据-音乐查看数
-                    a.next_day_open as nextDayOpen, &#45;&#45; 次留数
-                    a.next_day_open_rate as nextDayOpenRate, &#45;&#45; 次留率 = 次留数/激活数
-                    a.next_day_open_cost as nextDayOpenCost, &#45;&#45; 次留成本 = 消耗/次留数
-                    a.active_pay_amount as activePayAmount, &#45;&#45; 应用下载广告数据-付费次数
-                    a.valid_play_cost as  validPlayCost, &#45;&#45; 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
-                    &#45;&#45; a.advanced_creative_coupon_addition as advancedCreativeCouponAddition, &#45;&#45; 附加创意-附加创意卡券领取
-                    a.convert_material as convertMaterial, &#45;&#45; 转化数据-转化数
-                    a.active_pay_cost as activePayCost, &#45;&#45; 应用下载广告数据-付费成本 = 消耗/付费次数
-                    &#45;&#45; a.download as download, &#45;&#45; 落地页转化数据-下载开始
-                    a.cpc as cpc, &#45;&#45; 平均点击单价
-                    &#45;&#45; a.location_click as locationClick, &#45;&#45; 互动数据-POI点击数
-                    a.play_over_rate as playOverRate, &#45;&#45; 视频数据-播完率
-                    a.ctr as ctr, &#45;&#45; 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
-                    a.cpm as  cpm, &#45;&#45; 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
-                    a.wifi_play_rate as wifiPlayRate, &#45;&#45; 视频数据-WiFi播放占比
-                    a.like_material as likeMaterial, &#45;&#45; 互动数据-点赞数
-                    a.active_cost as activeCost, &#45;&#45; 应用下载广告数据-激活成本  计算方式:总花费/激活数。
-                    a.game_addiction_cost as gameAddictionCost, &#45;&#45; 应用下载广告数据-关键行为成本  广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
-                    a.game_addiction as gameAddiction, &#45;&#45; 应用下载广告数据-关键行为数
-                    a.active_rate as activeRate, &#45;&#45; 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
-                    a.game_addiction_rate as gameAddictionRate, &#45;&#45; 应用下载广告数据-关键行为率  关键行为用户占激活用户的比例
-                    a.active_register_rate as activeRegisterRate, &#45;&#45; 应用下载广告数据-注册率   注册用户占激活用户的比例
-                    a.download_finish_cost as downloadFinishCost, &#45;&#45; 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
-                    a.active_register_cost as activeRegisterCost, &#45;&#45; 应用下载广告数据-注册成本  总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
-                    a.show_material as showMaterial, &#45;&#45; 展现数据-展示数
-                    a.download_finish_rate as downloadFinishRate, &#45;&#45; 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
-                    a.install_finish_rate as installFinishRate, &#45;&#45; 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
-                    &#45;&#45; a.coupon as coupon, &#45;&#45; 落地页转化数据-建站卡券领取
-                    &#45;&#45; a.coupon_single_page as couponSinglePage, &#45;&#45; 落地页转化数据-卡券页领取
-                    a.play_over as playOver, &#45;&#45; 完播数
-                    a.download_start_cost as downloadStartCost, &#45;&#45; 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
-                    &#45;&#45; a.message as message, &#45;&#45; 落地页转化数据-短信咨询  用户点击短信咨询的次数
-                    a.valid_play_rate as validPlayRate, &#45;&#45; 视频数据-有效播放率  有效播放数/展示数
-                    a.average_play_time_per_play as averagePlayTimePerPlay, &#45;&#45; 视频数据-平均单次播放时长
-                    a.convert_cost as convertCost, &#45;&#45;  转化数据-转化成本=总花费/转化数
-                    a.install_finish_cost as installFinishCost, &#45;&#45;  应用下载广告数据-安卓安装完成成本  计算方式:总花费/安卓安装完成数
-                    a.download_start_rate as downloadStartRate &#45;&#45;  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
-        from ctop_bytedance_video_report_daily a
-        left join (select id,code,url,material_name from ctop_material_info group by code) e on a.signature = e.code
-        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on e.id = f.material_id
-        where stat_datetime &gt;= #{startDate}
-        and stat_datetime &lt;= #{endDate}
-        <if test=" role != 'admin' ">
-            and a.company_id = #{companyId}
-        </if>
-        and e.code is not null
-
-        <choose>   &lt;!&ndash; 编导、剪辑、拍摄、平面只能查看自己本职工作制作的视频,设计组长和管理员能查看所有的&ndash;&gt;
-            <when test="role == 'plan'">
-                and f.plan = #{userId}
-            </when>
-            <when test="role == 'clip'">
-                and f.clip = #{userId}
-            </when>
-            <when test="role == 'shot' ">
-                and f.shot = #{userId}
-            </when>
-            <when test="role == 'plane'  or role == 'planeLeader' ">
-                and f.plan = #{userId}
-            </when>
-            <when test="role == 'admin' or role == 'designTeamLeader'">
-                and 1=1
-            </when>
-            <otherwise>
-                and a.id = 0
-            </otherwise>
-        </choose>
-
-        <if test="signature != null and signature != '' ">
-            and a.signature = #{signature}
-        </if>
-        <if test="cost != null">
-            and cost &gt;= #{cost}
-        </if>
-    </select>-->
-
-
     <select id="accountVideoMap" resultType="cn.com.ctop.toutiao.modules.report.DTO.AccountVideoDTO">
             select
             a.account_id,b.signature
@@ -902,7 +812,7 @@
         from
         ctop_user_allocation
         where
-        project in
+        project_id in
         <foreach collection="projectIds" item="item" separator=","
                  open="(" close=")">
             #{item}
@@ -921,6 +831,415 @@
     </select>
 
 
+    <select id="videoInfoList2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        --  a.material_id as materialId,
+        --         a.account_id as accountId,
+        --         b.auth_name as authName,
+        a.account_id as accountId,
+        b.project_id as projectId,
+        b.project_name as projectName,
+        b.advertiser_id as advertiserId,
+        b.advertiser_name as advertiserName,
+        a.stat_datetime as statDatetime,
+        sum(a.cost) as cost,  -- 消耗
+        d.signature as signature,
+        d.video_url as videoUrl,
+        e.url as url,
+        <!-- e.material_name as materialName,  -->
+        '-' as materialDesc,
+        1 as appType,
+        sum(a.click) as click,   -- 点击数
+        case
+        when sum(a.total_play) != 0
+        then sum(a.play25_feed_break)/sum(a.total_play)
+        else 0 end as play25FeedBreakRate,  -- 25%进度播放率
+
+        case
+        when sum(a.total_play) != 0
+        then sum(a.play_over)/sum(a.total_play)
+        else 0 end as playOverRate,  -- 整体完播率
+
+        case
+        when sum(a.click) != 0
+        then sum(a.convert_material)/sum(a.click)
+        else 0 end as convertRate,  -- 转化率  转化数/点击数*100% !
+        sum(a.active) as active, -- 应用下载-激活
+        sum(a.download_finish) as downloadFinish, -- 应用下载-安卓下载完成
+        sum(a.download_start) as downloadStart, -- 应用下载-安卓下载开始
+        sum(a.install_finish) as installFinish, -- 应用下载-安卓安装完成
+        sum(a.register) as register, -- 应用下载-注册
+        sum(a.pay_count) as payCount, -- 应用下载-付费数
+        sum(a.in_app_uv) as inAppUv, -- 应用下载-到达uv
+        sum(a.in_app_detail_uv) as inAppDetailUv, -- 应用下载-详情页到站uv
+        sum(a.in_app_cart) as inAppCart, -- 应用下载-加入购物车
+        sum(a.in_app_order) as inAppOrder, -- 应用下载-提交订单
+        sum(a.in_app_pay) as inAppPay, -- 应用下载-付费
+        sum(a.phone) as phone, -- 落地页-电话拨打数
+        sum(a.form) as form, --  表单提交数
+        sum(a.map_search) as mapSearch, -- 落地页-地图搜索
+        sum(a.button) as button, -- 落地页-按钮button
+        sum(a.view_material) as viewMaterial, -- 落地页-关键页面浏览
+        sum(a.qq) as qq, -- 落地页-QQ咨询数
+        sum(a.lottery) as lottery, -- 落地页-抽奖数
+        sum(a.vote) as vote, -- 落地页-投票
+        sum(a.redirect) as redirect, -- 落地页-页面跳转
+        sum(a.shopping) as shopping, -- 落地页-商品购买
+        sum(a.consult) as consult, -- 落地页-在线咨询
+        sum(a.wechat) as wechat, -- 落地页-微信
+        sum(a.phone_confirm) as phoneConfirm, -- 落地页-智能电话确认拨打
+        sum(a.phone_connect) as phoneConnect, -- 落地页-智能电话确认接通
+        sum(a.consult_effective) as consultEffective, -- 落地页-智能电话有效咨询
+        sum(a.total_play) as totalPlay, -- 视频-总播放
+        sum(a.valid_play) as validPlay, -- 视频-有效播放
+        sum(a.wifi_play) as wifiPlay, -- 视频-wifi播放
+        <!-- sum(a.play_duration_sum) as play_duration_sum, --> -- 视频-播放时长,单位ms
+        sum(a.play25_feed_break) as play25FeedBreak, -- 视频-播放25%进度总数
+        sum(a.play50_feed_break) as play50FeedBreak, -- 视频-播放50%进度总数
+        sum(a.play75_feed_break) as play75FeedBreak, -- 视频-播放75%进度总数
+        sum(a.play100_feed_break) as play100FeedBreak, -- 视频-播放100%进度总数
+        sum(a.advanced_creative_phone_click) as advancedCreativePhoneClick, -- 附加创意-电话按钮
+        sum(a.advanced_creative_counsel_click) as advancedCreativeCounselClick, -- 附加创意-在线咨询
+        sum(a.advanced_creative_form_click) as advancedCreativeFormClick, -- 附加创意-表单提交
+        sum(a.share_material) as shareMaterial, -- 互动数据-分享数
+        sum(a.comment_material) as commentMaterial, -- 互动数据-评论数
+        sum(a.follow) as follow, -- 互动数据-新增关注数
+        sum(a.home_visited) as homeVisited, -- 互动数据-主页访问量
+        sum(a.ies_challenge_click) as iesChallengeClick, -- 互动数据-挑战赛查看数
+        sum(a.ies_music_click) as iesMusicClick, -- 互动数据-音乐查看数
+        sum(a.next_day_open) as nextDayOpen, -- 次留数
+        case
+        when sum(a.active) != 0
+        then sum(a.next_day_open)/sum(a.active)
+        else 0 end as nextDayOpenRate, -- 次留率 = 次留数/激活数
+
+        case
+        when sum(a.next_day_open) != 0
+        then sum(a.cost)/sum(a.next_day_open)
+        else 0 end as nextDayOpenCost, -- 次留成本 = 消耗/次留数
+
+        case when sum(a.pay_count) != 0
+        then sum(a.cost)/sum(a.pay_count)
+        else 0 end
+        as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
+
+
+        sum(a.active_pay_amount) as activePayAmount, -- 应用下载广告数据-付费次数
+
+        case
+        when sum(a.valid_play) != 0
+        then sum(a.cost)/sum(a.valid_play)
+        else 0 end validPlayCost, -- 视频数据-有效播放成本  计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
+        sum(a.advanced_creative_coupon_addition) as advancedCreativeCouponAddition, -- 附加创意-附加创意卡券领取
+        sum(a.convert_material) as convertMaterial, -- 转化数据-转化数
+
+        case
+        when sum(a.active_pay_amount) != 0
+        then sum(a.cost)/sum(a.active_pay_amount)
+        else 0 end as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
+        sum(a.download) as download, -- 落地页转化数据-下载开始
+        <!--sum(a.cpa) as cpa, -->--
+        case
+        when sum(a.click) != 0
+        then sum(a.cost) / sum(a.click)
+        else 0 end                           as cpc,                            -- 平均点击单价
+        sum(a.location_click) as locationClick, -- 互动数据-POI点击数
+        --  sum(a.play_over_rate) as playOverRate, -- 视频数据-播完率
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.click)/sum(a.show_material)
+        else 0 end as ctr, -- 展现数据-点击率   广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.cost)/sum(a.show_material)*1000
+        else 0 end cpm, -- 平均千次展现费用  广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
+        sum(a.wifi_play_rate) as wifiPlayRate, -- 视频数据-WiFi播放占比
+        sum(a.like_material) as likeMaterial, -- 互动数据-点赞数
+        <!--  sum(a.active_pay_rate) as activePayRate,--> -- 应用下载广告数据-付费率
+
+        case
+        when sum(a.active) != 0
+        then sum(a.cost)/sum(a.active)
+        else 0 end activeCost, -- 应用下载广告数据-激活成本  计算方式:总花费/激活数。
+
+        case
+        when sum(a.game_addiction) != 0
+        then sum(a.cost)/sum(a.game_addiction)
+        else 0 end as gameAddictionCost, -- 应用下载广告数据-关键行为成本  广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
+        sum(a.game_addiction) as gameAddiction, -- 应用下载广告数据-关键行为数
+
+        case
+        when sum(a.click) != 0
+        then sum(a.active)/sum(a.click)
+        else 0 end as activeRate, -- 应用下载广告数据-激活率   计算方式:激活数/点击数*100%
+        <!-- sum(a.play_duration_10s) as playDuration10s,--> --
+        <!-- sum(a.phone_effective) as phone_effective,--> --
+
+        case
+        when sum(a.active) != 0
+        then sum(a.game_addiction)/sum(a.active)
+        else 0 end gameAddictionRate, -- 应用下载广告数据-关键行为率  关键行为用户占激活用户的比例
+
+        case
+        when sum(a.active) != 0
+        then sum(a.register)/sum(a.active)
+        else 0 end as activeRegisterRate, -- 应用下载广告数据-注册率   注册用户占激活用户的比例
+        <!-- sum(a.average_video_play) as averageVideoPlay,--> --
+
+        case
+        when sum(a.download_finish) != 0
+        then sum(a.cost)/sum(a.download_finish)
+        else 0 end as downloadFinishCost, -- 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
+        <!--sum(a.play_duration_3s) as playDuration3s,--> --
+
+        case
+        when sum(a.register) != 0
+        then sum(a.cost)/sum(a.register)
+        else 0 end as activeRegisterCost, -- 应用下载广告数据-注册成本  总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
+        sum(a.show_material) as showMaterial, -- 展现数据-展示数
 
+        <!--  case
+        when sum(a.click) != 0
+        then sum(a.convert_material)/sum(a.click)
+        else 0 end as convertRate,  转化数据-转化率  计算方式:转化数/点击数*100%  -->
+
+        case
+        when sum(a.download_start) != 0
+        then sum(a.download_finish)/sum(a.download_start)
+        else 0 end as downloadFinishRate, -- 应用下载广告数据-安卓下载完成率  计算方式:安卓下载完成数/安卓下载开始数
+
+        case
+        when sum(a.download_finish) != 0
+        then sum(a.install_finish)/sum(a.download_finish)
+        else 0 end as installFinishRate, -- 应用下载广告数据-安卓安装完成率  计算方式:安卓安装完成数/安卓下载完成数
+        sum(a.coupon) as coupon, -- 落地页转化数据-建站卡券领取
+        sum(a.coupon_single_page) as couponSinglePage, -- 落地页转化数据-卡券页领取
+        sum(a.play_over) as playOver, -- 完播数
+
+        case
+        when sum(a.download_start) != 0
+        then sum(a.cost)/sum(a.download_start)
+        else 0 end as downloadStartCost, -- 应用下载广告数据-安卓下载开始成本  计算方法:总花费/安卓下载开始数。
+        sum(a.message) as message, -- 落地页转化数据-短信咨询  用户点击短信咨询的次数
+        <!-- sum(a.play_duration) as playDuration, --> --
+
+        case
+        when sum(a.show_material) != 0
+        then sum(a.valid_play)/sum(a.show_material)
+        else 0 end as validPlayRate, -- 视频数据-有效播放率  有效播放数/展示数
+
+        case
+        when sum(a.valid_play) != 0
+        then sum(a.average_play_time_per_play*a.valid_play)/sum(a.valid_play)
+        else 0 end as averagePlayTimePerPlay,         -- 视频数据-平均单次播放时长
+
+        case
+        when sum(a.convert_material) != 0
+        then sum(a.cost)/sum(a.convert_material)
+        else 0 end as convertCost, --  转化数据-转化成本=总花费/转化数
+        <!--  sum(a.convert_show_rate) as convert_show_rate, --> --
+
+        case
+        when sum(a.install_finish) != 0
+        then sum(a.cost)/sum(a.install_finish)
+        else 0 end as installFinishCost, --  应用下载广告数据-安卓安装完成成本  计算方式:总花费/安卓安装完成数
+
+        case
+        when sum(a.click) != 0
+        then sum(a.download_start)/sum(a.click)
+        else 0 end as downloadStartRate, --  应用下载广告数据-安卓下载开始率  计算方法:安卓下载开始数/点击数
+
+        #{companyId} as companyId
+        from ctop_bytedance_report_material_daily a
+        left join ctop_user_allocation b on a.account_id = b.account_id
+        left join user_company c on b.user_id = c.user_id
+        left join ctop_bytedance_video_info d on a.material_id = d.material_id
+        left join (select code,url,material_name from ctop_material_info group by code) e on d.signature = e.code
+        where c.company_id = #{companyId}      -- '6608ed13c0dd42de93c790dbdf124234'
+        and a.image_mode in ('CREATIVE_IMAGE_MODE_VIDEO',
+        'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL')
+        and date_format(stat_datetime,'%Y-%m-%d') &gt;= #{startDate}
+        and date_format(stat_datetime,'%Y-%m-%d') &lt;= #{endDate}
+        group by `statDatetime`,`account_id`,`signature`
+    </select>
+
+    <select id="videoInfoListGroupOperator2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and f.material_id is not null
+        and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupShot2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and a.company_id = #{companyId}
+        and f.material_id is not null
+        and f.shot_id = #{userId}
+        <if test="accountIds != null">
+            and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupAdmin2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and f.material_id is not null
+        <if test="accountIds != null">
+            and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupdesignTeamLeader2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and a.company_id = #{companyId}
+        and f.material_id is not null
+        <if test="accountIds != null">
+            and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupPlaneAndPlaneLeader2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and a.company_id = #{companyId}
+        and f.material_id is not null
+        and f.plane_id = #{userId}
+        <if test="accountIds != null">
+            and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupPlan2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and a.company_id = #{companyId}
+        and f.material_id is not null
+        and f.plan_id = #{userId}
+        <if test="accountIds != null">
+            and a.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
+
+    <select id="videoInfoListGroupClip2" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
+        select
+        <include refid="selectSql"></include>
+        from ctop_bytedance_video_report_daily a
+        left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
+        where stat_datetime &gt;= #{startDate}
+        and stat_datetime &lt;= #{endDate}
+        and a.company_id = #{companyId}
+        and f.material_id is not null
+        and f.clip_id = #{userId}
+        <if test="accountIds != null">
+            and account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="signature != null and signature != '' ">
+            and a.signature = #{signature}
+        </if>
+        group by a.signature
+        <if test="cost != null">
+            having sum(a.cost) &gt;= #{cost}
+        </if>
+        order by sum(a.cost)
+    </select>
 
 </mapper>

+ 108 - 16
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/ByteDanceVideoReportDailyServiceImpl.java

@@ -82,8 +82,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
         //admin能看所有视频
         if(roleCode.equals("admin")){
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
             }else{
@@ -91,8 +95,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, null, signature, cost);
             }
         }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
             }else{
@@ -106,6 +114,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
                 if(accountIdsList.size() != 0){
+                    if(accountIdsList.size()==0 || accountIdsList == null){
+                        accountIdsList.add(-1L);
+                    }
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
                 }
@@ -117,6 +128,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -129,6 +143,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -141,6 +158,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -153,6 +173,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
@@ -178,8 +201,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
         //admin能看所有视频
         if(roleCode.equals("admin")){
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
             }else{
@@ -187,8 +214,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, null, signature, cost);
             }
         }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
             }else{
@@ -202,6 +233,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
                 if(accountIdsList.size() != 0){
+                    if(accountIdsList.size()==0 || accountIdsList == null){
+                        accountIdsList.add(-1L);
+                    }
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
                 }
@@ -213,6 +247,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -225,6 +262,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -237,6 +277,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -249,6 +292,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
@@ -295,8 +341,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
         List<ByteDanceVideoReportDaily> mList = new ArrayList<>();
         //admin能看所有视频
         if(roleCode.equals("admin")){
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
             }else{
@@ -304,8 +354,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, null, signature, cost);
             }
         }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
             }else{
@@ -319,6 +373,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
                 if(accountIdsList.size() != 0){
+                    if(accountIdsList.size()==0 || accountIdsList == null){
+                        accountIdsList.add(-1L);
+                    }
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
                 }
@@ -330,6 +387,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -342,6 +402,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -354,6 +417,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -366,6 +432,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);
@@ -405,8 +474,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
 
         //admin能看所有视频
         if(roleCode.equals("admin")){
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, accountIdsList, signature, cost);
             }else{
@@ -414,8 +487,12 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupAdmin(startDate, endDate, null, signature, cost);
             }
         }else if(roleCode.equals("touTiaoOperationManager") || roleCode.equals("operator") || roleCode.equals("operationAssistant")) {
-            if (accountIds != null && accountIds.length != 0){
-                List<Long> accountIdsList = Arrays.asList(accountIds);
+            if (projectIds != null && projectIds.length != 0){
+                List<Long> projectIdsList = Arrays.asList(projectIds);
+                List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 PageHelper.startPage(pageNo,pageSize);
                 mList = byteDanceVideoReportDailyMapper.videoInfoListGroupOperator(startDate,endDate,accountIdsList,signature,cost);
             }else{
@@ -429,6 +506,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
                 if(accountIdsList.size() != 0){
+                    if(accountIdsList.size()==0 || accountIdsList == null){
+                        accountIdsList.add(-1L);
+                    }
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupShot(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
                 }
@@ -440,6 +520,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlan(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -452,6 +535,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupPlaneAndPlaneLeader(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -464,6 +550,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupClip(startDate, endDate, companyId, userId, accountIdsList, signature, cost);
@@ -476,6 +565,9 @@ public class ByteDanceVideoReportDailyServiceImpl extends ServiceImpl<ByteDanceV
             if (projectIds != null && projectIds.length != 0){
                 List<Long> projectIdsList = Arrays.asList(projectIds);
                 List<Long> accountIdsList = byteDanceVideoReportDailyMapper.getAccountIdByprojectIds(projectIdsList);
+                if(accountIdsList.size()==0 || accountIdsList == null){
+                    accountIdsList.add(-1L);
+                }
                 if(accountIdsList.size() != 0){
                     PageHelper.startPage(pageNo,pageSize);
                     mList = byteDanceVideoReportDailyMapper.videoInfoListGroupdesignTeamLeader(startDate, endDate, companyId, accountIdsList, signature, cost);