PC-202304251453\Administrator 5 miesięcy temu
rodzic
commit
a217b5606e
1 zmienionych plików z 78 dodań i 212 usunięć
  1. 78 212
      app/v1/logic/dataReport/ChannelAnalysisLogic.php

+ 78 - 212
app/v1/logic/dataReport/ChannelAnalysisLogic.php

@@ -1,21 +1,16 @@
 <?php
 
-// 玩家日志逻
-
 namespace app\v1\logic\dataReport;
 
 use app\v1\logic\tool\ToolLogic;
 use plugin\saiadmin\basic\BaseLogic;
-use plugin\saiadmin\service\OpenSpoutWriter;
 use support\think\Db;
-use support\Request;
 
 class ChannelAnalysisLogic extends BaseLogic
 {
     // 分时数据
     public function getHourDataList($where)
     {
-
         $params = $this->searchByAuth($where);
         // hour=>小时, reg_total=>注册数,cost=>消耗,pay_num=>付费总用户数,
         // pay_total=>付费总金额,reg_pay_num=>小时注册当天付费数,reg_pay_total=>小时注册当天付费金额
@@ -42,10 +37,7 @@ class ChannelAnalysisLogic extends BaseLogic
         $unionSql = implode(" UNION ALL ", $sqlParts);
 
         // 外层包裹分页、排序
-        $finalSql = "
-            SELECT {$field} FROM ( {$unionSql} ) AS all_hour
-            GROUP BY {$group}
-        ";
+        $finalSql = " SELECT {$field} FROM ( {$unionSql} ) AS all_hour GROUP BY {$group} ";
 
         // 按小时数据
         $hourData = Db::connect('db_data_report')->query($finalSql);
@@ -73,13 +65,11 @@ class ChannelAnalysisLogic extends BaseLogic
             // 回本率
             $hourRow['roi'] = ToolLogic::getPercent($hourRow['reg_pay_total'], $hourRow['cost']);
 
-
             // 统计数据,每小时的数据
             $total[$hourKey]['reg_total'] = !empty($total[$hourKey]['reg_total']) ? ($total[$hourKey]['reg_total'] + $hourRow['reg_total']) : $hourRow['reg_total'];
             $total[$hourKey]['cost'] = !empty($total[$hourKey]['cost']) ? round($total[$hourKey]['cost'] + $hourRow['cost'], 2) : $hourRow['cost'];
             $total[$hourKey]['reg_pay_total'] = !empty($total[$hourKey]['reg_pay_total']) ? ($total[$hourKey]['reg_pay_total'] + $hourRow['reg_pay_total']) : $hourRow['reg_pay_total'];
             $total[$hourKey]['reg_pay_num'] = !empty($total[$hourKey]['reg_pay_num']) ? ($total[$hourKey]['reg_pay_num'] + $hourRow['reg_pay_num']) : $hourRow['reg_pay_num'];
-
             $total['total_raw']['reg_total'] = !empty($total['total_raw']['reg_total']) ? ($total['total_raw']['reg_total'] + $hourRow['reg_total']) : $hourRow['reg_total'];
             $total['total_raw']['cost'] = !empty($total['total_raw']['cost']) ? round($total['total_raw']['cost'] + $hourRow['cost'], 2) : $hourRow['cost'];
             $total['total_raw']['reg_pay_total'] = !empty($total['total_raw']['reg_pay_total']) ? ($total['total_raw']['reg_pay_total'] + $hourRow['reg_pay_total']) : $hourRow['reg_pay_total'];
@@ -88,7 +78,6 @@ class ChannelAnalysisLogic extends BaseLogic
             $hourResult[$agentId][$hourKey] = $hourRow;
         }
 
-
         // 计算统计的注册成本、付费绿、回本率
         foreach ($total as $key => &$v) {
             if (!is_array($v)) continue; // 跳过 agent_id => 合计 等非数组元素
@@ -119,9 +108,8 @@ class ChannelAnalysisLogic extends BaseLogic
 
     // 留存按日
 
-    public function generateWhereSql($params)
+    public function generateWhereSql($params): string
     {
-
         $whereSql = "";
         // 游戏id
         if (!empty($params['game_id'])) {
@@ -163,9 +151,8 @@ class ChannelAnalysisLogic extends BaseLogic
         return $whereSql;
     }
 
-    public function getActiveDataList($where)
+    public function getActiveDataList($where): array
     {
-
         $params = $this->searchByAuth($where);
 
         $whereSql = $this->generateWhereSql($params);
@@ -202,7 +189,6 @@ class ChannelAnalysisLogic extends BaseLogic
         $actDataSql = "select reg_date as tdate, days, sum(active_total) as active from ({$unionGameActiveDaySql}) as all_game_active_day group by reg_date,days";
         // 替换日期字段, 因为game_active_day_表的日期字段是[reg_date]
         $actDataSql = str_replace("AND tdate", "AND reg_date", $actDataSql);
-
         // 日期、活跃天数、活跃数,按日期和活跃天数分组
         $actData = Db::connect('db_data_report')->query($actDataSql);
 
@@ -244,10 +230,7 @@ class ChannelAnalysisLogic extends BaseLogic
             }
             // 活跃天数的key
             $dayKey = 'd' . $r['days'];
-
             // N日留存率 = 第N天活跃数 ÷ 注册日注册数 × 100%。
-            // $list['2025-07-23'][d1]['active']/$list['2025-07-23']['reg']
-            // $list['2025-07-23'][d2]['active']/$list['2025-07-23']['reg']
             $list[$reg_date][$dayKey] = ToolLogic::getPercent($r['active'], $list[$reg_date]['reg']);
             // d1...dn的reg = 记录按日的活跃数
             $totalData[$dayKey]['active'] += $r['active'];
@@ -262,11 +245,10 @@ class ChannelAnalysisLogic extends BaseLogic
             }
         }
 
-        $data = [
+        return [
             'data' => array_values($list),
             'totalRow' => $total,
         ];
-        return $data;
     }
 
     /**
@@ -297,14 +279,10 @@ class ChannelAnalysisLogic extends BaseLogic
     public function getAgentDataList($where)
     {
         $params = $this->searchByAuth($where);
-
         // 忽略 0 投入
         $igz = !empty($params['filter']) && is_array($params['filter']) && in_array('igz', $params['filter']);
-
-
         $group = !empty($params['group']) ? $params['group'] : '';
 
-
         // 如果分组按照 游戏组ID||游戏组
         if ($group == 1) {
             $type = 'game_id';
@@ -318,7 +296,6 @@ class ChannelAnalysisLogic extends BaseLogic
 
         $whereSql = $this->generateWhereSql($params);
 
-
         // 1.查询消耗数据, 安game_id/agent_id分组
         // 忽略后台录入的消耗
         $costWhereSql = $whereSql;
@@ -348,7 +325,6 @@ class ChannelAnalysisLogic extends BaseLogic
         // 2. 获取基础报表数据,兼容跨年
         $baseData = $this->generateYearUnionList('base_total_day_', $params['reg_date'], $whereSql, $totalDayField, $type);
 
-
         // 3. 获取活跃数
         $activeWhereSql = $whereSql . ' AND days = 1';
         $activeWhereSql = str_replace('AND tdate', 'AND reg_date', $activeWhereSql);
@@ -378,8 +354,8 @@ class ChannelAnalysisLogic extends BaseLogic
         $hb7dayData = array_column($hb7dayData ?? [], 'reg_pay_amount_7', $type);
 
         $hb7dayDataSum = 0;
-        foreach ($hb7dayData as $row) {
-            $hb7dayDataSum += $row;
+        foreach ($hb7dayData as $daySum) {
+            $hb7dayDataSum += $daySum;
         }
         if (empty($baseData)) {
             return [];
@@ -403,7 +379,6 @@ class ChannelAnalysisLogic extends BaseLogic
 
         // 拼接数据
         foreach ($baseData as $key => &$row) {
-
             $typeId = $row[$type]; // type, 的取值, 这里根据分组, game_id | agent_id
             $cost = $costDataColumn[$typeId] ?? 0;
             $row['cost'] = $cost;
@@ -411,7 +386,6 @@ class ChannelAnalysisLogic extends BaseLogic
             if ($igz && $row['cost'] === 0) {
                 unset($baseData[$key]);
             }
-
             // 注册成本
             $row['reg_cost'] = ToolLogic::getRound($cost, $row['reg_total'] ?? 0);
             // 创角率
@@ -422,149 +396,97 @@ class ChannelAnalysisLogic extends BaseLogic
             $row['a_per'] = ToolLogic::getPercent($activeData[$typeId]['active'] ?? 0, $row['reg_total'], 1);
             // 次留成本
             $row['a_cost'] = ToolLogic::getRound($cost, $row['active'], 1);
-
             // 总付费金额
             $row['reg_pay_total'] = $regPayData[$typeId]['reg_pay_total'] ?? 0;
-
             // 总付费人数
             $row['reg_pay_num'] = $regPayData[$typeId]['reg_pay_num'] ?? 0;
-
             //付费成本
             $row['p_cost'] = ToolLogic::getRound($row['cost'], $row['reg_pay_num']);
-
             // 付费率
             $row['p_per'] = ToolLogic::getPercent($row['reg_pay_num'] ?? 0, $row['reg_total'], 1);
-
             // 当天回本率
             $row['da_per'] = ToolLogic::getPercent($row['reg_pay_total_da'] ?? 0, $row['cost'], 1);
-
             // 累计回本率
             $row['re_per'] = (float)trim(ToolLogic::getPercent($row['reg_pay_total'], $row['cost']), "%");
-
-
             $row['reg_pay_amount'] = $hb7dayData[$typeId]['reg_pay_amount'] ?? 0;
-
             // 实际回本率
             $row['re_amount_per'] = ToolLogic::getPercent($row['reg_pay_amount'], $row['cost'], 1);
-
-
             //ARPU
             $row['arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_pay_num']);
-
             //注册ARPU
             $row['r_arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_total']);
-
             // 7天回本率
             $row['re_amount_per_7'] = ToolLogic::getPercent($hb7dayData[$typeId] ?? 0, $row['cost'], 1);
 
-
             // 按分组信息展示,id和name
             switch ($params['group'] ?? '') {
                 case 1:
                     $row['akey'] = $row['game_id'];
-                    $row['name'] = $gameData[$row['game_id']]['name'];
+                    $row['name'] = $gameData[$row['game_id']]['name'] ?? "";
                     $row['auth_name'] = '-';
                     break;
 
                 case 2:
                     $row['akey'] = $row['auth_id'];
                     $row['name'] = '-';
-                    $row['auth_name'] = $authData[$row['auth_id']]['username'];
+                    $row['auth_name'] = $authData[$row['auth_id']]['username'] ?? "";
 
                 case 3:
                     $row['akey'] = $row['media_id'];
-                    $row['name'] = $mediaData[$row['media_id']]['name'];
-                    $row['auth_name'] = $authData[$row['auth_id']]['username'];
+                    $row['name'] = $mediaData[$row['media_id']]['name'] ?? "";
+                    $row['auth_name'] = $authData[$row['auth_id']]['username'] ?? "";
 
                 default:
                     $row['akey'] = $row['agent_id'];
-                    $row['name'] = $agentData[$row['agent_id']]['name'];
+                    $row['name'] = $agentData[$row['agent_id']]['name'] ?? "";
                     $row['auth_name'] = '-';
                     break;
             }
-
         }
 
-
         //  底部合计
         $total = [
             'akey' => '合计'
         ];
-        foreach ($baseData as &$row) {
-            $total['cost'] = !empty($total['cost']) ? ($total['cost'] + $row['cost']) : $row['cost'];
-
-            // 激活
-            $total['install'] = !empty($total['install']) ? ($total['install'] + $row['install']) : $row['install'];
-
-            // 注册设备
-            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $row['reg_dev']) : $row['reg_dev'];
-
-            // 注册数
-            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $row['reg_total']) : $row['reg_total'];
-
-            // 创角数
-            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $row['role_total']) : $row['role_total'];
-            // 创角率
-
-            // 次留数
-            $total['active'] = !empty($total['active']) ? ($total['active'] + $row['active']) : $row['active'];
-            // 次留成本
-            // 次留率
-
-            // 当天付费
-            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $row['reg_pay_total_da']) : $row['reg_pay_total_da'];
-
-            // 总付费人数
-            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $row['reg_pay_num']) : $row['reg_pay_num'];
-
-            // 总付费金额
-            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $row['reg_pay_total']) : $row['reg_pay_total'];
-
-            // 老用户
-            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $row['old_login_total']) : $row['old_login_total'];
-
-            //注册总充值
-            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $row['reg_pay_amount']) : $row['reg_pay_amount'];
-
+        foreach ($baseData as $val) {
+            $total['cost'] = !empty($total['cost']) ? ($total['cost'] + $val['cost']) : $val['cost'];
+            $total['install'] = !empty($total['install']) ? ($total['install'] + $val['install']) : $val['install']; // 激活
+            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $val['reg_dev']) : $val['reg_dev']; // 注册设备
+            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $val['reg_total']) : $val['reg_total']; // 注册数
+            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $val['role_total']) : $val['role_total']; // 创角数
+            $total['active'] = !empty($total['active']) ? ($total['active'] + $val['active']) : $val['active'];// 次留数
+            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $val['reg_pay_total_da']) : $val['reg_pay_total_da']; // 当天付费
+            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $val['reg_pay_num']) : $val['reg_pay_num']; // 总付费人数
+            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $val['reg_pay_total']) : $val['reg_pay_total']; // 总付费金额
+            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $val['old_login_total']) : $val['old_login_total']; // 老用户
+            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $val['reg_pay_amount']) : $val['reg_pay_amount']; //注册总充值
         }
 
         // 注册成本
         $total['reg_cost'] = ToolLogic::getRound($total['cost'], $total['reg_total'] ?? 0);
-
         // 汇总创角率
         $total['role_per'] = ToolLogic::getRound($total['role_total'], $total['reg_total'] ?? 0);
-
         // 次留率
         $total['a_per'] = ToolLogic::getPercent($total['active'], $total['reg_total'], 1);
         // 次留成本
         $total['a_cost'] = ToolLogic::getRound($total['cost'], $total['active'], 1);
-
         // 付费率
         $total['p_per'] = ToolLogic::getPercent($total['reg_pay_num'], $total['reg_total'], 1);
-
         // 当天回本率
         $total['da_per'] = ToolLogic::getPercent($total['reg_pay_total_da'], $total['cost'], 1);
-
         // 累计回本率
         $total['re_per'] = (float)trim(ToolLogic::getPercent($total['reg_pay_total'], $total['cost']), "%");
-
         // 实际回本率
         $total['re_amount_per'] = ToolLogic::getPercent($total['reg_pay_amount'], $total['cost'], 1);
-
         //ARPU
         $total['arpu'] = ToolLogic::getRound($total['reg_pay_total'], $total['reg_pay_num']);
-
         //注册ARPU
         $total['r_arpu'] = ToolLogic::getRound($total['reg_pay_total'], $total['reg_total']);
-
         // 7天回本率
-
         $total['re_amount_per_7'] = ToolLogic::getPercent($hb7dayDataSum, $total['cost'], 1);
-
         //付费成本
         $total['p_cost'] = ToolLogic::getRound($total['reg_pay_num'], $total['cost'], 1);
 
-
         $totalData = $this->agentTotal($where);
 
         // 汇总数据
@@ -572,8 +494,6 @@ class ChannelAnalysisLogic extends BaseLogic
             'data' => array_merge($baseData, [$total]),
             'totalData' => $totalData
         ];
-
-
     }
 
     public function generateYearUnionList($namePrefix, $regDate, $whereSql = '', $field = '*', $group = null)
@@ -598,7 +518,6 @@ class ChannelAnalysisLogic extends BaseLogic
     /**
      * @param $where
      * @param $group
-     * @return void
      * @description  计算7天回本率
      * 1. 7天的注册总充值计算出来,可以通过
      */
@@ -638,7 +557,6 @@ class ChannelAnalysisLogic extends BaseLogic
     }
 
     /**
-     * @return void
      * 大盘数据(没有权限)
      * 注册成本:消耗金额/注册数
      * roi:注册付费金额 reg_pay_total /消耗 cost
@@ -648,39 +566,30 @@ class ChannelAnalysisLogic extends BaseLogic
     public function agentTotal($where)
     {
         $whereSql = $this->generateWhereSql($where);
-        $cost = 0; // 消耗金额
-        $regTotal = 0; // 注册数
-        $regPayTotal = 0; // 注册付费金额
-        $regPayNum = 0; // 总付费人数
+
         // 1. 消耗表. 获取消耗金额
         $costData = Db::connect('db_advert')->query("SELECT SUM(money) as cost FROM media_cost WHERE 1=1 $whereSql");
         $cost = $costData[0]['cost'] ?? 0;
 
         // 2. base_total_day_ 获取注册数(reg_total)、注册付费金额(reg_pay_total)、
-        $baseTotalField = "
-        SUM(reg_total) AS reg_total,
-        SUM(reg_pay_total) AS reg_pay_total";
+        $baseTotalField = " SUM(reg_total) AS reg_total, SUM(reg_pay_total) AS reg_pay_total";
         $baseTotalDayData = $this->generateYearUnionList('base_total_day_', $where['reg_date'], $whereSql, $baseTotalField);
 
         $regTotal = $baseTotalDayData[0]['reg_total'] ?? 0;
         $regPayTotal = $baseTotalDayData[0]['reg_pay_total'] ?? 0;
 
         // 3. 注册付费表. 获取总付费人数(reg_pay_num)
-        $regPayField = "
-            sum(addup_pay_num) as reg_pay_num";
+        $regPayField = "sum(addup_pay_num) as reg_pay_num";
         $regPayWhereSql = str_replace('AND tdate', 'AND reg_date', $whereSql);
         $regPayData = $this->generateYearUnionList('game_reg_pay_day_', $where['reg_date'], $regPayWhereSql, $regPayField);
         $regPayNum = $regPayData[0]['reg_pay_num'] ?? 0;
 
         // roi
         $roi = ToolLogic::getPercent($regPayTotal, $cost, 1);
-
         // 付费成本
         $pCost = ToolLogic::getRound($cost, $regPayNum);
-
         // reg_cost 注册成本
         $regCost = ToolLogic::getRound($cost, $regTotal);
-
         // 付费率
         $pPer = ToolLogic::getPercent($regPayNum, $regTotal, 1);
 
@@ -694,12 +603,10 @@ class ChannelAnalysisLogic extends BaseLogic
     }
 
     /**
-     * @param $where
-     * @return void
      * 广告位总览 ,根据site_id分组
      * 支出-> media_cost表的消耗数据
      */
-    public function getAdSiteDataList($where)
+    public function getAdSiteDataList($where): array
     {
         $params = $this->searchByAuth($where);
         // 忽略 0 投入
@@ -747,9 +654,8 @@ class ChannelAnalysisLogic extends BaseLogic
         // active 活跃数,次留人数
         $activeWhereSql = $whereSql . ' AND days = 1';
         $activeWhereSql = str_replace('AND tdate', 'AND reg_date', $activeWhereSql);
-        $activeField = "
-            sum(active_total) as active, 
-            site_id";
+        $activeField = " sum(active_total) as active, site_id";
+        
         $activeData = $this->generateYearUnionList('game_active_day_', $params['reg_date'], $activeWhereSql, $activeField, $groupBy);
         $activeData = array_column($activeData, 'active', 'site_id');
 
@@ -774,7 +680,6 @@ class ChannelAnalysisLogic extends BaseLogic
             // 忽略0投入的
             if ($igz && $row['cost'] === 0) {
                 unset($baseTotalDayData[$key]);
-
             }
             $row['reg_cost'] = ToolLogic::getRound($row['cost'], $row['reg_total'] ?? 0); // 注册成本
             $row['role_per'] = ToolLogic::getRound($row['role_total'], $row['reg_total'] ?? 0); // 创角率
@@ -793,8 +698,7 @@ class ChannelAnalysisLogic extends BaseLogic
 
         }
 
-
-        // // 合计
+        // 合计
         $total = [
             'site_id' => '合计',
             'media_id' => '-',
@@ -804,18 +708,18 @@ class ChannelAnalysisLogic extends BaseLogic
             'site_name' => '-',
             'auth_name' => '-',
         ];
-        foreach ($baseTotalDayData as &$row) {
-            $total['cost'] = !empty($total['cost']) ? ($total['cost'] + $row['cost']) : $row['cost']; // 支出
-            $total['install'] = !empty($total['install']) ? ($total['install'] + $row['install']) : $row['install']; // 激活
-            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $row['reg_dev']) : $row['reg_dev']; // 注册设备
-            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $row['reg_total']) : $row['reg_total']; // 注册数
-            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $row['role_total']) : $row['role_total']; // 创角数
-            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $row['old_login_total']) : $row['old_login_total']; // 老用户
-            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $row['reg_pay_total']) : $row['reg_pay_total']; // 总付费金额
-            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $row['reg_pay_num']) : $row['reg_pay_num']; // 总付费人数
-            $total['active'] = !empty($total['active']) ? ($total['active'] + $row['active']) : $row['active']; // 次留数
-            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $row['reg_pay_amount']) : $row['reg_pay_amount']; // 注册总充值
-            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $row['reg_pay_total_da']) : $row['reg_pay_total_da']; // 当天注册付费金额
+        foreach ($baseTotalDayData as $val) {
+            $total['cost'] = !empty($total['cost']) ? round($total['cost'] + $val['cost'], 2) : $val['cost']; // 支出
+            $total['install'] = !empty($total['install']) ? ($total['install'] + $val['install']) : $val['install']; // 激活
+            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $val['reg_dev']) : $val['reg_dev']; // 注册设备
+            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $val['reg_total']) : $val['reg_total']; // 注册数
+            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $val['role_total']) : $val['role_total']; // 创角数
+            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $val['old_login_total']) : $val['old_login_total']; // 老用户
+            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $val['reg_pay_total']) : $val['reg_pay_total']; // 总付费金额
+            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $val['reg_pay_num']) : $val['reg_pay_num']; // 总付费人数
+            $total['active'] = !empty($total['active']) ? ($total['active'] + $val['active']) : $val['active']; // 次留数
+            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $val['reg_pay_amount']) : $val['reg_pay_amount']; // 注册总充值
+            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $val['reg_pay_total_da']) : $val['reg_pay_total_da']; // 当天注册付费金额
 
         }
 
@@ -831,10 +735,7 @@ class ChannelAnalysisLogic extends BaseLogic
         $total['arpu'] = ToolLogic::getRound($total['reg_pay_total'] ?? 0, $total['reg_pay_num'] ?? 0); // ARPU
         $total['r_arpu'] = ToolLogic::getRound($total['reg_pay_total'] ?? 0, $total['reg_total'] ?? 0); // 注册ARPU
 
-
-        $resultData = ['data' => $baseTotalDayData, 'total' => $total];
-        return $resultData;
-
+        return ['data' => $baseTotalDayData, 'total' => $total];
     }
 
     /**
@@ -843,7 +744,6 @@ class ChannelAnalysisLogic extends BaseLogic
     public function getAgentDayDataList($where)
     {
         $params = $this->searchByAuth($where);
-        $whereSql = $this->generateWhereSql($params);
 
         // 根据渠道名称获取渠道ID
         if (!empty($params['site_name'])) {
@@ -866,7 +766,6 @@ class ChannelAnalysisLogic extends BaseLogic
         $costData = Db::connect('db_advert')->query("SELECT SUM(money) as cost FROM media_cost WHERE 1=1 $whereSql Group By tdate");
         $costData = array_column($costData, 'cost', 'tdate');
 
-
         // 2. base统计数据(展示IP(ad_show_ip)、激活(install)、注册设备(reg_dev)、注册数(reg_total)、创角数(role_total)、老用户(old_login_total)、注册付费人数(reg_pay_num)、当天注册付费金额(reg_pay_total_da)、付费总金额(pay_total)、付费总人数(pay_num))
         $baseTotalField = "
             SUM(ad_show_ip) AS ad_show_ip,
@@ -906,11 +805,10 @@ class ChannelAnalysisLogic extends BaseLogic
 
         // 5. 拼装数据
         // 拼装数据
-        foreach ($baseTotalDayData as $key => &$row) {
-
+        foreach ($baseTotalDayData as $key => &$row)
+        {
             $row['active'] = $activeData[$row['tdate']] ?? 0; // 次留数
             $row['cost'] = $costData[$row['tdate']] ?? 0; // 支出
-
             $row['reg_cost'] = ToolLogic::getRound($row['cost'], $row['reg_total'] ?? 0); // 注册成本
             $row['role_per'] = ToolLogic::getRound($row['role_total'], $row['reg_total'] ?? 0); // 创角率
             $row['a_cost'] = ToolLogic::getRound($row['cost'], $row['active'], 1); // 次留成本
@@ -926,31 +824,28 @@ class ChannelAnalysisLogic extends BaseLogic
             $row['arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_pay_num']); // ARPU
             $row['r_arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_total']); // 注册ARPU
             $row['pay_cost'] = ToolLogic::getPercent($row['pay_amount'] ?? 0, $row['cost'] ?? 0); // 收支比
-
-
         }
 
         // 6. 合计
         $total = [
             'tdate' => '合计'
         ];
-        foreach ($baseTotalDayData as &$row) {
-            $total['cost'] = !empty($total['cost']) ? ($total['cost'] + $row['cost']) : $row['cost']; // 支出
-            $total['ad_show_ip'] = !empty($total['ad_show_ip']) ? ($total['ad_show_ip'] + $row['ad_show_ip']) : $row['ad_show_ip']; // 展示IP
-            $total['install'] = !empty($total['install']) ? ($total['install'] + $row['install']) : $row['install']; // 激活
-            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $row['reg_dev']) : $row['reg_dev']; // 注册设备
-            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $row['reg_total']) : $row['reg_total']; // 注册数
-            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $row['role_total']) : $row['role_total']; // 创角数
-            $total['active'] = !empty($total['active']) ? ($total['active'] + $row['active']) : $row['active']; // 次留数
+        foreach ($baseTotalDayData as $vv) {
+            $total['cost'] = !empty($total['cost']) ? ($total['cost'] + $vv['cost']) : $vv['cost']; // 支出
+            $total['ad_show_ip'] = !empty($total['ad_show_ip']) ? ($total['ad_show_ip'] + $vv['ad_show_ip']) : $vv['ad_show_ip']; // 展示IP
+            $total['install'] = !empty($total['install']) ? ($total['install'] + $vv['install']) : $vv['install']; // 激活
+            $total['reg_dev'] = !empty($total['reg_dev']) ? ($total['reg_dev'] + $vv['reg_dev']) : $vv['reg_dev']; // 注册设备
+            $total['reg_total'] = !empty($total['reg_total']) ? ($total['reg_total'] + $vv['reg_total']) : $vv['reg_total']; // 注册数
+            $total['role_total'] = !empty($total['role_total']) ? ($total['role_total'] + $vv['role_total']) : $vv['role_total']; // 创角数
+            $total['active'] = !empty($total['active']) ? ($total['active'] + $vv['active']) : $vv['active']; // 次留数
             // 付费人数
-            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $row['reg_pay_num']) : $row['reg_pay_num']; // 总付费人数
-            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $row['reg_pay_total']) : $row['reg_pay_total']; // 总付费金额
-            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $row['reg_pay_amount']) : $row['reg_pay_amount']; // 注册总充值
-            $total['pay_total'] = !empty($total['pay_total']) ? ($total['pay_total'] + $row['pay_total']) : $row['pay_total']; // 当天收入
-            $total['pay_amount'] = !empty($total['pay_amount']) ? ($total['pay_amount'] + $row['pay_amount']) : $row['pay_amount']; // 实际收入
-            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $row['old_login_total']) : $row['old_login_total']; // 老用户
-            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $row['reg_pay_total_da']) : $row['reg_pay_total_da']; // 当天注册付费金额
-
+            $total['reg_pay_num'] = !empty($total['reg_pay_num']) ? ($total['reg_pay_num'] + $vv['reg_pay_num']) : $vv['reg_pay_num']; // 总付费人数
+            $total['reg_pay_total'] = !empty($total['reg_pay_total']) ? ($total['reg_pay_total'] + $vv['reg_pay_total']) : $vv['reg_pay_total']; // 总付费金额
+            $total['reg_pay_amount'] = !empty($total['reg_pay_amount']) ? ($total['reg_pay_amount'] + $vv['reg_pay_amount']) : $vv['reg_pay_amount']; // 注册总充值
+            $total['pay_total'] = !empty($total['pay_total']) ? ($total['pay_total'] + $vv['pay_total']) : $vv['pay_total']; // 当天收入
+            $total['pay_amount'] = !empty($total['pay_amount']) ? ($total['pay_amount'] + $vv['pay_amount']) : $vv['pay_amount']; // 实际收入
+            $total['old_login_total'] = !empty($total['old_login_total']) ? ($total['old_login_total'] + $vv['old_login_total']) : $vv['old_login_total']; // 老用户
+            $total['reg_pay_total_da'] = !empty($total['reg_pay_total_da']) ? ($total['reg_pay_total_da'] + $vv['reg_pay_total_da']) : $vv['reg_pay_total_da']; // 当天注册付费金额
         }
 
         $total['reg_cost'] = ToolLogic::getRound($total['cost'] ?? 0, $total['reg_total'] ?? 0); // 注册成本
@@ -964,19 +859,13 @@ class ChannelAnalysisLogic extends BaseLogic
         $total['re_amount_per'] = ToolLogic::getPercent($total['reg_pay_amount'] ?? 0, $total['cost'] ?? 0, 1); // 实际回本率
         $total['arpu'] = ToolLogic::getRound($total['reg_pay_total'] ?? 0, $total['reg_pay_num'] ?? 0); // ARPU
         $total['r_arpu'] = ToolLogic::getRound($total['reg_pay_total'] ?? 0, $total['reg_total'] ?? 0); // 注册ARPU
-        //收支比
-        $total['pay_cost'] = ToolLogic::getPercent($total['pay_amount'] ?? 0, $total['cost'] ?? 0);
+        $total['pay_cost'] = ToolLogic::getPercent($total['pay_amount'] ?? 0, $total['cost'] ?? 0); //收支比
 
-        $resultData = ['data' => array_values($baseTotalDayData), 'totalRow' => $total];
-        return $resultData;
+        return ['data' => array_values($baseTotalDayData), 'totalRow' => $total];
     }
 
-
-    // 生成基础日统计表的联合查询列表
-
     /**
      * ltv
-     *
      */
     public function getLtvDataList($where)
     {
@@ -1011,36 +900,33 @@ class ChannelAnalysisLogic extends BaseLogic
         if (empty($regPayData)) {
             return ['data' => [], 'totalRow' => []];
         }
+
         // 前端合计数据
         $totalRow = [
             'tdate' => '合计'
         ];
 
         // 前端data数据
-        $data = [];
-
-        $totalLtv = [];
-
+        $totalLtv = $data = [];
 
         // 合计 消耗金额,注册数,注册成本
-        foreach ($baseData as $key => $row) {
+        foreach ($baseData as $key => $val) {
             $totalRow['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
             $totalRow['d0']['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
-            $totalRow['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $row['reg_total'] ?? 0) : $row['reg_total'] ?? 0;
-            $totalRow['d0']['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $row['reg_total'] ?? 0) : $row['reg_total'] ?? 0;
+            $totalRow['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
+            $totalRow['d0']['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
             $totalRow['reg_cost'] = ToolLogic::getRound($totalRow['cost'] ?? 0, $totalRow['reg_total'] ?? 0);
 
             $days = (strtotime($nowDate) - strtotime($key)) / 86400 + 1;
             for ($i = 1; $i <= $days; $i++) {
                 $daykey = 'd' . $i;
-                $totalRow[$daykey]['reg_total'] = !empty($totalRow[$daykey]['reg_total']) ? ($totalRow[$daykey]['reg_total'] + $row['reg_total'] ?? 0) : $row['reg_total'] ?? 0;
+                $totalRow[$daykey]['reg_total'] = !empty($totalRow[$daykey]['reg_total']) ? ($totalRow[$daykey]['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
                 $totalRow[$daykey]['cost'] = !empty($totalRow[$daykey]['cost']) ? ($totalRow[$daykey]['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
             }
         }
 
-
         // 按照天计算LTV
-        foreach ($regPayData as &$row) {
+        foreach ($regPayData as $row) {
             $regDate = $row['reg_date'];
             $data[$regDate]['tdate'] = $regDate;
 
@@ -1056,7 +942,6 @@ class ChannelAnalysisLogic extends BaseLogic
             $daykey = (strtotime($row['pay_date']) - strtotime($regDate)) / 86400 + 1;
             $daykey = 'd' . $daykey;
 
-
             switch ($dataType) {
                 case 'recovery':
                     $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
@@ -1125,7 +1010,6 @@ class ChannelAnalysisLogic extends BaseLogic
                     }
                     break;
                 default:
-                    continue 2;
                     break;
             }
             $totalRow[$daykey]['addup_pay_total'] = $totalRow[$daykey]['addup_pay_total'] ?? 0;
@@ -1144,11 +1028,9 @@ class ChannelAnalysisLogic extends BaseLogic
                 $pay_amount = !empty($pay_amount) ? $pay_amount + $row['addup_pay_amount'] : $row['addup_pay_amount'];
                 $pay_num = !empty($pay_num) ? $pay_num + $row['pay_num'] : $row['pay_num'];
             }
-
-
         }
 
-        foreach ($totalRow as $key => &$row) {
+        foreach ($totalRow as $key => $vv) {
             if ($key[0] === 'd') {
                 switch ($dataType) {
                     case 'recovery':
@@ -1220,17 +1102,12 @@ class ChannelAnalysisLogic extends BaseLogic
             'data' => array_values($list),
             'totalRow' => $totalRow
         ];
-
-
     }
 
-
-    // 生成wheresql
-
     /**
      * ltv按月
      */
-    public function getLtvmDataList($where)
+    public function getLtvmDataList($where): array
     {
         $params = $this->searchByAuth($where);
         // 展示类型
@@ -1238,14 +1115,11 @@ class ChannelAnalysisLogic extends BaseLogic
         $nowDate = date("Y-m");
         $whereSql = $this->generateWhereSql($params);
 
-        // 1. 获取消耗金额
-
         // 2. 获取注册数
         $totalBaseWhereSql = str_replace('AND tdate', 'AND tmonth', $whereSql);
         $baseData = Db::connect('db_data_report')->query("SELECT tmonth,SUM(cost) as cost,SUM(reg_total) as reg_total FROM game_total_month WHERE 1=1 $totalBaseWhereSql GROUP BY tmonth");
         $baseData = array_column($baseData, null, 'tmonth');
 
-
         // 3. 获取注册付费金额
         $field = "
             reg_month,
@@ -1270,28 +1144,26 @@ class ChannelAnalysisLogic extends BaseLogic
 
         // 前端data数据
         $data = [];
-
         $pay_total = 0;
         $pay_amount = 0;
         $pay_num = 0;
 
-
         // 合计 消耗金额,注册数,注册成本
-        foreach ($baseData as $key => $row) {
-            $totalRow['cost'] = !empty($totalRow['cost']) ? round($totalRow['cost'] + $row['cost'] ?? 0, 2) : $row['cost'] ?? 0;
-            $totalRow['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $row['reg_total'] ?? 0) : $row['reg_total'] ?? 0;
+        foreach ($baseData as $key => $val) {
+            $totalRow['cost'] = !empty($totalRow['cost']) ? round($totalRow['cost'] + $val['cost'] ?? 0, 2) : $val['cost'] ?? 0;
+            $totalRow['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
             $totalRow['reg_cost'] = ToolLogic::getRound($totalRow['cost'] ?? 0, $totalRow['reg_total'] ?? 0);
 
             $days = ToolLogic::getMonthNum($key, $nowDate);
             for ($i = 1; $i <= $days; $i++) {
                 $daykey = 'm' . ($i + 1);
-                $totalRow[$daykey]['reg_total'] = !empty($totalRow[$daykey]['reg_total']) ? ($totalRow[$daykey]['reg_total'] + $row['reg_total'] ?? 0) : $row['reg_total'] ?? 0;
-                $totalRow[$daykey]['cost'] = !empty($totalRow[$daykey]['cost']) ? ($totalRow[$daykey]['cost'] + $row['cost'] ?? 0) : $row['cost'] ?? 0;
+                $totalRow[$daykey]['reg_total'] = !empty($totalRow[$daykey]['reg_total']) ? ($totalRow[$daykey]['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
+                $totalRow[$daykey]['cost'] = !empty($totalRow[$daykey]['cost']) ? ($totalRow[$daykey]['cost'] + $val['cost'] ?? 0) : $val['cost'] ?? 0;
             }
         }
 
         // 按照天计算LTV
-        foreach ($regPayData as &$row) {
+        foreach ($regPayData as $row) {
             $regDate = $row['reg_month'];
 
             $data[$regDate]['tmonth'] = $regDate;
@@ -1305,10 +1177,8 @@ class ChannelAnalysisLogic extends BaseLogic
             $data[$regDate]['cost'] = $baseData[$regDate]['cost'] ?? 0;
 
             // 计算日期相差天数
-            // $daykey = (strtotime($row['pay_month'])-strtotime($regDate))/86400+1;
             $daykey = 'm' . (ToolLogic::getMonthNum($regDate, $row['pay_month']) + 1);
 
-
             switch ($dataType) {
                 case 'recovery':
                     $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_total'], $baseData[$regDate]['cost'] ?? 0, 1);
@@ -1370,7 +1240,6 @@ class ChannelAnalysisLogic extends BaseLogic
                     }
                     break;
                 default:
-                    continue 2;
                     break;
             }
             $totalRow[$daykey]['addup_pay_total'] = $totalRow[$daykey]['addup_pay_total'] ?? 0;
@@ -1393,7 +1262,7 @@ class ChannelAnalysisLogic extends BaseLogic
 
         }
 
-        foreach ($totalRow as $key => &$row) {
+        foreach ($totalRow as $key => $vv) {
             if ($key[0] === 'm') {
                 switch ($dataType) {
                     case 'recovery':
@@ -1455,10 +1324,7 @@ class ChannelAnalysisLogic extends BaseLogic
             'data' => array_values($list),
             'totalRow' => $totalRow
         ];
-
-
     }
-
 }