|
|
@@ -837,6 +837,9 @@ class AnalyseLogic extends BaseLogic
|
|
|
$data = $this->getPaySuccessRateByDay($whereRaw);
|
|
|
// 添加对比数据
|
|
|
$data['comparison'] = $this->getDayComparisonFromPaySuccessRate($params);
|
|
|
+ // 添加支付渠道下单比例和数量
|
|
|
+ $data['channelData'] = $this->getChannelPaySuccessRate($params);
|
|
|
+
|
|
|
return $data;
|
|
|
} elseif ($type == 'week') {
|
|
|
$data = $this->getPaySuccessRateByWeek($whereRaw);
|
|
|
@@ -848,6 +851,14 @@ class AnalyseLogic extends BaseLogic
|
|
|
return [];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取支付渠道下单比例和数量
|
|
|
+ */
|
|
|
+ private function getChannelPaySuccessRate($params)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 从支付成功率接口获取日对比数据(今日vs昨日)
|
|
|
@@ -964,6 +975,11 @@ class AnalyseLogic extends BaseLogic
|
|
|
|
|
|
// 获取当前周期和上一周期的数据
|
|
|
$currentData = $this->getPayDataByTimeRange($whereRaw, $currentStartTime, $currentEndTime);
|
|
|
+
|
|
|
+
|
|
|
+ print_r($currentData);
|
|
|
+
|
|
|
+
|
|
|
$lastData = $this->getPayDataByTimeRange($whereRaw, $lastStartTime, $lastEndTime);
|
|
|
|
|
|
// 初始化24小时数据
|
|
|
@@ -988,6 +1004,9 @@ class AnalyseLogic extends BaseLogic
|
|
|
// 计算成功率变化
|
|
|
$successRateChange = $this->calculateRateChange($currentRateArr, $lastRateArr);
|
|
|
|
|
|
+ // 转换支付渠道下单比例和数量
|
|
|
+ $channelData = $this->trandformListColumn($currentData['channelData'],['pay_channel']);
|
|
|
+
|
|
|
// 生成表格数据
|
|
|
$tableData = $this->generateDayTableData(
|
|
|
$currentOrderMap,
|
|
|
@@ -996,7 +1015,7 @@ class AnalyseLogic extends BaseLogic
|
|
|
$lastOrderMap,
|
|
|
$lastPayMap,
|
|
|
$lastRateArr,
|
|
|
- $successRateChange
|
|
|
+ $successRateChange,
|
|
|
);
|
|
|
|
|
|
$currentOrderNum = array_sum($currentOrderMap);
|
|
|
@@ -1011,7 +1030,8 @@ class AnalyseLogic extends BaseLogic
|
|
|
'paySuccessRate' => $paySuccessRate,
|
|
|
'xAxisData' => $xAxisData,
|
|
|
'successRateChange' => $successRateChange,
|
|
|
- 'data' => $tableData
|
|
|
+ 'data' => $tableData,
|
|
|
+ 'currentChannelData' => $channelData,
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -1083,32 +1103,78 @@ class AnalyseLogic extends BaseLogic
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取指定时间范围内的订单和支付数据
|
|
|
+ * 获取年表名称
|
|
|
+ */
|
|
|
+ private function getYearTableName($timestamp)
|
|
|
+ {
|
|
|
+ return 'sdk_order_' . date('Y', $timestamp);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取指定时间范围内的订单和支付数据和渠道支付下单数据
|
|
|
*/
|
|
|
private function getPayDataByTimeRange($whereRaw, $startTime, $endTime)
|
|
|
{
|
|
|
$timeWhereRaw = $whereRaw . " AND pay_time BETWEEN '{$startTime}' AND '{$endTime}'";
|
|
|
-
|
|
|
- // 总下单量
|
|
|
- $orderData = Db::connect('db_game_log')->query("
|
|
|
- SELECT Count(*) as order_num, pay_time
|
|
|
- FROM sdk_order_success
|
|
|
- WHERE {$timeWhereRaw}
|
|
|
- GROUP BY pay_time
|
|
|
- ");
|
|
|
-
|
|
|
- // 总支付量
|
|
|
- $payData = Db::connect('db_game_log')->query("
|
|
|
- SELECT Count(*) as pay_num, pay_time
|
|
|
- FROM sdk_order_success
|
|
|
- WHERE {$timeWhereRaw} AND sync_status = 1
|
|
|
- GROUP BY pay_time
|
|
|
- ");
|
|
|
+
|
|
|
+ // 获取时间范围内的所有年份
|
|
|
+ $startYear = date('Y', $startTime);
|
|
|
+ $endYear = date('Y', $endTime);
|
|
|
+ $years = range($startYear, $endYear);
|
|
|
+
|
|
|
+ $orderData = [];
|
|
|
+ $payData = [];
|
|
|
+ $channelData = [];
|
|
|
+
|
|
|
+ // 遍历每个年份的表
|
|
|
+ foreach ($years as $year) {
|
|
|
+ $tableName = 'sdk_order_' . $year;
|
|
|
+
|
|
|
+ // 检查表是否存在
|
|
|
+ $tableExists = Db::connect('db_game_log')->query("SHOW TABLES LIKE '{$tableName}'");
|
|
|
+ if (empty($tableExists)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 总下单量
|
|
|
+ $yearOrderData = Db::connect('db_game_log')->query("
|
|
|
+ SELECT Count(*) as order_num, pay_time
|
|
|
+ FROM {$tableName}
|
|
|
+ WHERE {$timeWhereRaw}
|
|
|
+ GROUP BY pay_time
|
|
|
+ ");
|
|
|
+
|
|
|
+ // 总支付量
|
|
|
+ $yearPayData = Db::connect('db_game_log')->query("
|
|
|
+ SELECT Count(*) as pay_num, pay_time
|
|
|
+ FROM {$tableName}
|
|
|
+ WHERE {$timeWhereRaw} AND sync_status = 1
|
|
|
+ GROUP BY pay_time
|
|
|
+ ");
|
|
|
+
|
|
|
+ // 支付渠道下单比例和数量
|
|
|
+ $yearChannelData = Db::connect('db_game_log')->query("
|
|
|
+ SELECT pay_channel_id, COUNT(*) as pay_num
|
|
|
+ FROM {$tableName}
|
|
|
+ WHERE {$timeWhereRaw} AND sync_status = 1
|
|
|
+ GROUP BY pay_channel_id
|
|
|
+ ");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 合并数据
|
|
|
+ $orderData = array_merge($orderData, $yearOrderData);
|
|
|
+ $payData = array_merge($payData, $yearPayData);
|
|
|
+ $channelData = array_merge($channelData, $yearChannelData);
|
|
|
+ }
|
|
|
|
|
|
return [
|
|
|
'orderData' => $orderData,
|
|
|
- 'payData' => $payData
|
|
|
+ 'payData' => $payData,
|
|
|
+ 'channelData' => $channelData
|
|
|
];
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -1267,6 +1333,7 @@ class AnalyseLogic extends BaseLogic
|
|
|
$lastPayMap,
|
|
|
$lastRateArr,
|
|
|
$successRateChange
|
|
|
+
|
|
|
) {
|
|
|
$tableData = [];
|
|
|
$index = 0;
|