|
@@ -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){
|
|
public function generateYearUnionList($namePrefix, $regDate,$whereSql='',$field='*',$group=null){
|