Browse Source

按日留存

ith5 5 tháng trước cách đây
mục cha
commit
3011434d8c
1 tập tin đã thay đổi với 8 bổ sung8 xóa
  1. 8 8
      app/v1/logic/dataReport/ChannelAnalysisLogic.php

+ 8 - 8
app/v1/logic/dataReport/ChannelAnalysisLogic.php

@@ -121,21 +121,21 @@ class ChannelAnalysisLogic extends BaseLogic
         $baseTotalDaySqlParts = [];
         foreach ($yearRange as $year) {
             $tableName = 'base_total_day_' . $year;
-            $baseTotalDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
+            $baseTotalDaySqlParts[] = "SELECT * FROM {$tableName} WHERE {$whereSql}";
         }
         $unionBaseTotalDaySql = implode(" UNION ALL ", $baseTotalDaySqlParts);
-
         // 按照每日,获取=>注册数据
-        $regData = Db::connect('db_data_report')->query("SELECT tdate, SUM('reg_total') reg_total FROM ( {$unionBaseTotalDaySql} ) AS all_base_total_day  GROUP BY tdate order by tdate ");
+        $regData = Db::connect('db_data_report')->query("SELECT tdate, SUM(reg_total) reg_total FROM ( {$unionBaseTotalDaySql} ) AS all_base_total_day  GROUP BY tdate order by tdate ");
 
 
+       
         // 2. 活跃数据:$actData = 按照日期,获取每日的 活跃数 SUM(【active_total】) 活跃天数 【days】, 分组 【reg_date,days】,game_active_day_2025
         $yearRange = getYearRange($params['reg_date'][0], $params['reg_date'][1]);
         $gameActiveDaySqlParts = [];
 
         foreach ($yearRange as $year) {
             $tableName = 'game_active_day_' . $year;
-            $gameActiveDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
+            $gameActiveDaySqlParts[] = "SELECT * FROM {$tableName} WHERE {$whereSql}";
         }
 
         $unionGameActiveDaySql = implode(" UNION ALL ", $gameActiveDaySqlParts);
@@ -165,9 +165,9 @@ class ChannelAnalysisLogic extends BaseLogic
             for ($i = 1; $i <= $days; $i++) {
                 $dayKey = 'd' . $i;
                 // d1...dn的reg = 记录按日的注册数
-                $totalData[$dayKey]['reg'] += $r['reg_total'];
+                $totalData[$dayKey]['reg'] = !empty($totalData[$dayKey]['reg']) ? $totalData[$dayKey]['reg'] + $r['reg_total'] : $r['reg_total'];
             }
-            $totalData['reg'] += $r['reg_total'];
+            $totalData['reg'] = !empty($totalData['reg']) ? $totalData['reg'] + $r['reg_total'] : $r['reg_total'];
         }
 
         // 遍历每日的活跃数
@@ -187,7 +187,7 @@ class ChannelAnalysisLogic extends BaseLogic
             // N日留存率 = 第N天活跃数 ÷ 注册日注册数 × 100%。
             $list[$reg_date][$dayKey] = getPercent($r['active'], $list[$reg_date]['reg']);
             // d1...dn的reg = 记录按日的活跃数
-            $totalData[$dayKey]['active'] += $r['active'];
+            $totalData[$dayKey]['active'] = !empty($totalData[$dayKey]['active']) ? $totalData[$dayKey]['active'] + $r['active'] : $r['active'];
         }
 
         $total = [];
@@ -195,7 +195,7 @@ class ChannelAnalysisLogic extends BaseLogic
             if ($key == 'reg') {
                 $total['reg'] = $val;
             } else {
-                $total[$key] = getPercent($val['active'], $val['reg']);
+                $total[$key] = getPercent($val['active']??0, $val['reg']??0);
             }
         }