ith5 5 месяцев назад
Родитель
Сommit
34726b3fe5

+ 12 - 0
app/v1/controller/gameLog/AnalyseController.php

@@ -61,5 +61,17 @@ class AnalyseController extends BaseController
         return $this->success($data);
     }
 
+    // 数据总览(按月)
+    public function getDataOverviewByMonth(Request $request){
+        $where = $request->more([
+            ['game_id', ''],
+            ['reg_date', ''],
+            ['auth_id', ''],
+            ['media_id', '']
+        ]);
+        $data = $this->logic->getDataOverviewByMonth($where);
+        return $this->success($data);
+    }
+
 
 }

+ 87 - 2
app/v1/logic/gameLog/AnalyseLogic.php

@@ -236,8 +236,6 @@ class AnalyseLogic extends BaseLogic
 
     /*
      数据总览
-     1. DAU 登陆总数 login_total
-     2. ARPU pay_total/pay_num
     */
     public function getDataOverview($where){
       $params = $this->searchByAuth($where);
@@ -316,6 +314,93 @@ class AnalyseLogic extends BaseLogic
       ];
     }
 
+    /*
+     数据总览(按月)
+    */
+    public function getDataOverviewByMonth($where){
+      $params = $this->searchByAuth($where);
+      // 根据渠道名称获取渠道ID
+      if(!empty($params['agent_name'])){
+        $agentData = Db::connect('db_advert')->query("SELECT id,name FROM agent_list WHERE 1=1 AND name = '{$params['agent_name']}'");
+        $params['agent_id'] = $agentData[0]['id'] ?? 0;
+      } 
+      $whereSql = $this->generateWhereSql($params);
+      // 基础汇总信息
+      $field = "
+      SUM(login_total) AS login_total,  -- 登陆总数
+      SUM(reg_total) AS reg_total, -- 注册总数
+      SUM(pay_total) AS pay_total, -- 付费总数
+      SUM(pay_num) AS pay_num, -- 付费人数
+      SUM(reg_login_total) AS reg_login_total, -- 注册登陆总数
+      SUM(reg_pay_num) AS reg_pay_num, -- 注册付费数
+      SUM(reg_pay_total) AS reg_pay_total, -- 注册付费金额
+      SUM(old_login_total) AS old_login_total, -- 老用户登陆总数
+      date_format(`tdate`, '%Y-%m') AS mdate";
+      $baseData = $this->generateYearUnionList('base_total_day_',$where['reg_date'],$whereSql,$field,'mdate');
+     
+      if(empty($baseData)){
+        return [
+          'data' => [],
+          'totalRow' => []
+        ];
+      }
+      
+      $actWhereSql = str_replace("AND tdate", "AND reg_date", $whereSql);
+      $actWhereSql .= " AND days = 1";
+      $actData = $this->generateYearUnionList('game_active_day_',$where['reg_date'],$actWhereSql,'SUM(active_total) AS active_total,date_format(reg_date, "%Y-%m") AS mdate','mdate');
+      $actData = array_column($actData,null,'mdate');
+
+      $totalRow = [
+        'mdate' => '合计'
+      ];
+
+      foreach($baseData as &$row){
+        $totalRow['login_total']     = !empty($totalRow['login_total']) ? $totalRow['login_total'] + $row['login_total'] : $row['login_total']; // 总用户 - 登陆总数
+        $totalRow['reg_login_total'] = !empty($totalRow['reg_login_total']) ? $totalRow['reg_login_total'] + $row['reg_login_total'] : $row['reg_login_total']; // 新用户 - 注册登陆总数
+        $totalRow['pay_num']         = !empty($totalRow['pay_num']) ? $totalRow['pay_num'] + $row['pay_num'] : $row['pay_num']; // 总用户 - 付费人数
+        $totalRow['pay_total']       = !empty($totalRow['pay_total']) ? $totalRow['pay_total'] + $row['pay_total'] : $row['pay_total']; // 总用户 - 付费金额
+
+        $totalRow['old_login_total'] = !empty($totalRow['old_login_total']) ? $totalRow['old_login_total'] + $row['old_login_total'] : $row['old_login_total']; // 老用户 - 登陆总数
+        $totalRow['reg_total']       = !empty($totalRow['reg_total']) ? $totalRow['reg_total'] + $row['reg_total'] : $row['reg_total']; // 新用户 - 注册总数
+        $totalRow['reg_pay_num']     = !empty($totalRow['reg_pay_num']) ? $totalRow['reg_pay_num'] + $row['reg_pay_num'] : $row['reg_pay_num']; // 新用户 - 注册付费数
+        $totalRow['reg_pay_total']   = !empty($totalRow['reg_pay_total']) ? $totalRow['reg_pay_total'] + $row['reg_pay_total'] : $row['reg_pay_total']; // 新用户 - 注册付费金额
+        $totalRow['active']          = !empty($totalRow['active']) ? $totalRow['active'] + $actData[$row['mdate']]['active_total']??0 : $actData[$row['mdate']]['active_total']??0; // 次留数
+
+
+        $row['active'] = !empty($actData[$row['mdate']]['active_total']) ? $actData[$row['mdate']]['active_total'] : 0; // 次留数
+        $row['arpu'] = ToolLogic::getRound($row['pay_total'],$row['pay_num']); // 总用户 - ARPU
+        $row['pay_rate'] = ToolLogic::getPercent($row['pay_num'],$row['login_total']); // 总用户 - 付费率
+
+        $row['reg_pay_rate'] = ToolLogic::getPercent($row['reg_pay_num'],$row['reg_total']); // 新用户 - 注册付费率
+        $row['reg_arpu'] = ToolLogic::getRound($row['reg_pay_total'],$row['reg_pay_num']); // 新用户 - 注册付费ARPU
+        $row['act_rate'] = ToolLogic::getPercent($row['active'],$row['reg_total']); // 新用户 - 次留率
+
+        $row['old_pay_num'] = $row['pay_num'] - $row['reg_pay_num']; // 老用户 - 付费人数
+        $row['old_pay_total'] = $row['pay_total'] - $row['reg_pay_total']; // 老用户 - 付费金额
+        $row['old_pay_rate'] = ToolLogic::getPercent($row['old_pay_num'],$row['old_login_total']); // 老用户 - 付费率
+        $row['old_arpu'] = ToolLogic::getRound($row['old_pay_total'],$row['old_pay_num']); // 老用户 - 付费ARPU
+
+      }
+      $totalRow['arpu'] = ToolLogic::getRound($totalRow['pay_total'],$totalRow['pay_num']); // 总用户 - ARPU
+      $totalRow['pay_rate'] = ToolLogic::getPercent($totalRow['pay_num'],$totalRow['login_total']); // 总用户 - 付费率
+      $totalRow['reg_pay_rate'] = ToolLogic::getPercent($totalRow['reg_pay_num'],$totalRow['reg_total']); // 新用户 - 注册付费率
+      $totalRow['reg_arpu'] = ToolLogic::getRound($totalRow['reg_pay_total'],$totalRow['reg_pay_num']); // 新用户 - 注册付费ARPU
+      $totalRow['old_pay_num'] = $totalRow['pay_num'] - $totalRow['reg_pay_num']; // 老用户 - 付费人数
+      $totalRow['old_pay_total'] = $totalRow['pay_total'] - $totalRow['reg_pay_total']; // 老用户 - 付费金额
+      $totalRow['old_pay_rate'] = ToolLogic::getPercent($totalRow['old_pay_num'],$totalRow['old_login_total']); // 老用户 - 付费率
+      $totalRow['old_arpu'] = ToolLogic::getRound($totalRow['old_pay_total'],$totalRow['old_pay_num']); // 老用户 - 付费ARPU
+      $totalRow['act_rate'] = ToolLogic::getPercent($totalRow['active'],$totalRow['reg_total']); // 次留率
+
+
+
+      return [
+        'data' => $baseData,
+        'totalRow' => $totalRow
+      ];
+    }
+
+
+