|
|
@@ -2,16 +2,16 @@
|
|
|
|
|
|
namespace app\v1\logic\dataReport;
|
|
|
|
|
|
-use app\v1\logic\tool\ToolLogic;
|
|
|
+
|
|
|
use plugin\saiadmin\basic\BaseLogic;
|
|
|
use support\think\Db;
|
|
|
|
|
|
class ChannelAnalysisLogic extends BaseLogic
|
|
|
{
|
|
|
// 分时数据
|
|
|
- public function getHourDataList($where)
|
|
|
+ public function getHourDataList($params)
|
|
|
{
|
|
|
- $params = $this->searchByAuth($where);
|
|
|
+ $params = $this->searchByAuth($params);
|
|
|
// hour=>小时, reg_total=>注册数,cost=>消耗,pay_num=>付费总用户数,
|
|
|
// pay_total=>付费总金额,reg_pay_num=>小时注册当天付费数,reg_pay_total=>小时注册当天付费金额
|
|
|
// reg_pay_num_rg=>注册累计付费数,reg_pay_total_rg=>注册累计付费金额
|
|
|
@@ -26,12 +26,13 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
SUM(reg_pay_num_rg) as reg_pay_num_rg,
|
|
|
SUM(reg_pay_total_rg) as reg_pay_total_rg";
|
|
|
$group = 'agent_id,thour';
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 根据日期,连表查询
|
|
|
- $tableNames = ToolLogic::getMonthlyTableNames('base_total_hour_', $where['reg_date'][0], $where['reg_date'][1]);
|
|
|
+ $monthRange = getMonthRange($params['reg_date'][0], $params['reg_date'][1]);
|
|
|
$sqlParts = [];
|
|
|
- foreach ($tableNames as $tableName) {
|
|
|
+ foreach ($monthRange as $month) {
|
|
|
+ $tableName = 'base_total_hour_' . $month;
|
|
|
$sqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
}
|
|
|
$unionSql = implode(" UNION ALL ", $sqlParts);
|
|
|
@@ -59,11 +60,11 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
}
|
|
|
unset($hourRow['agent_id'], $hourRow['hour']);
|
|
|
// 注册成本
|
|
|
- $hourRow['reg_cost'] = ToolLogic::getRound($hourRow['cost'], $hourRow['reg_total']);
|
|
|
+ $hourRow['reg_cost'] = getRound($hourRow['cost'], $hourRow['reg_total']);
|
|
|
// 付费率
|
|
|
- $hourRow['pay_rate'] = ToolLogic::getPercent($hourRow['reg_pay_num'], $hourRow['reg_total']);
|
|
|
+ $hourRow['pay_rate'] = getPercent($hourRow['reg_pay_num'], $hourRow['reg_total']);
|
|
|
// 回本率
|
|
|
- $hourRow['roi'] = ToolLogic::getPercent($hourRow['reg_pay_total'], $hourRow['cost']);
|
|
|
+ $hourRow['roi'] = 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'];
|
|
|
@@ -81,9 +82,9 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
// 计算统计的注册成本、付费绿、回本率
|
|
|
foreach ($total as $key => &$v) {
|
|
|
if (!is_array($v)) continue; // 跳过 agent_id => 合计 等非数组元素
|
|
|
- $v['reg_cost'] = ToolLogic::getRound($v['cost'], $v['reg_total']);
|
|
|
- $v['pay_rate'] = ToolLogic::getPercent($v['reg_pay_num'], $v['reg_total']);
|
|
|
- $v['roi'] = ToolLogic::getPercent($v['reg_pay_total'], $v['cost']);
|
|
|
+ $v['reg_cost'] = getRound($v['cost'], $v['reg_total']);
|
|
|
+ $v['pay_rate'] = getPercent($v['reg_pay_num'], $v['reg_total']);
|
|
|
+ $v['roi'] = getPercent($v['reg_pay_total'], $v['cost']);
|
|
|
}
|
|
|
|
|
|
// 计算行汇总
|
|
|
@@ -94,9 +95,9 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$item['total_raw']['reg'] = round(array_sum(array_column($item, 'reg')), 2);
|
|
|
$item['total_raw']['pay_num'] = round(array_sum(array_column($item, 'pay_num')), 2);
|
|
|
$item['total_raw']['pay'] = round(array_sum(array_column($item, 'pay')), 2);
|
|
|
- $item['total_raw']['reg_cost'] = ToolLogic::getRound($item['total_raw']['cost'], $item['total_raw']['reg'], 1);
|
|
|
- $item['total_raw']['pay_rate'] = ToolLogic::getPercent($item['total_raw']['pay_num'], $item['total_raw']['reg']);
|
|
|
- $item['total_raw']['roi'] = ToolLogic::getPercent($item['total_raw']['pay'], $item['total_raw']['cost']);
|
|
|
+ $item['total_raw']['reg_cost'] = getRound($item['total_raw']['cost'], $item['total_raw']['reg'], 1);
|
|
|
+ $item['total_raw']['pay_rate'] = getPercent($item['total_raw']['pay_num'], $item['total_raw']['reg']);
|
|
|
+ $item['total_raw']['roi'] = getPercent($item['total_raw']['pay'], $item['total_raw']['cost']);
|
|
|
}
|
|
|
|
|
|
$data = array_values($hourResult);
|
|
|
@@ -113,14 +114,13 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
{
|
|
|
$params = $this->searchByAuth($where);
|
|
|
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 1. 注册数据:$regData = 按照日期,获取每日的 注册数【reg_total】分组,base_total_day_2025
|
|
|
-
|
|
|
- $baseTotalDayTableNames = ToolLogic::getYearlyTableNames('base_total_day_', $params['reg_date'][0], $params['reg_date'][1]);
|
|
|
-
|
|
|
+ $yearRange = getYearRange($params['reg_date'][0], $params['reg_date'][1]);
|
|
|
$baseTotalDaySqlParts = [];
|
|
|
- foreach ($baseTotalDayTableNames as $tableName) {
|
|
|
+ foreach ($yearRange as $year) {
|
|
|
+ $tableName = 'base_total_day_' . $year;
|
|
|
$baseTotalDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
}
|
|
|
$unionBaseTotalDaySql = implode(" UNION ALL ", $baseTotalDaySqlParts);
|
|
|
@@ -130,15 +130,11 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
|
|
|
|
|
|
// 2. 活跃数据:$actData = 按照日期,获取每日的 活跃数 SUM(【active_total】) 活跃天数 【days】, 分组 【reg_date,days】,game_active_day_2025
|
|
|
-
|
|
|
- $gameActiveDayTableNames = ToolLogic::getYearlyTableNames('game_active_day_', $params['reg_date'][0], $params['reg_date'][1]);
|
|
|
-
|
|
|
+ $yearRange = getYearRange($params['reg_date'][0], $params['reg_date'][1]);
|
|
|
$gameActiveDaySqlParts = [];
|
|
|
|
|
|
- foreach ($gameActiveDayTableNames as $tableName) {
|
|
|
- if (!preg_match('/^game_active_day_\\d{4}$/', $tableName)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ foreach ($yearRange as $year) {
|
|
|
+ $tableName = 'game_active_day_' . $year;
|
|
|
$gameActiveDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
}
|
|
|
|
|
|
@@ -189,7 +185,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
// 活跃天数的key
|
|
|
$dayKey = 'd' . $r['days'];
|
|
|
// N日留存率 = 第N天活跃数 ÷ 注册日注册数 × 100%。
|
|
|
- $list[$reg_date][$dayKey] = ToolLogic::getPercent($r['active'], $list[$reg_date]['reg']);
|
|
|
+ $list[$reg_date][$dayKey] = getPercent($r['active'], $list[$reg_date]['reg']);
|
|
|
// d1...dn的reg = 记录按日的活跃数
|
|
|
$totalData[$dayKey]['active'] += $r['active'];
|
|
|
}
|
|
|
@@ -199,7 +195,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($key == 'reg') {
|
|
|
$total['reg'] = $val;
|
|
|
} else {
|
|
|
- $total[$key] = ToolLogic::getPercent($val['active'], $val['reg']);
|
|
|
+ $total[$key] = getPercent($val['active'], $val['reg']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -252,7 +248,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$type = 'agent_id';
|
|
|
}
|
|
|
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 1.查询消耗数据, 安game_id/agent_id分组
|
|
|
// 忽略后台录入的消耗
|
|
|
@@ -345,36 +341,36 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
unset($baseData[$key]);
|
|
|
}
|
|
|
// 注册成本
|
|
|
- $row['reg_cost'] = ToolLogic::getRound($cost, $row['reg_total'] ?? 0);
|
|
|
+ $row['reg_cost'] = getRound($cost, $row['reg_total'] ?? 0);
|
|
|
// 创角率
|
|
|
- $row['role_per'] = ToolLogic::getRound($row['role_total'], $row['reg_total'] ?? 0);
|
|
|
+ $row['role_per'] = getRound($row['role_total'], $row['reg_total'] ?? 0);
|
|
|
// 次留数
|
|
|
$row['active'] = $activeData[$typeId]['active'] ?? 0;
|
|
|
// 次留率
|
|
|
- $row['a_per'] = ToolLogic::getPercent($activeData[$typeId]['active'] ?? 0, $row['reg_total'], 1);
|
|
|
+ $row['a_per'] = getPercent($activeData[$typeId]['active'] ?? 0, $row['reg_total'], 1);
|
|
|
// 次留成本
|
|
|
- $row['a_cost'] = ToolLogic::getRound($cost, $row['active'], 1);
|
|
|
+ $row['a_cost'] = 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_cost'] = getRound($row['cost'], $row['reg_pay_num']);
|
|
|
// 付费率
|
|
|
- $row['p_per'] = ToolLogic::getPercent($row['reg_pay_num'] ?? 0, $row['reg_total'], 1);
|
|
|
+ $row['p_per'] = 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['da_per'] = getPercent($row['reg_pay_total_da'] ?? 0, $row['cost'], 1);
|
|
|
// 累计回本率
|
|
|
- $row['re_per'] = (float)trim(ToolLogic::getPercent($row['reg_pay_total'], $row['cost']), "%");
|
|
|
+ $row['re_per'] = (float)trim(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);
|
|
|
+ $row['re_amount_per'] = getPercent($row['reg_pay_amount'], $row['cost'], 1);
|
|
|
//ARPU
|
|
|
- $row['arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_pay_num']);
|
|
|
+ $row['arpu'] = getRound($row['reg_pay_total'], $row['reg_pay_num']);
|
|
|
//注册ARPU
|
|
|
- $row['r_arpu'] = ToolLogic::getRound($row['reg_pay_total'], $row['reg_total']);
|
|
|
+ $row['r_arpu'] = getRound($row['reg_pay_total'], $row['reg_total']);
|
|
|
// 7天回本率
|
|
|
- $row['re_amount_per_7'] = ToolLogic::getPercent($hb7dayData[$typeId] ?? 0, $row['cost'], 1);
|
|
|
+ $row['re_amount_per_7'] = getPercent($hb7dayData[$typeId] ?? 0, $row['cost'], 1);
|
|
|
|
|
|
// 按分组信息展示,id和name
|
|
|
switch ($params['group'] ?? '') {
|
|
|
@@ -421,29 +417,29 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
}
|
|
|
|
|
|
// 注册成本
|
|
|
- $total['reg_cost'] = ToolLogic::getRound($total['cost']??0, $total['reg_total'] ?? 0);
|
|
|
+ $total['reg_cost'] = getRound($total['cost']??0, $total['reg_total'] ?? 0);
|
|
|
// 汇总创角率
|
|
|
- $total['role_per'] = ToolLogic::getRound($total['role_total']??0, $total['reg_total'] ?? 0);
|
|
|
+ $total['role_per'] = getRound($total['role_total']??0, $total['reg_total'] ?? 0);
|
|
|
// 次留率
|
|
|
- $total['a_per'] = ToolLogic::getPercent($total['active']??0, $total['reg_total']??0, 1);
|
|
|
+ $total['a_per'] = getPercent($total['active']??0, $total['reg_total']??0, 1);
|
|
|
// 次留成本
|
|
|
- $total['a_cost'] = ToolLogic::getRound($total['cost']??0, $total['active']??0, 1);
|
|
|
+ $total['a_cost'] = getRound($total['cost']??0, $total['active']??0, 1);
|
|
|
// 付费率
|
|
|
- $total['p_per'] = ToolLogic::getPercent($total['reg_pay_num']??0, $total['reg_total']??0, 1);
|
|
|
+ $total['p_per'] = getPercent($total['reg_pay_num']??0, $total['reg_total']??0, 1);
|
|
|
// 当天回本率
|
|
|
- $total['da_per'] = ToolLogic::getPercent($total['reg_pay_total_da']??0, $total['cost']??0, 1);
|
|
|
+ $total['da_per'] = getPercent($total['reg_pay_total_da']??0, $total['cost']??0, 1);
|
|
|
// 累计回本率
|
|
|
- $total['re_per'] = (float)trim(ToolLogic::getPercent($total['reg_pay_total']??0, $total['cost']??0), "%");
|
|
|
+ $total['re_per'] = (float)trim(getPercent($total['reg_pay_total']??0, $total['cost']??0), "%");
|
|
|
// 实际回本率
|
|
|
- $total['re_amount_per'] = ToolLogic::getPercent($total['reg_pay_amount']??0, $total['cost']??0, 1);
|
|
|
+ $total['re_amount_per'] = getPercent($total['reg_pay_amount']??0, $total['cost']??0, 1);
|
|
|
//ARPU
|
|
|
- $total['arpu'] = ToolLogic::getRound($total['reg_pay_total']??0, $total['reg_pay_num']??0);
|
|
|
+ $total['arpu'] = 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);
|
|
|
+ $total['r_arpu'] = getRound($total['reg_pay_total']??0, $total['reg_total']??0);
|
|
|
// 7天回本率
|
|
|
- $total['re_amount_per_7'] = ToolLogic::getPercent($hb7dayDataSum??0, $total['cost']??0, 1);
|
|
|
+ $total['re_amount_per_7'] = getPercent($hb7dayDataSum??0, $total['cost']??0, 1);
|
|
|
//付费成本
|
|
|
- $total['p_cost'] = ToolLogic::getRound($total['reg_pay_num']??0, $total['cost']??0, 1);
|
|
|
+ $total['p_cost'] = getRound($total['reg_pay_num']??0, $total['cost']??0, 1);
|
|
|
|
|
|
$totalData = $this->agentTotal($where);
|
|
|
|
|
|
@@ -457,9 +453,10 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
public function generateYearUnionList($namePrefix, $regDate, $whereSql = '', $field = '*', $group = null)
|
|
|
{
|
|
|
|
|
|
- $tableNames = ToolLogic::getYearlyTableNames($namePrefix, $regDate[0], $regDate[1]);
|
|
|
+ $yearRange = getYearRange($regDate[0], $regDate[1]);
|
|
|
$sqlParts = [];
|
|
|
- foreach ($tableNames as $tableName) {
|
|
|
+ foreach ($yearRange as $year) {
|
|
|
+ $tableName = $namePrefix . $year;
|
|
|
$sqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
}
|
|
|
$unionSql = implode(" UNION ALL ", $sqlParts);
|
|
|
@@ -482,7 +479,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
public function computedHb7days($where, $type)
|
|
|
{
|
|
|
$payDataAll = [];
|
|
|
- $dateRange = ToolLogic::getDatesBetween($where['reg_date'][0], $where['reg_date'][1]);
|
|
|
+ $dateRange = getDateRange($where['reg_date'][0], $where['reg_date'][1]);
|
|
|
foreach ($dateRange as $regDate) {
|
|
|
|
|
|
$field = "
|
|
|
@@ -497,7 +494,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$wherePay = $where;
|
|
|
unset($wherePay['reg_date']);
|
|
|
|
|
|
- $whereSql = $this->generateWhereSql($wherePay);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($wherePay);
|
|
|
$whereSql = "{$whereSql} AND reg_date = '{$regDate}' AND pay_date = '{$eDate}'";
|
|
|
|
|
|
|
|
|
@@ -523,7 +520,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
*/
|
|
|
public function agentTotal($where)
|
|
|
{
|
|
|
- $whereSql = $this->generateWhereSql($where);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($where);
|
|
|
|
|
|
// 1. 消耗表. 获取消耗金额
|
|
|
$costData = Db::connect('db_advert')->query("SELECT SUM(money) as cost FROM media_cost WHERE 1=1 $whereSql");
|
|
|
@@ -543,13 +540,13 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$regPayNum = $regPayData[0]['reg_pay_num'] ?? 0;
|
|
|
|
|
|
// roi
|
|
|
- $roi = ToolLogic::getPercent($regPayTotal, $cost, 1);
|
|
|
+ $roi = getPercent($regPayTotal, $cost, 1);
|
|
|
// 付费成本
|
|
|
- $pCost = ToolLogic::getRound($cost, $regPayNum);
|
|
|
+ $pCost = getRound($cost, $regPayNum);
|
|
|
// reg_cost 注册成本
|
|
|
- $regCost = ToolLogic::getRound($cost, $regTotal);
|
|
|
+ $regCost = getRound($cost, $regTotal);
|
|
|
// 付费率
|
|
|
- $pPer = ToolLogic::getPercent($regPayNum, $regTotal, 1);
|
|
|
+ $pPer = getPercent($regPayNum, $regTotal, 1);
|
|
|
|
|
|
// 返回数据
|
|
|
return [
|
|
|
@@ -586,7 +583,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$params['agent_id'] = 0;
|
|
|
}
|
|
|
$groupBy = 'site_id,media_id';
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 支出数据
|
|
|
$costWhereSql = $whereSql;
|
|
|
@@ -639,20 +636,20 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
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); // 创角率
|
|
|
- $row['a_cost'] = ToolLogic::getRound($row['cost'], $row['active'], 1); // 次留成本
|
|
|
- $row['a_per'] = ToolLogic::getPercent($row['active'], $row['reg_total'], 1); // 次留率
|
|
|
+ $row['reg_cost'] = getRound($row['cost'], $row['reg_total'] ?? 0); // 注册成本
|
|
|
+ $row['role_per'] = getRound($row['role_total'], $row['reg_total'] ?? 0); // 创角率
|
|
|
+ $row['a_cost'] = getRound($row['cost'], $row['active'], 1); // 次留成本
|
|
|
+ $row['a_per'] = getPercent($row['active'], $row['reg_total'], 1); // 次留率
|
|
|
$row['reg_pay_total'] = $regPayData[$row['site_id']]['reg_pay_total'] ?? 0; // 总付费金额
|
|
|
$row['reg_pay_num'] = $regPayData[$row['site_id']]['reg_pay_num'] ?? 0; // 总付费人数
|
|
|
$row['reg_pay_amount'] = $regPayData[$row['site_id']]['reg_pay_amount'] ?? 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['re_amount_per'] = ToolLogic::getPercent($row['reg_pay_amount'], $row['cost'], 1); // 实际回本率
|
|
|
- $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['p_cost'] = getRound($row['cost'], $row['reg_pay_num']); // 付费成本
|
|
|
+ $row['p_per'] = getPercent($row['reg_pay_num'] ?? 0, $row['reg_total'], 1); // 付费率
|
|
|
+ $row['da_per'] = getPercent($row['reg_pay_total_da'] ?? 0, $row['cost'], 1); // 当天回本率
|
|
|
+ $row['re_per'] = (float)trim(getPercent($row['reg_pay_total'], $row['cost']), "%"); // 累计回本率
|
|
|
+ $row['re_amount_per'] = getPercent($row['reg_pay_amount'], $row['cost'], 1); // 实际回本率
|
|
|
+ $row['arpu'] = getRound($row['reg_pay_total'], $row['reg_pay_num']); // ARPU
|
|
|
+ $row['r_arpu'] = getRound($row['reg_pay_total'], $row['reg_total']); // 注册ARPU
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -681,17 +678,17 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
|
|
|
}
|
|
|
|
|
|
- $total['reg_cost'] = ToolLogic::getRound($total['cost'] ?? 0, $total['reg_total'] ?? 0); // 注册成本
|
|
|
- $total['role_per'] = ToolLogic::getRound($total['role_total'] ?? 0, $total['reg_total'] ?? 0); // 创角率
|
|
|
- $total['a_per'] = ToolLogic::getPercent($total['active'] ?? 0, $total['reg_total'] ?? 0, 1); // 次留率
|
|
|
- $total['a_cost'] = ToolLogic::getRound($total['cost'] ?? 0, $total['active'] ?? 0, 1); // 次留成本
|
|
|
- $total['p_cost'] = ToolLogic::getRound($total['reg_pay_num'] ?? 0, $total['cost'] ?? 0, 1); // 付费成本
|
|
|
- $total['p_per'] = ToolLogic::getPercent($total['reg_pay_num'] ?? 0, $total['reg_total'] ?? 0, 1); // 付费率
|
|
|
- $total['da_per'] = ToolLogic::getPercent($total['reg_pay_total_da'] ?? 0, $total['cost'] ?? 0, 1); // 当天回本率
|
|
|
- $total['re_per'] = (float)trim(ToolLogic::getPercent($total['reg_pay_total'] ?? 0, $total['cost'] ?? 0), "%"); // 累计回本率
|
|
|
- $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['reg_cost'] = getRound($total['cost'] ?? 0, $total['reg_total'] ?? 0); // 注册成本
|
|
|
+ $total['role_per'] = getRound($total['role_total'] ?? 0, $total['reg_total'] ?? 0); // 创角率
|
|
|
+ $total['a_per'] = getPercent($total['active'] ?? 0, $total['reg_total'] ?? 0, 1); // 次留率
|
|
|
+ $total['a_cost'] = getRound($total['cost'] ?? 0, $total['active'] ?? 0, 1); // 次留成本
|
|
|
+ $total['p_cost'] = getRound($total['reg_pay_num'] ?? 0, $total['cost'] ?? 0, 1); // 付费成本
|
|
|
+ $total['p_per'] = getPercent($total['reg_pay_num'] ?? 0, $total['reg_total'] ?? 0, 1); // 付费率
|
|
|
+ $total['da_per'] = getPercent($total['reg_pay_total_da'] ?? 0, $total['cost'] ?? 0, 1); // 当天回本率
|
|
|
+ $total['re_per'] = (float)trim(getPercent($total['reg_pay_total'] ?? 0, $total['cost'] ?? 0), "%"); // 累计回本率
|
|
|
+ $total['re_amount_per'] = getPercent($total['reg_pay_amount'] ?? 0, $total['cost'] ?? 0, 1); // 实际回本率
|
|
|
+ $total['arpu'] = getRound($total['reg_pay_total'] ?? 0, $total['reg_pay_num'] ?? 0); // ARPU
|
|
|
+ $total['r_arpu'] = getRound($total['reg_pay_total'] ?? 0, $total['reg_total'] ?? 0); // 注册ARPU
|
|
|
|
|
|
return ['data' => $baseTotalDayData, 'total' => $total];
|
|
|
}
|
|
|
@@ -718,7 +715,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if (empty($params['agent_id'])) {
|
|
|
$params['agent_id'] = 0;
|
|
|
}
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 1. 消耗表. 获取消耗金额
|
|
|
$costData = Db::connect('db_advert')->query("SELECT SUM(money) as cost FROM media_cost WHERE 1=1 $whereSql Group By tdate");
|
|
|
@@ -767,21 +764,21 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
{
|
|
|
$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); // 次留成本
|
|
|
- $row['a_per'] = ToolLogic::getPercent($row['active'], $row['reg_total'], 1); // 次留率
|
|
|
+ $row['reg_cost'] = getRound($row['cost'], $row['reg_total'] ?? 0); // 注册成本
|
|
|
+ $row['role_per'] = getRound($row['role_total'], $row['reg_total'] ?? 0); // 创角率
|
|
|
+ $row['a_cost'] = getRound($row['cost'], $row['active'], 1); // 次留成本
|
|
|
+ $row['a_per'] = getPercent($row['active'], $row['reg_total'], 1); // 次留率
|
|
|
$row['reg_pay_total'] = $regPayData[$row['tdate']]['reg_pay_total'] ?? 0; // 总付费金额
|
|
|
$row['reg_pay_num'] = $regPayData[$row['tdate']]['reg_pay_num'] ?? 0; // 总付费人数
|
|
|
$row['reg_pay_amount'] = $regPayData[$row['tdate']]['reg_pay_amount'] ?? 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['re_amount_per'] = ToolLogic::getPercent($row['reg_pay_amount'], $row['cost'], 1); // 实际回本率
|
|
|
- $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); // 收支比
|
|
|
+ $row['p_cost'] = getRound($row['cost'], $row['reg_pay_num']); // 付费成本
|
|
|
+ $row['p_per'] = getPercent($row['reg_pay_num'] ?? 0, $row['reg_total'], 1); // 付费率
|
|
|
+ $row['da_per'] = getPercent($row['reg_pay_total_da'] ?? 0, $row['cost'], 1); // 当天回本率
|
|
|
+ $row['re_per'] = (float)trim(getPercent($row['reg_pay_total'], $row['cost']), "%"); // 累计回本率
|
|
|
+ $row['re_amount_per'] = getPercent($row['reg_pay_amount'], $row['cost'], 1); // 实际回本率
|
|
|
+ $row['arpu'] = getRound($row['reg_pay_total'], $row['reg_pay_num']); // ARPU
|
|
|
+ $row['r_arpu'] = getRound($row['reg_pay_total'], $row['reg_total']); // 注册ARPU
|
|
|
+ $row['pay_cost'] = getPercent($row['pay_amount'] ?? 0, $row['cost'] ?? 0); // 收支比
|
|
|
}
|
|
|
|
|
|
// 6. 合计
|
|
|
@@ -806,18 +803,18 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$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); // 注册成本
|
|
|
- $total['role_per'] = ToolLogic::getRound($total['role_total'] ?? 0, $total['reg_total'] ?? 0); // 创角率
|
|
|
- $total['a_per'] = ToolLogic::getPercent($total['active'] ?? 0, $total['reg_total'] ?? 0, 1); // 次留率
|
|
|
- $total['a_cost'] = ToolLogic::getRound($total['cost'] ?? 0, $total['active'] ?? 0, 1); // 次留成本
|
|
|
- $total['p_cost'] = ToolLogic::getRound($total['reg_pay_num'] ?? 0, $total['cost'] ?? 0, 1); // 付费成本
|
|
|
- $total['p_per'] = ToolLogic::getPercent($total['reg_pay_num'] ?? 0, $total['reg_total'] ?? 0, 1); // 付费率
|
|
|
- $total['da_per'] = ToolLogic::getPercent($total['reg_pay_total_da'] ?? 0, $total['cost'] ?? 0, 1); // 当天回本率
|
|
|
- $total['re_per'] = (float)trim(ToolLogic::getPercent($total['reg_pay_total'] ?? 0, $total['cost'] ?? 0), "%"); // 累计回本率
|
|
|
- $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['reg_cost'] = getRound($total['cost'] ?? 0, $total['reg_total'] ?? 0); // 注册成本
|
|
|
+ $total['role_per'] = getRound($total['role_total'] ?? 0, $total['reg_total'] ?? 0); // 创角率
|
|
|
+ $total['a_per'] = getPercent($total['active'] ?? 0, $total['reg_total'] ?? 0, 1); // 次留率
|
|
|
+ $total['a_cost'] = getRound($total['cost'] ?? 0, $total['active'] ?? 0, 1); // 次留成本
|
|
|
+ $total['p_cost'] = getRound($total['reg_pay_num'] ?? 0, $total['cost'] ?? 0, 1); // 付费成本
|
|
|
+ $total['p_per'] = getPercent($total['reg_pay_num'] ?? 0, $total['reg_total'] ?? 0, 1); // 付费率
|
|
|
+ $total['da_per'] = getPercent($total['reg_pay_total_da'] ?? 0, $total['cost'] ?? 0, 1); // 当天回本率
|
|
|
+ $total['re_per'] = (float)trim(getPercent($total['reg_pay_total'] ?? 0, $total['cost'] ?? 0), "%"); // 累计回本率
|
|
|
+ $total['re_amount_per'] = getPercent($total['reg_pay_amount'] ?? 0, $total['cost'] ?? 0, 1); // 实际回本率
|
|
|
+ $total['arpu'] = getRound($total['reg_pay_total'] ?? 0, $total['reg_pay_num'] ?? 0); // ARPU
|
|
|
+ $total['r_arpu'] = getRound($total['reg_pay_total'] ?? 0, $total['reg_total'] ?? 0); // 注册ARPU
|
|
|
+ $total['pay_cost'] = getPercent($total['pay_amount'] ?? 0, $total['cost'] ?? 0); //收支比
|
|
|
|
|
|
return ['data' => array_values($baseTotalDayData), 'totalRow' => $total];
|
|
|
}
|
|
|
@@ -831,7 +828,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
// 展示类型
|
|
|
$dataType = $params['data_type'] ?? 'recovery';
|
|
|
$nowDate = date("Y-m-d");
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 1. 获取消耗金额
|
|
|
$costData = Db::connect('db_advert')->query("SELECT SUM(money) as cost, tdate FROM media_cost WHERE 1=1 $whereSql group by tdate");
|
|
|
@@ -873,7 +870,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$totalRow['d0']['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 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);
|
|
|
+ $totalRow['reg_cost'] = getRound($totalRow['cost'] ?? 0, $totalRow['reg_total'] ?? 0);
|
|
|
|
|
|
$days = (strtotime($nowDate) - strtotime($key)) / 86400 + 1;
|
|
|
for ($i = 1; $i <= $days; $i++) {
|
|
|
@@ -892,7 +889,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$data[$regDate]['reg_total'] = $baseData[$regDate]['reg_total'] ?? 0;
|
|
|
|
|
|
// 注册成本
|
|
|
- $data[$regDate]['reg_cost'] = ToolLogic::getRound($costData[$regDate] ?? 0, $data[$regDate]['reg_total'] ?? 0);
|
|
|
+ $data[$regDate]['reg_cost'] = getRound($costData[$regDate] ?? 0, $data[$regDate]['reg_total'] ?? 0);
|
|
|
// 消耗金额
|
|
|
$data[$regDate]['cost'] = $costData[$regDate] ?? 0;
|
|
|
|
|
|
@@ -902,35 +899,35 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
|
|
|
if ($nowDate === $row['pay_date']) {
|
|
|
- $data[$regDate]['d0'] = ToolLogic::getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
|
|
|
+ $data[$regDate]['d0'] = getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 扣除分成/cost , 计算 */
|
|
|
case 'remount':
|
|
|
// 按天回本率
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
|
|
|
// 累计回本率
|
|
|
if ($nowDate === $row['pay_date']) {
|
|
|
- $data[$regDate]['d0'] = ToolLogic::getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
|
|
|
+ $data[$regDate]['d0'] = getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 累计计费付费金额 / 注册数 */
|
|
|
case 'ltv':
|
|
|
// 按天LTV
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
// 累计LTV
|
|
|
if ($nowDate === $row['pay_date']) {
|
|
|
- $data[$regDate]['d0'] = ToolLogic::getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
+ $data[$regDate]['d0'] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 后面的LTV数据, 按天LTV / 第一天LTV , 目的是为了计算LTV增长率*/
|
|
|
case 'ltvbs':
|
|
|
- $totalLtv[$daykey] = ToolLogic::getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
+ $totalLtv[$daykey] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
$fz = $totalLtv['d1'] ?? 0 != 0 ? $totalLtv['d1'] : 1;
|
|
|
$data[$regDate][$daykey] = round($totalLtv[$daykey] / $fz, 2);
|
|
|
break;
|
|
|
@@ -954,17 +951,17 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
|
|
|
/* 付费率 */
|
|
|
case 'pay_rate':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
if ($nowDate === $row['pay_date']) {
|
|
|
- $data[$regDate]['d0'] = ToolLogic::getPercent($row['addup_pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
+ $data[$regDate]['d0'] = getPercent($row['addup_pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 付费ARPU */
|
|
|
case 'arpu':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getRound($row['pay_total'], $row['pay_num']);
|
|
|
+ $data[$regDate][$daykey] = getRound($row['pay_total'], $row['pay_num']);
|
|
|
if ($nowDate === $row['pay_date']) {
|
|
|
- $data[$regDate]['d0'] = ToolLogic::getRound($row['addup_pay_total'], $row['addup_pay_num']);
|
|
|
+ $data[$regDate]['d0'] = getRound($row['addup_pay_total'], $row['addup_pay_num']);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -992,16 +989,16 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($key[0] === 'd') {
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
break;
|
|
|
case 'remount':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['addup_pay_amount'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['addup_pay_amount'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
break;
|
|
|
case 'ltv':
|
|
|
- $totalRow[$key] = ToolLogic::getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
+ $totalRow[$key] = getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
break;
|
|
|
case 'ltvbs':
|
|
|
- $totalLtv[$key] = ToolLogic::getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
+ $totalLtv[$key] = getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
$fz = $totalLtv['d1'] ?? 0 != 0 ? $totalLtv['d1'] : 1;
|
|
|
$totalRow[$key] = round($totalLtv[$key] / $fz, 2);
|
|
|
|
|
|
@@ -1013,10 +1010,10 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$totalRow[$key] = $totalRow[$key]['pay_total'] ?? 0;
|
|
|
break;
|
|
|
case 'pay_rate':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['pay_num'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['pay_num'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
break;
|
|
|
case 'arpu':
|
|
|
- $totalRow[$key] = ToolLogic::getRound($totalRow[$key]['pay_total'] ?? 0, $totalRow[$key]['pay_num'] ?? 0);
|
|
|
+ $totalRow[$key] = getRound($totalRow[$key]['pay_total'] ?? 0, $totalRow[$key]['pay_num'] ?? 0);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -1025,16 +1022,16 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($data && $totalRow) {
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $totalRow['d0'] = ToolLogic::getPercent($pay_total, $totalRow['cost'], 1);
|
|
|
+ $totalRow['d0'] = getPercent($pay_total, $totalRow['cost'], 1);
|
|
|
break;
|
|
|
case 'remount':
|
|
|
- $totalRow['d0'] = ToolLogic::getPercent($pay_amount, $totalRow['cost'], 1);
|
|
|
+ $totalRow['d0'] = getPercent($pay_amount, $totalRow['cost'], 1);
|
|
|
break;
|
|
|
case 'ltv':
|
|
|
- $totalRow['d0'] = ToolLogic::getRound($pay_total, $totalRow['reg_total']);
|
|
|
+ $totalRow['d0'] = getRound($pay_total, $totalRow['reg_total']);
|
|
|
break;
|
|
|
case 'ltvbs':
|
|
|
- $totalLtv['d0'] = ToolLogic::getRound($pay_total, $totalRow['reg_total']);
|
|
|
+ $totalLtv['d0'] = getRound($pay_total, $totalRow['reg_total']);
|
|
|
$fz = $totalLtv['d1'] ?? 0 != 0 ? $totalLtv['d1'] : 1;
|
|
|
$totalRow['d0'] = round($totalLtv['d0'] / $fz, 2);
|
|
|
break;
|
|
|
@@ -1045,16 +1042,16 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$totalRow['d0'] = $pay_total;
|
|
|
break;
|
|
|
case 'pay_rate':
|
|
|
- $totalRow['d0'] = ToolLogic::getPercent($pay_num, $totalRow['reg_total']);
|
|
|
+ $totalRow['d0'] = getPercent($pay_num, $totalRow['reg_total']);
|
|
|
break;
|
|
|
case 'arpu':
|
|
|
- $totalRow['d0'] = ToolLogic::getRound($pay_total, $pay_num);
|
|
|
+ $totalRow['d0'] = getRound($pay_total, $pay_num);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- $totalRow['reg_cost'] = ToolLogic::getRound($totalRow['cost'], $totalRow['reg_total']);
|
|
|
- $list = ToolLogic::arrSort($data, 'tdate', 'asc');
|
|
|
+ $totalRow['reg_cost'] = getRound($totalRow['cost'], $totalRow['reg_total']);
|
|
|
+ $list = arrSort($data, 'tdate', 'asc');
|
|
|
}
|
|
|
return [
|
|
|
'data' => array_values($list),
|
|
|
@@ -1071,7 +1068,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
// 展示类型
|
|
|
$dataType = $params['data_type'] ?? 'recovery';
|
|
|
$nowDate = date("Y-m");
|
|
|
- $whereSql = $this->generateWhereSql($params);
|
|
|
+ $whereSql = $this->getCommonWhereRaw($params);
|
|
|
|
|
|
// 2. 获取注册数
|
|
|
$totalBaseWhereSql = str_replace('AND tdate', 'AND tmonth', $whereSql);
|
|
|
@@ -1110,9 +1107,9 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
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);
|
|
|
+ $totalRow['reg_cost'] = getRound($totalRow['cost'] ?? 0, $totalRow['reg_total'] ?? 0);
|
|
|
|
|
|
- $days = ToolLogic::getMonthNum($key, $nowDate);
|
|
|
+ $days = 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'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
|
|
|
@@ -1130,38 +1127,38 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$data[$regDate]['reg_total'] = $baseData[$regDate]['reg_total'] ?? 0;
|
|
|
|
|
|
// 注册成本
|
|
|
- $data[$regDate]['reg_cost'] = ToolLogic::getRound($baseData[$regDate]['cost'] ?? 0, $data[$regDate]['reg_total'] ?? 0);
|
|
|
+ $data[$regDate]['reg_cost'] = getRound($baseData[$regDate]['cost'] ?? 0, $data[$regDate]['reg_total'] ?? 0);
|
|
|
// 消耗金额
|
|
|
$data[$regDate]['cost'] = $baseData[$regDate]['cost'] ?? 0;
|
|
|
|
|
|
// 计算日期相差天数
|
|
|
- $daykey = 'm' . (ToolLogic::getMonthNum($regDate, $row['pay_month']) + 1);
|
|
|
+ $daykey = 'm' . (getMonthNum($regDate, $row['pay_month']) + 1);
|
|
|
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_total'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['addup_pay_total'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
if ($nowDate === $row['pay_month']) {
|
|
|
- $data[$regDate]['m0'] = ToolLogic::getPercent($row['addup_pay_total'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
+ $data[$regDate]['m0'] = getPercent($row['addup_pay_total'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 扣除分成/cost , 计算 */
|
|
|
case 'remount':
|
|
|
// 按天回本率
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['addup_pay_amount'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['addup_pay_amount'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
// 累计回本率
|
|
|
if ($nowDate === $row['pay_month']) {
|
|
|
- $data[$regDate]['m0'] = ToolLogic::getPercent($row['addup_pay_amount'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
+ $data[$regDate]['m0'] = getPercent($row['addup_pay_amount'], $baseData[$regDate]['cost'] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 累计计费付费金额 / 注册数 */
|
|
|
case 'ltv':
|
|
|
// 按天LTV
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
+ $data[$regDate][$daykey] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
// 累计LTV
|
|
|
if ($nowDate === $row['pay_month']) {
|
|
|
- $data[$regDate]['m0'] = ToolLogic::getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
+ $data[$regDate]['m0'] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
@@ -1184,17 +1181,17 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
|
|
|
/* 付费率 */
|
|
|
case 'pay_rate':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getPercent($row['pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
+ $data[$regDate][$daykey] = getPercent($row['pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
if ($nowDate === $row['pay_month']) {
|
|
|
- $data[$regDate]['m0'] = ToolLogic::getPercent($row['addup_pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
+ $data[$regDate]['m0'] = getPercent($row['addup_pay_num'], $baseData[$regDate]['reg_total']);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
/* 付费ARPU */
|
|
|
case 'arpu':
|
|
|
- $data[$regDate][$daykey] = ToolLogic::getRound($row['pay_total'], $row['pay_num']);
|
|
|
+ $data[$regDate][$daykey] = getRound($row['pay_total'], $row['pay_num']);
|
|
|
if ($nowDate === $row['pay_month']) {
|
|
|
- $data[$regDate]['m0'] = ToolLogic::getRound($row['addup_pay_total'], $row['addup_pay_num']);
|
|
|
+ $data[$regDate]['m0'] = getRound($row['addup_pay_total'], $row['addup_pay_num']);
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -1224,13 +1221,13 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($key[0] === 'm') {
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
break;
|
|
|
case 'remount':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['addup_pay_amount'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['addup_pay_amount'] ?? 0, $totalRow[$key]['cost'] ?? 0, 1);
|
|
|
break;
|
|
|
case 'ltv':
|
|
|
- $totalRow[$key] = ToolLogic::getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
+ $totalRow[$key] = getRound($totalRow[$key]['addup_pay_total'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
break;
|
|
|
case 'pay_num':
|
|
|
$totalRow[$key] = $totalRow[$key]['pay_num'] ?? 0;
|
|
|
@@ -1239,10 +1236,10 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$totalRow[$key] = $totalRow[$key]['pay_total'] ?? 0;
|
|
|
break;
|
|
|
case 'pay_rate':
|
|
|
- $totalRow[$key] = ToolLogic::getPercent($totalRow[$key]['pay_num'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
+ $totalRow[$key] = getPercent($totalRow[$key]['pay_num'] ?? 0, $totalRow[$key]['reg_total'] ?? 0);
|
|
|
break;
|
|
|
case 'arpu':
|
|
|
- $totalRow[$key] = ToolLogic::getRound($totalRow[$key]['pay_total'] ?? 0, $totalRow[$key]['pay_num'] ?? 0);
|
|
|
+ $totalRow[$key] = getRound($totalRow[$key]['pay_total'] ?? 0, $totalRow[$key]['pay_num'] ?? 0);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -1251,13 +1248,13 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($data && $totalRow) {
|
|
|
switch ($dataType) {
|
|
|
case 'recovery':
|
|
|
- $totalRow['m0'] = ToolLogic::getPercent($pay_total, $totalRow['cost'], 1);
|
|
|
+ $totalRow['m0'] = getPercent($pay_total, $totalRow['cost'], 1);
|
|
|
break;
|
|
|
case 'remount':
|
|
|
- $totalRow['m0'] = ToolLogic::getPercent($pay_amount, $totalRow['cost'], 1);
|
|
|
+ $totalRow['m0'] = getPercent($pay_amount, $totalRow['cost'], 1);
|
|
|
break;
|
|
|
case 'ltv':
|
|
|
- $totalRow['m0'] = ToolLogic::getRound($pay_total, $totalRow['reg_total']);
|
|
|
+ $totalRow['m0'] = getRound($pay_total, $totalRow['reg_total']);
|
|
|
break;
|
|
|
|
|
|
case 'pay_num':
|
|
|
@@ -1267,16 +1264,16 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$totalRow['m0'] = $pay_total;
|
|
|
break;
|
|
|
case 'pay_rate':
|
|
|
- $totalRow['m0'] = ToolLogic::getPercent($pay_num, $totalRow['reg_total']);
|
|
|
+ $totalRow['m0'] = getPercent($pay_num, $totalRow['reg_total']);
|
|
|
break;
|
|
|
case 'arpu':
|
|
|
- $totalRow['m0'] = ToolLogic::getRound($pay_total, $pay_num);
|
|
|
+ $totalRow['m0'] = getRound($pay_total, $pay_num);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
- $totalRow['reg_cost'] = ToolLogic::getRound($totalRow['cost'], $totalRow['reg_total']);
|
|
|
- $list = ToolLogic::arrSort($data, 'tmonth', 'asc');
|
|
|
+ $totalRow['reg_cost'] = getRound($totalRow['cost'], $totalRow['reg_total']);
|
|
|
+ $list = arrSort($data, 'tmonth', 'asc');
|
|
|
}
|
|
|
return [
|
|
|
'data' => array_values($list),
|