ith5 vor 5 Monaten
Ursprung
Commit
e4962ec70e

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

@@ -73,5 +73,16 @@ class AnalyseController extends BaseController
         return $this->success($data);
     }
 
+    // 收入分析
+    public function getIncomeAnalysis(Request $request){
+        $where = $request->more([
+            ['game_id', ''],
+            ['reg_date', '']
+        ]);
+        $data = $this->logic->getIncomeAnalysis($where);
+        $data['data'] = $this->logic->trandformListColumn($data['data'],['game']);
+        return $this->success($data);
+    }
+
 
 }

+ 86 - 0
app/v1/logic/gameLog/AnalyseLogic.php

@@ -399,10 +399,96 @@ class AnalyseLogic extends BaseLogic
       ];
     }
 
+    /**
+     * 收入分析
+     */
+    public function getIncomeAnalysis($where){
+      $params = $this->searchByAuth($where);
+      $tdate = $params['reg_date']??date('Y-m-d');
+      $ldate = date('Y-m-d', strtotime($tdate . ' -1 days'));
+      $wdate = date('Y-m-d', strtotime($tdate . ' -7 days'));
+      unset($params['reg_date']);
+      $whereSql = $this->generateWhereSql($params);
+      $whereSql .= " AND tdate IN ('{$tdate}','{$ldate}','{$wdate}')";
+ 
+
+      $field = "
+      SUM(pay_total) AS pay_total, -- 付费金额
+      SUM(pay_num) AS pay_num, -- 付费人数
+      SUM(login_total) AS login_total, -- 登陆总数
+      game_id,
+      tdate";
+
+      $year = (int)date('Y', strtotime($tdate));
+      $tableName = 'base_total_day_'.$year;
+
+      $baseData = Db::connect('db_data_report')->query("SELECT {$field} FROM {$tableName} WHERE 1=1 {$whereSql} GROUP BY game_id,tdate");
 
+      if(empty($baseData)){
+        return [
+          'data' => [],
+          'totalRow' => []
+        ];
+      }
 
+      // 计算今日,所有游戏总充值
+      $totalRow = [
+        'game_id' => '合计',
+      ];
 
 
+      $allTotal = 0;
+      $data = [];
+      foreach($baseData as &$row){
+        // 查询日期数据
+        if($row['tdate'] == $tdate){
+          $gameId = $row['game_id'];
+          $data[$gameId]['game_id'] = $gameId;
+          $data[$gameId]['login_total'] = $row['login_total']; // DAU
+          $data[$gameId]['pay_total'] = $row['pay_total']??0; // 今日充值
+          $data[$gameId]['pay_num'] = $row['pay_num']??0; // 今日付费人数
+          $data[$gameId]['pay_arpu'] = ToolLogic::getRound($row['pay_total'],$row['pay_num']);  // 今日付费ARPU
+          
+        
+          $allTotal += $row['pay_total'];
+
+          $totalRow['pay_total'] = !empty($totalRow['pay_total']) ? $totalRow['pay_total'] + $row['pay_total'] : $row['pay_total']; // 今日充值
+          $totalRow['pay_num'] = !empty($totalRow['pay_num']) ? $totalRow['pay_num'] + $row['pay_num'] : $row['pay_num']; // 今日付费人数
+          $totalRow['login_total'] = !empty($totalRow['login_total']) ? $totalRow['login_total'] + $row['login_total'] : $row['login_total']; // 今日登陆人数
+        }
+        // 查询昨天数据
+        if($row['tdate'] == $ldate){
+          $gameId = $row['game_id'];
+          $data[$gameId]['yestoday_pay_total'] = $row['pay_total']??0; // 昨日充值
+          $totalRow['yestoday_pay_total'] = !empty($totalRow['yestoday_pay_total']) ? $totalRow['yestoday_pay_total'] + $row['pay_total'] : $row['pay_total']; // 昨日充值
+         
+        }
+        // 查询7天前数据
+        if($row['tdate'] == $wdate){
+           $gameId = $row['game_id'];
+          $data[$gameId]['week_pay_total'] = $row['pay_total']??0; // 7天前充值
+          $totalRow['week_pay_total'] = !empty($totalRow['week_pay_total']) ? $totalRow['week_pay_total'] + $row['pay_total'] : $row['pay_total']; // 7天前充值
+          
+        }
+      }
+
+      $totalRow['pay_arpu'] = ToolLogic::getRound($totalRow['pay_total'],$totalRow['pay_num']); // 今日充值ARPU
+      $totalRow['pay_ratio'] = ToolLogic::getPercent($totalRow['pay_total'],$allTotal); // 今日充值占比
+      $totalRow['pay_increase_yestoday'] = $totalRow['pay_total'] - $totalRow['yestoday_pay_total']; // 昨日增长
+      $totalRow['pay_increase_week'] = $totalRow['pay_total'] - $totalRow['week_pay_total']; // 7天增长
+
+      foreach($data as &$row){
+        $data['pay_ratio'] = ToolLogic::getPercent($row['pay_total'],$allTotal); // 今日充值占比
+        $row['pay_increase_yestoday'] = $row['pay_total'] - $row['yestoday_pay_total']; // 昨日增长
+        $row['pay_increase_week'] = $row['pay_total'] - $row['week_pay_total']; // 7天增长
+      }
+
+
+      return [
+        'data' => array_values($data),
+        'totalRow' => $totalRow
+      ];
+    }
 
     // 生成基础日统计表的联合查询列表
     public function generateYearUnionList($namePrefix, $regDate,$whereSql='',$field='*',$group=null){