|
|
@@ -158,6 +158,7 @@ class AnalyseLogic extends BaseLogic
|
|
|
foreach($baseData as $row){
|
|
|
$game_id = $row['game_id'];
|
|
|
$tdate = $row['tdate'];
|
|
|
+ $data[$game_id]['game_id'] = $game_id;
|
|
|
$data[$game_id][$tdate]['reg_total'] = $row['reg_total'];
|
|
|
$data[$game_id][$tdate]['active_total'] = !empty($activeData[$tdate]['active_total']) ? $activeData[$tdate]['active_total'] : 0;
|
|
|
$data[$game_id][$tdate]['retention_total'] = ToolLogic::getPercent($data[$game_id][$tdate]['active_total'],$data[$game_id][$tdate]['reg_total']);
|
|
|
@@ -199,13 +200,123 @@ class AnalyseLogic extends BaseLogic
|
|
|
}
|
|
|
$totalRow['total'] = ToolLogic::getPercent($totalRow['total_active_total'],$totalRow['total_reg_total']);
|
|
|
|
|
|
+ // 获取两个注册日期之间的日期列表
|
|
|
+ $dateList = ToolLogic::getDatesBetween($where['reg_date'][0],$where['reg_date'][1]);
|
|
|
+ $columnsData = [
|
|
|
+ [
|
|
|
+ 'title' => '游戏ID',
|
|
|
+ 'dataIndex' => 'game_id',
|
|
|
+ 'width' => 120,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'title' => '游戏',
|
|
|
+ 'dataIndex' => 'game_name',
|
|
|
+ 'width' => 120,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'title' => '合计',
|
|
|
+ 'dataIndex' => 'total',
|
|
|
+ 'width' => 120,
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ foreach($dateList as $date){
|
|
|
+ $columnsData[] = [
|
|
|
+ 'title' => $date,
|
|
|
+ 'dataIndex' => $date,
|
|
|
+ 'width' => 120,
|
|
|
+ ];
|
|
|
+ }
|
|
|
|
|
|
$result['data'] = $data;
|
|
|
$result['totalRow'] = $totalRow;
|
|
|
+ $result['columns'] = $columnsData;
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
+ 数据总览
|
|
|
+ 1. DAU 登陆总数 login_total
|
|
|
+ 2. ARPU pay_total/pay_num
|
|
|
+ */
|
|
|
+ public function getDataOverview($where){
|
|
|
+ $params = $this->searchByAuth($where);
|
|
|
+ $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, -- 老用户登陆总数
|
|
|
+ tdate";
|
|
|
+ $baseData = $this->generateYearUnionList('base_total_day_',$where['reg_date'],$whereSql,$field,'tdate');
|
|
|
+
|
|
|
+ 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,reg_date','reg_date');
|
|
|
+ $actData = array_column($actData,null,'reg_date');
|
|
|
+
|
|
|
+ $totalRow = [
|
|
|
+ 'tdate' => '合计'
|
|
|
+ ];
|
|
|
+
|
|
|
+ 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['tdate']]['active_total']??0 : $actData[$row['tdate']]['active_total']??0; // 次留数
|
|
|
+
|
|
|
+
|
|
|
+ $row['active'] = !empty($actData[$row['tdate']]['active_total']) ? $actData[$row['tdate']]['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
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
// 生成基础日统计表的联合查询列表
|