Преглед на файлове

Merge branch 'master' into V1.1.5

yumeng преди 4 години
родител
ревизия
97ed5f4604

+ 6 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaiShouAppInfoServiceImpl.java

@@ -126,6 +126,12 @@ public class AiKuaiShouAppInfoServiceImpl extends ServiceImpl<AiKuaiShouAppInfoM
         for (AiKuaiShouAppInfo appInfo : appListByStatus) {
             AiKuaiShouAppInfo updateAppInfo = new AiKuaiShouAppInfo();
             updateAppInfo.setId(appInfo.getId());
+            if (Check.isNull(appInfo.getUrl())) {
+                updateAppInfo.setStatus(3);
+                updateAppInfo.setRemark("下载链接为空");
+                this.updateById(updateAppInfo);
+                continue;
+            }
             String md5 = MD5Util.getMd5(appInfo.getUrl());
             if (Check.isNull(md5)) {
                 updateAppInfo.setStatus(3);

+ 46 - 36
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaiShouYiCheReportMapper.xml

@@ -131,16 +131,17 @@
         CASE
         WHEN sum(t2.photo_show) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST(ROUND(
         (
         sum(t2.photo_click) / sum(t2.photo_show)
         ) * 100,
         3
-        ),
+        ) AS CHAR)
+        ,
         '%'
         )
         ELSE
-        0
+        '0%'
         END
         ) clickRate,
         (
@@ -210,42 +211,43 @@
         CASE
         WHEN sum(t2.photo_click) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST(ROUND(
         sum(t2.bclick) / sum(t2.photo_click),
         3
-        ) * 100,
+        ) * 100 AS CHAR),
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) actionRatio,
         (
         CASE
         WHEN sum(t2.bclick) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.download_completed) / sum(t2.bclick),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) eventJinJianAppRatio,
         (
         CASE
         WHEN sum(t2.download_completed) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST(ROUND(
         sum(t2.activation) / sum(t2.download_completed),
         3
-        ) * 100,
+        ) * 100 AS CHAR) ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) activationRatio
         FROM
@@ -289,16 +291,17 @@
         CASE
         WHEN sum(t2.photo_show) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         (
         sum(t2.photo_click) / sum(t2.photo_show)
         ) * 100,
         3
-        ),
+        ) AS CHAR)
+        ,
         '%'
         )
         ELSE
-        0
+        '0%'
         END
         ) clickRate,
         (
@@ -368,42 +371,45 @@
         CASE
         WHEN sum(t2.photo_click) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.bclick) / sum(t2.photo_click),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) actionRatio,
         (
         CASE
         WHEN sum(t2.bclick) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.download_completed) / sum(t2.bclick),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) eventJinJianAppRatio,
         (
         CASE
         WHEN sum(t2.download_completed) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.activation) / sum(t2.download_completed),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) activationRatio
         FROM
@@ -444,7 +450,8 @@
             and t1.stat_date = #{statDate}
         </if>
         ) t2
-        WHERE t2.campaignName in(68,441,469,470,481,581,582,583,584,552,553,554,680,681,845,846,847,848,849,850,1070,1071,1072,1066,1069,1063,1064)
+        WHERE t2.campaignName
+        in(68,441,469,470,481,581,582,583,584,552,553,554,680,681,845,846,847,848,849,850,1070,1071,1072,1066,1069,1063,1064)
 
     </select>
 
@@ -475,12 +482,13 @@
         CASE
         WHEN sum(t2.photo_show) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         (
         sum(t2.photo_click) / sum(t2.photo_show)
         ) * 100,
         3
-        ),
+        ) AS CHAR)
+        ,
         '%'
         )
         ELSE
@@ -554,42 +562,44 @@
         CASE
         WHEN sum(t2.photo_click) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.bclick) / sum(t2.photo_click),
         3
-        ) * 100,
+        ) * 100 AS CHAR),
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) actionRatio,
         (
         CASE
         WHEN sum(t2.bclick) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST(ROUND(
         sum(t2.download_completed) / sum(t2.bclick),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) eventJinJianAppRatio,
         (
         CASE
         WHEN sum(t2.download_completed) != 0 THEN
         CONCAT(
-        ROUND(
+        CAST( ROUND(
         sum(t2.activation) / sum(t2.download_completed),
         3
-        ) * 100,
+        ) * 100 AS CHAR)
+        ,
         '%'
         )
         ELSE
-        CONCAT(0, '%')
+        '0%'
         END
         ) activationRatio
         FROM

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaiShouAccountReportServiceImpl.java

@@ -194,7 +194,7 @@ public class KuaiShouAccountReportServiceImpl implements IKuaiShouAccountReportS
             if ("accountId".equals(k) || "authName".equals(k) || v.toString().contains("%") || before.getString(k).contains("%")) {
                 jsonObject.put(k, "-");
             } else {
-                jsonObject.put(k, (LinkUtils.countLink(after.getBigDecimal(k) == null ? zero : after.getBigDecimal(k), before.getBigDecimal(k) == null ? zero : before.getBigDecimal(k))).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP)+"%");
+                jsonObject.put(k, (LinkUtils.countLink(after.getBigDecimal(k) == null ? zero : after.getBigDecimal(k), before.getBigDecimal(k) == null ? zero : before.getBigDecimal(k))).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%");
             }
         });
         return jsonObject;

+ 16 - 16
module-kuaishou/src/main/resources/json_template/kuaishou_filed_mapping.json

@@ -20,11 +20,11 @@
     "comment": "行为数"
   },
   "clickRate": {
-    "filed": "CASE WHEN sum(t1.photo_click) / sum(t1.photo_show) IS NULL THEN 0 ELSE CONCAT( ROUND((sum(t1.photo_click) / sum(t1.photo_show)) * 100,2),'%') END AS clickRate ",
+    "filed": "CASE WHEN sum(t1.photo_show) != 0    THEN CONCAT( CAST(ROUND((sum(t1.photo_click) / sum(t1.photo_show)) * 100,2) AS CHAR) ,'%') else '0%' END AS clickRate ",
     "comment": "封面点击率"
   },
   "bClickRate": {
-    "filed": "CASE WHEN sum(t1.bclick) / sum(t1.aclick) IS NULL THEN 0 ELSE CONCAT( ROUND((sum(t1.bclick) / sum(t1.aclick)) * 100,2),'%') END AS bClickRate ",
+    "filed": "CASE WHEN  sum(t1.aclick) != 0 THEN CONCAT( CAST(ROUND((sum(t1.bclick) / sum(t1.aclick)) * 100,2) AS CHAR) ,'%') ELSE '0%' END AS bClickRate ",
     "comment": "行为率"
   },
   "cpm": {
@@ -48,7 +48,7 @@
     "comment": "安卓开始下载单价"
   },
   "downloadStartRate": {
-    "filed": "CASE WHEN sum(t1.download_started) / sum(t1.bclick) IS NULL THEN 0 ELSE concat(round(sum(t1.download_started) / sum(t1.bclick)*100,2),'%') end AS downloadStartRate ",
+    "filed": "CASE WHEN  sum(t1.bclick) != 0 THEN concat(CAST(round(sum(t1.download_started) / sum(t1.bclick)*100,2) AS CHAR) ,'%') else '0%' end AS downloadStartRate",
     "comment": "安卓开始下载率"
   },
   "downloadFinish": {
@@ -60,7 +60,7 @@
     "comment": "安卓下载完成单价"
   },
   "downloadFinishRate": {
-    "filed": "CASE WHEN sum(t1.download_completed) / sum(t1.download_started) IS NULL THEN 0 ELSE  concat(round(sum(t1.download_completed) / sum(t1.download_started)*100,2),'%') end AS downloadFinishRate ",
+    "filed": "CASE WHEN  sum(t1.download_started) != 0 then  concat(CAST(round(sum(t1.download_completed) / sum(t1.download_started)*100,2) AS CHAR) ,'%') else '0%' end AS downloadFinishRate  ",
     "comment": "安卓下载完成率"
   },
   "active": {
@@ -71,12 +71,8 @@
     "filed": "CASE WHEN sum(t1.charge) / sum(t1.activation) IS NULL THEN 0 ELSE sum(t1.charge) / sum(t1.activation) end AS activeCost ",
     "comment": "激活单价"
   },
-  "activeRate": {
-    "filed": "CASE WHEN sum(t1.activation) / sum(t1.download_completed) IS NULL THEN 0 ELSE concat(round(sum(t1.activation) / sum(t1.download_completed)*100,2),'%') end as activeRate ",
-    "comment": "下载完成激活率"
-  },
   "firstDayPay": {
-    "filed": "IFNULL(sum(t1.event_pay_first_day),0) as firstDayPay  ",
+    "filed": "CASE WHEN sum(t1.event_pay_first_day) != 0 THEN sum(t1.event_pay_first_day) ELSE 0  end as firstDayPay ",
     "comment": "首日付费次数"
   },
   "firstDayPayAmount": {
@@ -116,7 +112,7 @@
     "comment": "注册成本"
   },
   "activeRegisterRate": {
-    "filed": " CASE WHEN sum(t1.event_register) / sum(t1.activation) IS NULL THEN 0 ELSE concat(round(sum(t1.event_register) / sum(t1.activation)*100,2),'%') end as activeRegisterRate ",
+    "filed": "CASE WHEN  sum(t1.activation) !=0  THEN concat(CAST(round(sum(t1.event_register) / sum(t1.activation)*100,2) AS CHAR) ,'%') else '0%' end as activeRegisterRate ",
     "comment": "注册率"
   },
   "eventJinJianApp": {
@@ -136,7 +132,7 @@
     "comment": "授信成本"
   },
   "eventCreditGrantAppRate": {
-    "filed": "CASE WHEN sum(t1.event_credit_grant_app) / sum(t1.event_jin_jian_app) IS NULL THEN 0 ELSE concat(round(sum(t1.event_credit_grant_app) / sum(t1.event_jin_jian_app)*100,2),'%') end as eventCreditGrantAppRate ",
+    "filed": "CASE WHEN  sum(t1.event_jin_jian_app) !=0 THEN concat(CAST(round(sum(t1.event_credit_grant_app) / sum(t1.event_jin_jian_app)*100,2) AS CHAR) ,'%') ELSE '0' end as eventCreditGrantAppRate",
     "comment": "授信率"
   },
   "formCount": {
@@ -144,7 +140,7 @@
     "comment": "表单提交数"
   },
   "formCountRate": {
-    "filed": "CASE WHEN sum(t1.form_count) / sum(t1.activation) IS NULL THEN 0 ELSE concat(round(sum(t1.form_count) / sum(t1.activation)*100,2),'%') end as formCountRate ",
+    "filed": "CASE WHEN sum(t1.activation) != 0  THEN  concat(CAST(round(sum(t1.form_count) / sum(t1.activation)*100,2) AS CHAR) ,'%') else '0%' end as formCountRate ",
     "comment": "表单提交率"
   },
   "formCountCost": {
@@ -160,7 +156,7 @@
     "comment": "次留成本"
   },
   "nextDayOpenRate": {
-    "filed": "CASE WHEN sum(t1.event_next_day_stay) / sum(t1.activation) IS NULL THEN 0 ELSE concat(round(sum(t1.event_next_day_stay) / sum(t1.activation)*100,2),'%') end as nextDayOpenRate ",
+    "filed": "CASE WHEN  sum(t1.activation) != 0 THEN  concat(CAST(round(sum(t1.event_next_day_stay) / sum(t1.activation)*100,2) AS CHAR) ,'%') ELSE '0%' end as nextDayOpenRate",
     "comment": "次留率"
   },
   "eventJinJianLandingPage": {
@@ -180,7 +176,7 @@
     "comment": "落地页授信成本"
   },
   "eventCreditGrantLandingPageRate": {
-    "filed": "CASE WHEN sum(t1.event_credit_grant_landing_page) / sum(t1.event_jin_jian_landing_page) IS NULL THEN 0 ELSE concat(round(sum(t1.event_credit_grant_landing_page) / sum(t1.event_jin_jian_landing_page)*100,2),'%') end as eventCreditGrantLandingPageRate ",
+    "filed": "CASE WHEN  sum(t1.event_jin_jian_landing_page)  != 0 THEN  concat( CAST(round(sum(t1.event_credit_grant_landing_page) / sum(t1.event_jin_jian_landing_page)*100,2) AS CHAR),'%') ELSE '0%' end as eventCreditGrantLandingPageRate ",
     "comment": "落地页授信率"
   },
   "submit": {
@@ -192,11 +188,15 @@
     "comment": "按钮点击成本"
   },
   "submitRate": {
-    "filed": "CASE WHEN sum(t1.submit) / sum(t1.bclick) IS NULL THEN 0 ELSE concat(round(sum(t1.submit) / sum(t1.bclick)*100,2),'%') end as submitRate ",
+    "filed": "CASE WHEN  sum(t1.bclick) != 0 THEN concat(CAST(round(sum(t1.submit) / sum(t1.bclick)*100,2) AS CHAR) ,'%') else '0%' end as submitRate ",
     "comment": "按钮点击率"
   },
   "play3sRate": {
-    "filed": "CASE WHEN sum(CEIL(t1.play_3s_ratio*t1.photo_show)) / sum(t1.photo_show) IS NULL THEN 0 ELSE round(sum(CEIL(t1.play_3s_ratio*t1.photo_show)) / sum(t1.photo_show)*100,2)end as play3sRate ",
+    "filed": "CASE WHEN sum(CEIL(t1.play_3s_ratio * t1.photo_show)) / sum(t1.photo_show) IS NULL THEN 0 ELSE round(sum(CEIL(t1.play_3s_ratio * t1.photo_show)) / sum(t1.photo_show)*100,2)end as play3sRate ",
     "comment": "3s播放率"
+  },
+  "activeRate": {
+    "filed": "CASE WHEN  sum(t1.download_completed) != 0 THEN concat(CAST(round(sum(t1.activation) / sum(t1.download_completed)*100,2) AS CHAR) ,'%') else '0%' end as activeRate ",
+    "comment": "下载完成激活率"
   }
 }

+ 1 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/link/mapper/xml/ETLReportBytedanceVideoMapper.xml

@@ -301,7 +301,7 @@
             (SELECT * from base_report_bytedance_video_daily where stat_datetime=#{statDate}) t1
                 LEFT JOIN (select material_id,signature,video_url from ctop_bytedance_video_info where material_id in (SELECT DISTINCT material_id from base_report_bytedance_video_daily where stat_datetime=#{statDate})
             ) t2 ON t1.material_id = t2.material_id
-                LEFT JOIN ctop_material_ascription t3 on t2.signature=t3.code
+                LEFT JOIN ctop_material_ascription t3 on t2.signature=t3.material_id
                 LEFT JOIN ctop_material_info t4 on t4.code=t2.signature
                 LEFT JOIN (SELECT account_id, advertiser_id,project_id,auth_name from ctop_user_allocation where account_id in (SELECT DISTINCT account_id from base_report_bytedance_video_daily where stat_datetime=#{statDate})) t5 on t1.account_id=t5.account_id
         GROUP BY t1.id

+ 196 - 229
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceHomepageMapper.xml

@@ -4,262 +4,229 @@
 
 
     <select id="queryTodaySumReportBy" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-	     ROUND(sum(cost),2) cost,
-	     sum(show_num) showNum,
-	     sum(click) click,
-	     max(stat_hour) maxHour
-       FROM
-	      ctop_bytedance_report_advertiser_hourly
-       WHERE
-	      stat_datetime = #{statDate}
-      </select>
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click,
+               max(stat_hour)      maxHour
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_datetime = #{statDate}
+    </select>
 
     <select id="queryTodaySumByHour" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            ROUND(sum(cost),2) cost,
-            sum(show_num) showNum,
-            sum(click) click
-        FROM
-            ctop_bytedance_report_advertiser_hourly
-        WHERE
-            stat_hour &lt;= #{hour}
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_hour &lt;= #{hour}
     </select>
 
     <select id="queryTodayDetailReportBy" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            stat_datetime statDate,
-            stat_hour statHour,
-            ROUND(sum(cost), 2) cost,
-            sum(show_num) showNum,
-            sum(click) click,
-            CASE
-                WHEN (click / show_num) IS NULL THEN
-                    0
-                ELSE
-                    CONCAT(
-                            ROUND(
-                                    (click / show_num) * 100,
-                                    2
-                                ),
-                            '%'
-                        )
-                END AS 'clickRate',
-            CASE
-                WHEN (cost / show_num) IS NULL THEN
-                    0
-                ELSE
-                    ROUND(
-                            (cost / show_num) * 1000,
-                            2
-                        )
-                END AS 'cpm',
-            CASE
-                WHEN (click / cost) IS NULL THEN
-                    0
-                ELSE
-                    ROUND((cost / click), 2)
-                END AS 'cp'
-        FROM
-            ctop_bytedance_report_advertiser_hourly
-        WHERE
-            stat_datetime = #{statDate}
-        GROUP BY
-            stat_hour
-        ORDER BY
-            stat_hour ASC
+        SELECT stat_datetime       statDate,
+               stat_hour           statHour,
+               ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click,
+               CASE
+                   WHEN (click / show_num) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (click / show_num) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS          'clickRate',
+               CASE
+                   WHEN (cost / show_num) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (cost / show_num) * 1000,
+                               2
+                           )
+                   END AS          'cpm',
+               CASE
+                   WHEN (click / cost) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((cost / click), 2)
+                   END AS          'cp'
+        FROM ctop_bytedance_report_advertiser_hourly
+        WHERE stat_datetime = #{statDate}
+        GROUP BY stat_hour
+        ORDER BY stat_hour ASC
 
     </select>
 
     <select id="querySumByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         ROUND(sum(cost), 2) cost,
-         sum(show_num) showNum,
-         sum(click) click
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
+        SELECT ROUND(sum(cost), 2) cost,
+               sum(show_num)       showNum,
+               sum(click)          click
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
     </select>
 
     <select id="queryDetailByStartEndDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-           ROUND(sum(cost), 2) cost,
-           sum(show_num) showNum,
-           sum(click) click,
-           CASE
-               WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   CONCAT(
-                           ROUND(
-                                   (sum(click) / sum(show_num)) * 100,
-                                   2
-                               ),
-                           '%'
-                       )
-               END AS 'clickRate',
-           CASE
-               WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND(
-                           (sum(cost) / sum(show_num)) * 1000,
-                           2
-                       )
-               END AS 'cpm',
-           CASE
-               WHEN (sum(click) / sum(cost)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND((sum(cost) / sum(click)), 2)
-               END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-            stat_datetime &lt;= #{endDate} '00:00:00'
-       AND  stat_datetime &gt;= #{startDate}
-       group by stat_datetime
-       order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                    cost,
+               sum(show_num)                          showNum,
+               sum(click)                             click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                             'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                             'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                             'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m-%d') statDate
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        group by stat_datetime
+        order by stat_datetime asc
     </select>
 
     <select id="queryDetailGroupMonthByDate" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-           ROUND(sum(cost), 2) cost,
-           sum(show_num) showNum,
-           sum(click) click,
-           CASE
-               WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   CONCAT(
-                           ROUND(
-                                   (sum(click) / sum(show_num)) * 100,
-                                   2
-                               ),
-                           '%'
-                       )
-               END AS 'clickRate',
-           CASE
-               WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND(
-                           (sum(cost) / sum(show_num)) * 1000,
-                           2
-                       )
-               END AS 'cpm',
-           CASE
-               WHEN (sum(click) / sum(cost)) IS NULL THEN
-                   0
-               ELSE
-                   ROUND((sum(cost) / sum(click)), 2)
-               END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m') statDate
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-      group by DATE_FORMAT(stat_datetime,'%Y-%m')
-      order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                 cost,
+               sum(show_num)                       showNum,
+               sum(click)                          click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                          'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                          'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                          'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m') statDate
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        group by DATE_FORMAT(stat_datetime, '%Y-%m')
+        order by stat_datetime asc
     </select>
 
     <select id="queryDetailGroupDayByMonth" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT
-            ROUND(sum(cost), 2) cost,
-            sum(show_num) showNum,
-            sum(click) click,
-            CASE
-                WHEN (sum(click) / sum(show_num)) IS NULL THEN
-                    0
-                ELSE
-                    CONCAT(
-                            ROUND(
-                                    (sum(click) / sum(show_num)) * 100,
-                                    2
-                                ),
-                            '%'
-                        )
-                END AS 'clickRate',
-            CASE
-                WHEN (sum(cost) / sum(show_num)) IS NULL THEN
-                    0
-                ELSE
-                    ROUND(
-                            (sum(cost) / sum(show_num)) * 1000,
-                            2
-                        )
-                END AS 'cpm',
-            CASE
-                WHEN (sum(click) / sum(cost)) IS NULL THEN
-                    0
-                ELSE
-                    ROUND((sum(cost) / sum(click)), 2)
-                END AS 'cp',
-         DATE_FORMAT(stat_datetime,'%Y-%m-%d') statDate,
-         SUBSTR(DATE_FORMAT(stat_datetime,'%Y-%m-%d') FROM 9 FOR 2) day
-       FROM
-         ctop_bytedance_report_advertiser_daily
-       WHERE
-         stat_datetime like '${month}%'
-      group by DATE_FORMAT(stat_datetime,'%Y-%m-%d')
-      order by stat_datetime asc
+        SELECT ROUND(sum(cost), 2)                                         cost,
+               sum(show_num)                                               showNum,
+               sum(click)                                                  click,
+               CASE
+                   WHEN (sum(click) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       CONCAT(
+                               cast(
+                                       ROUND(
+                                               (sum(click) / sum(show_num)) * 100,
+                                               2
+                                           ) as char),
+                               '%'
+                           )
+                   END AS                                                  'clickRate',
+               CASE
+                   WHEN (sum(cost) / sum(show_num)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND(
+                               (sum(cost) / sum(show_num)) * 1000,
+                               2
+                           )
+                   END AS                                                  'cpm',
+               CASE
+                   WHEN (sum(click) / sum(cost)) IS NULL THEN
+                       0
+                   ELSE
+                       ROUND((sum(cost) / sum(click)), 2)
+                   END AS                                                  'cp',
+               DATE_FORMAT(stat_datetime, '%Y-%m-%d')                      statDate,
+               SUBSTR(DATE_FORMAT(stat_datetime, '%Y-%m-%d') FROM 9 FOR 2) day
+        FROM ctop_bytedance_report_advertiser_daily
+        WHERE stat_datetime like '${month}%'
+        group by DATE_FORMAT(stat_datetime, '%Y-%m-%d')
+        order by stat_datetime asc
     </select>
 
     <select id="queryTopCost" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.cost), 2) cost
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.cost) DESC
-       limit #{rank}
+        SELECT t2.auth_name as        authName,
+               ROUND(sum(t1.cost), 2) cost
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.cost) DESC
+        limit #{rank}
     </select>
 
     <select id="queryTopClick" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.click), 2) click
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.click) DESC
-       limit #{rank}
+        SELECT t2.auth_name as         authName,
+               ROUND(sum(t1.click), 2) click
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.click) DESC
+        limit #{rank}
     </select>
 
     <select id="queryTopShowNum" resultType="com.alibaba.fastjson.JSONObject">
-       SELECT
-         t2.auth_name as authName,
-         ROUND(sum(t1.show_num), 2) showNum
-       FROM
-         ctop_bytedance_report_advertiser_daily t1
-       LEFT JOIN
-         ctop_user_allocation t2 ON t1.advertiser_id=t2.account_id
-       WHERE
-         stat_datetime &lt;= #{endDate} '00:00:00'
-       AND
-         stat_datetime &gt;= #{startDate}
-       GROUP BY t1.advertiser_id
-       ORDER BY sum(t1.show_num) DESC
-       limit #{rank}
+        SELECT t2.auth_name as            authName,
+               ROUND(sum(t1.show_num), 2) showNum
+        FROM ctop_bytedance_report_advertiser_daily t1
+                 LEFT JOIN
+             ctop_user_allocation t2 ON t1.advertiser_id = t2.account_id
+        WHERE stat_datetime &lt;= #{endDate} '00:00:00'
+          AND stat_datetime &gt;= #{startDate}
+        GROUP BY t1.advertiser_id
+        ORDER BY sum(t1.show_num) DESC
+        limit #{rank}
     </select>
 
 </mapper>

+ 7 - 7
module-toutiao/src/main/resources/json_template/bytedance_filed_mapping.json

@@ -16,7 +16,7 @@
     "comment": "点击数"
   },
   "ctr": {
-    "filed": "CASE WHEN sum(t1.click) / sum(t1.show_num) IS NULL THEN 0 ELSE CONCAT( ROUND((sum(t1.click) / sum(t1.show_num)) * 100,2),'%') END AS ctr ",
+    "filed": "CASE WHEN sum(t1.show_num) != 0 THEN concat(CAST(round( sum(t1.click) /sum(t1.show_num)*100,2) AS CHAR),'%') ELSE '0%' end as ctr ",
     "comment": "点击率"
   },
   "cpc": {
@@ -32,7 +32,7 @@
     "comment": "转化成本"
   },
   "convertRate": {
-    "filed": "CASE WHEN sum(t1.convert_num) / sum(t1.cost) IS NULL THEN 0 ELSE concat(round(sum(t1.convert_num) / sum(t1.cost)*100,2),'%') end AS convertRate ",
+    "filed": "CASE WHEN sum(t1.cost) != 0 THEN concat(CAST(round(sum(t1.convert_num) / sum(t1.cost)*100,2) AS CHAR) ,'%') ELSE '0%' end AS convertRate",
     "comment": "转化率"
   },
   "downloadStart": {
@@ -44,7 +44,7 @@
     "comment": "安卓开始下载成本"
   },
   "downloadStartRate": {
-    "filed": "CASE WHEN sum(t1.download_start) / sum(t1.click) IS NULL THEN 0 ELSE concat(round(sum(t1.download_start) / sum(t1.click)*100,2),'%') end AS downloadStartRate ",
+    "filed": "CASE WHEN sum(t1.click) != 0 THEN concat(CAST(round(sum(t1.download_start) / sum(t1.click)*100,2) AS CHAR),'%') ELSE '0%' end AS downloadStartRate ",
     "comment": "安卓开始下载率"
   },
   "downloadFinish": {
@@ -56,7 +56,7 @@
     "comment": "安卓下载完成成本"
   },
   "downloadFinishRate": {
-    "filed": "CASE WHEN sum(t1.install_finish) / sum(t1.download_finish) IS NULL THEN 0 ELSE  concat(round(sum(t1.install_finish) / sum(t1.download_finish)*100,2),'%') end AS downloadFinishRate ",
+    "filed": "CASE WHEN sum(t1.download_finish) != 0 THEN  concat(CAST(round(sum(t1.install_finish) / sum(t1.download_finish)*100,2) AS CHAR) ,'%') ELSE '0%' end  AS downloadFinishRate ",
     "comment": "安卓下载完成率"
   },
   "active": {
@@ -68,7 +68,7 @@
     "comment": "激活成本"
   },
   "activeRate": {
-    "filed": "CASE WHEN sum(t1.active) / sum(t1.click) IS NULL THEN 0 ELSE concat(round(sum(t1.active) / sum(t1.click)*100,2),'%') end as activeRate ",
+    "filed": "CASE WHEN sum(t1.click) != 0 THEN concat(CAST(round(sum(t1.active) / sum(t1.click)*100,2) AS CHAR) ,'%') ELSE '0%' end as activeRate ",
     "comment": "激活率"
   },
   "register": {
@@ -80,7 +80,7 @@
     "comment": "注册成本"
   },
   "activeRegisterRate": {
-    "filed": " CASE WHEN sum(t1.register) / sum(t1.active) IS NULL THEN 0 ELSE concat(round(sum(t1.register) / sum(t1.active)*100,2),'%') end as activeRegisterRate ",
+    "filed": " CASE WHEN sum(t1.active) != 0 THEN concat(CAST(round(sum(t1.register) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end as activeRegisterRate ",
     "comment": "注册率"
   },
   "nextDayOpen": {
@@ -92,7 +92,7 @@
     "comment": "次留成本"
   },
   "nextDayOpenRate": {
-    "filed": "CASE WHEN sum(t1.next_day_open) / sum(t1.active) IS NULL THEN 0 ELSE concat(round(sum(t1.next_day_open) / sum(t1.active)*100,2),'%') end as nextDayOpenRate ",
+    "filed": "CASE WHEN sum(t1.active) != 0 THEN concat(CAST(round(sum(t1.next_day_open) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end as nextDayOpenRate ",
     "comment": "次留率"
   },
   "activePayAmount": {

+ 8 - 8
module-toutiao/src/main/resources/json_template/bytedance_video_report_mapping.json

@@ -16,7 +16,7 @@
     "comment": "点击数"
   },
   "ctr": {
-    "filed": "CASE WHEN sum(t1.click) / sum(t1.material_show) IS NULL THEN 0 ELSE CONCAT( ROUND((sum(t1.click) / sum(t1.material_show)) * 100,2),'%') END AS ctr ",
+    "filed": "CASE WHEN sum(t1.material_show) != 0 THEN CONCAT(CAST(ROUND((sum(t1.click) / sum(t1.material_show)) * 100,2) AS CHAR) ,'%') ELSE '0%' end  AS ctr",
     "comment": "点击率"
   },
   "cpc": {
@@ -32,7 +32,7 @@
     "comment": "转化成本"
   },
   "convertRate": {
-    "filed": "CASE WHEN sum(t1.convert_material) / sum(t1.material_show) IS NULL THEN 0 ELSE concat(round(sum(t1.convert_material) / sum(t1.material_show)*100,2),'%') end AS convertRate ",
+    "filed": "CASE WHEN sum(t1.material_show)!= 0 THEN concat(CAST(round(sum(t1.convert_material) / sum(t1.material_show)*100,2) AS CHAR) ,'%') ELSE '0%' end  AS convertRate ",
     "comment": "转化率"
   },
   "downloadStart": {
@@ -44,7 +44,7 @@
     "comment": "安卓开始下载成本"
   },
   "downloadStartRate": {
-    "filed": "CASE WHEN sum(t1.download_start) / sum(t1.click) IS NULL THEN 0 ELSE concat(round(sum(t1.download_start) / sum(t1.click)*100,2),'%') end AS downloadStartRate ",
+    "filed": "CASE WHEN sum(t1.click) != 0 THEN concat(CAST(round(sum(t1.download_start) / sum(t1.click)*100,2) AS CHAR) ,'%') ELSE '0%' end  AS downloadStartRate ",
     "comment": "安卓开始下载率"
   },
   "downloadFinish": {
@@ -56,7 +56,7 @@
     "comment": "安卓下载完成成本"
   },
   "downloadFinishRate": {
-    "filed": "CASE WHEN sum(t1.install_finish) / sum(t1.download_finish) IS NULL THEN 0 ELSE  concat(round(sum(t1.install_finish) / sum(t1.download_finish)*100,2),'%') end AS downloadFinishRate ",
+    "filed": "CASE WHEN sum(t1.download_finish) != 0 THEN concat(CAST(round(sum(t1.install_finish) / sum(t1.download_finish)*100,2) AS CHAR),'%') ELSE '0%' end  AS downloadFinishRate ",
     "comment": "安卓下载完成率"
   },
   "active": {
@@ -68,7 +68,7 @@
     "comment": "激活成本"
   },
   "activeRate": {
-    "filed": "CASE WHEN sum(t1.active) / sum(t1.click) IS NULL THEN 0 ELSE concat(round(sum(t1.active) / sum(t1.click)*100,2),'%') end as activeRate ",
+    "filed": "CASE WHEN sum(t1.click)!= 0 THEN concat( CAST(round(sum(t1.active) / sum(t1.click)*100,2) AS CHAR),'%') ELSE '0%' end  as activeRate",
     "comment": "激活率"
   },
   "register": {
@@ -80,7 +80,7 @@
     "comment": "注册成本"
   },
   "activeRegisterRate": {
-    "filed": " CASE WHEN sum(t1.register) / sum(t1.active) IS NULL THEN 0 ELSE concat(round(sum(t1.register) / sum(t1.active)*100,2),'%') end as activeRegisterRate ",
+    "filed": " CASE WHEN sum(t1.active) != 0 THEN concat(CAST(round(sum(t1.register) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end  as activeRegisterRate ",
     "comment": "注册率"
   },
   "gameAddiction": {
@@ -92,7 +92,7 @@
     "comment": "关键行为成本"
   },
   "gameAddictionRate": {
-    "filed": " CASE WHEN sum(t1.game_addiction) / sum(t1.active) IS NULL THEN 0 ELSE concat(round(sum(t1.game_addiction) / sum(t1.active)*100,2),'%') end as gameAddictionRate ",
+    "filed": "CASE WHEN sum(t1.active)!= 0 THEN concat(CAST(round(sum(t1.game_addiction) / sum(t1.active)*100,2) AS CHAR),'%') ELSE '0%' end  as gameAddictionRate",
     "comment": "关键行为率"
   },
   "nextDayOpen": {
@@ -104,7 +104,7 @@
     "comment": "次留成本"
   },
   "nextDayOpenRate": {
-    "filed": "CASE WHEN sum(t1.next_day_open) / sum(t1.active) IS NULL THEN 0 ELSE concat(round(sum(t1.next_day_open) / sum(t1.active)*100,2),'%') end as nextDayOpenRate ",
+    "filed": "CASE WHEN  sum(t1.active)!= 0 THEN concat(CAST(round(sum(t1.next_day_open) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end  as nextDayOpenRate ",
     "comment": "次留率"
   },
   "activePayAmount": {