|
@@ -825,4 +825,165 @@ class AnalyseLogic extends BaseLogic
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 支付成功率
|
|
|
|
|
+ public function getPaySuccessRate($where)
|
|
|
|
|
+ {
|
|
|
|
|
+ $params = $this->searchByAuth($where);
|
|
|
|
|
+
|
|
|
|
|
+ $whereRaw = $this->getCommonWhereRaw($params);
|
|
|
|
|
+
|
|
|
|
|
+ $type = $params['type'] ?? 'day';
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 对比今日和昨日的支付成功率,
|
|
|
|
|
+ if($type == 'day'){
|
|
|
|
|
+ $today = date('Y-m-d');
|
|
|
|
|
+ $yesterday = date('Y-m-d', strtotime('-1 day'));
|
|
|
|
|
+ $todayWhereRaw = $whereRaw . " AND pay_time BETWEEN '".strtotime($today . " 00:00:00")."' AND '".strtotime($today . " 23:59:59")."'";
|
|
|
|
|
+ $yesterdayWhereRaw = $whereRaw . " AND pay_time BETWEEN '".strtotime($yesterday . " 00:00:00")."' AND '".strtotime($yesterday . " 23:59:59")."'";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 今日总下单量
|
|
|
|
|
+ $todayOrderNumData = Db::connect('db_game_log')->query("
|
|
|
|
|
+ SELECT Count(*) as order_num, pay_time
|
|
|
|
|
+ FROM sdk_order_success
|
|
|
|
|
+ WHERE {$todayWhereRaw}
|
|
|
|
|
+ group by pay_time
|
|
|
|
|
+ ");
|
|
|
|
|
+
|
|
|
|
|
+ // 今日总支付量
|
|
|
|
|
+ $todayPaySuccessData = Db::connect('db_game_log')->query("
|
|
|
|
|
+ SELECT Count(*) as pay_num, pay_time
|
|
|
|
|
+ FROM sdk_order_success
|
|
|
|
|
+ WHERE {$todayWhereRaw} AND sync_status = 1
|
|
|
|
|
+ group by pay_time
|
|
|
|
|
+ ");
|
|
|
|
|
+
|
|
|
|
|
+ // 初始化24小时的数组(0-23)
|
|
|
|
|
+ $todayOrderNumDataMap = [];
|
|
|
|
|
+ $todayPaySuccessDataMap = [];
|
|
|
|
|
+ for ($hour = 0; $hour < 24; $hour++) {
|
|
|
|
|
+ $hourKey = str_pad($hour, 2, '0', STR_PAD_LEFT);
|
|
|
|
|
+ $todayOrderNumDataMap[$hourKey] = 0;
|
|
|
|
|
+ $todayPaySuccessDataMap[$hourKey] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 新总下单量按小时分组
|
|
|
|
|
+ foreach($todayOrderNumData as $item){
|
|
|
|
|
+ $hourKey = date('H', $item['pay_time']);
|
|
|
|
|
+ $todayOrderNumDataMap[$hourKey] = $item['order_num'];
|
|
|
|
|
+ }
|
|
|
|
|
+ // 新总支付量按小时分组
|
|
|
|
|
+ foreach($todayPaySuccessData as $item){
|
|
|
|
|
+ $hourKey = date('H', $item['pay_time']);
|
|
|
|
|
+ $todayPaySuccessDataMap[$hourKey] = $item['pay_num'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 计算今日支付成功率
|
|
|
|
|
+ $todayPaySuccessRateArr = [];
|
|
|
|
|
+ foreach($todayOrderNumDataMap as $key => $value){
|
|
|
|
|
+ $paySuccessNum = $todayPaySuccessDataMap[$key] ?? 0;
|
|
|
|
|
+ $todayPaySuccessRateArr[] = $value > 0 ? getRound($paySuccessNum, $value) : 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 昨日总下单量
|
|
|
|
|
+ $yesterdayOrderNumData = Db::connect('db_game_log')->query("
|
|
|
|
|
+ SELECT Count(*) as order_num, pay_time
|
|
|
|
|
+ FROM sdk_order_success
|
|
|
|
|
+ WHERE {$yesterdayWhereRaw}
|
|
|
|
|
+ group by pay_time
|
|
|
|
|
+ ");
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 昨日总支付量
|
|
|
|
|
+ $yesterdayPaySuccessData = Db::connect('db_game_log')->query("
|
|
|
|
|
+ SELECT Count(*) as pay_num, pay_time
|
|
|
|
|
+ FROM sdk_order_success
|
|
|
|
|
+ WHERE {$yesterdayWhereRaw} AND sync_status = 1
|
|
|
|
|
+ group by pay_time
|
|
|
|
|
+ ");
|
|
|
|
|
+
|
|
|
|
|
+ // 初始化24小时的数组(0-23)
|
|
|
|
|
+ $yesterdayOrderNumDataMap = [];
|
|
|
|
|
+ $yesterdayPaySuccessDataMap = [];
|
|
|
|
|
+ for ($hour = 0; $hour < 24; $hour++) {
|
|
|
|
|
+ $hourKey = str_pad($hour, 2, '0', STR_PAD_LEFT);
|
|
|
|
|
+ $yesterdayOrderNumDataMap[$hourKey] = 0;
|
|
|
|
|
+ $yesterdayPaySuccessDataMap[$hourKey] = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 昨日总下单量按小时分组
|
|
|
|
|
+ foreach($yesterdayOrderNumData as $item){
|
|
|
|
|
+ $hourKey = date('H', $item['pay_time']);
|
|
|
|
|
+ $yesterdayOrderNumDataMap[$hourKey] = $item['order_num'];
|
|
|
|
|
+ }
|
|
|
|
|
+ // 昨日总支付量按小时分组
|
|
|
|
|
+ foreach($yesterdayPaySuccessData as $item){
|
|
|
|
|
+ $hourKey = date('H', $item['pay_time']);
|
|
|
|
|
+ $yesterdayPaySuccessDataMap[$hourKey] = $item['pay_num'];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 计算昨日支付成功率
|
|
|
|
|
+ $yesterdayPaySuccessRateArr = [];
|
|
|
|
|
+ foreach($yesterdayOrderNumDataMap as $key => $value){
|
|
|
|
|
+ $paySuccessNum = $yesterdayPaySuccessDataMap[$key] ?? 0;
|
|
|
|
|
+ $yesterdayPaySuccessRateArr[] = $value > 0 ? getRound($paySuccessNum, $value) : 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 今日总下单量
|
|
|
|
|
+ $todayOrderNum = array_sum($todayOrderNumDataMap);
|
|
|
|
|
+ // 今日支付成功量
|
|
|
|
|
+ $todayPaySuccessNum = array_sum($todayPaySuccessDataMap);
|
|
|
|
|
+ // 今日支付成功率
|
|
|
|
|
+ $paySuccessRate = getRound($todayPaySuccessNum, $todayOrderNum);
|
|
|
|
|
+ // xAxis.data
|
|
|
|
|
+ $xAxisData = [];
|
|
|
|
|
+ for ($hour = 0; $hour < 24; $hour++) {
|
|
|
|
|
+ $xAxisData[] = str_pad($hour, 2, '0', STR_PAD_LEFT) . ":00-" . str_pad($hour + 1, 2, '0', STR_PAD_LEFT) . ":00";
|
|
|
|
|
+ if($hour == 23){
|
|
|
|
|
+ $xAxisData[] = str_pad($hour, 2, '0', STR_PAD_LEFT) . ":00-00:00";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 成功率变化
|
|
|
|
|
+ $successRateChange = [];
|
|
|
|
|
+ for ($hour = 0; $hour < 24; $hour++) {
|
|
|
|
|
+ $successRateChange[] = $todayPaySuccessRateArr[$hour] - $yesterdayPaySuccessRateArr[$hour];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //表格数据
|
|
|
|
|
+ $tableData = [];
|
|
|
|
|
+ for ($hour = 0; $hour < 24; $hour++) {
|
|
|
|
|
+ $hourKey = str_pad($hour, 2, '0', STR_PAD_LEFT);
|
|
|
|
|
+ $tableData[] = [
|
|
|
|
|
+ 'time'=>$hourKey . ":00-" . str_pad($hour + 1, 2, '0', STR_PAD_LEFT) . ":00",
|
|
|
|
|
+ 'todayOrderNum'=>$todayOrderNumDataMap[$hourKey],
|
|
|
|
|
+ 'todayPayNum'=>$todayPaySuccessDataMap[$hourKey],
|
|
|
|
|
+ 'todayPaySuccessRate'=>$todayPaySuccessRateArr[$hour],
|
|
|
|
|
+ 'yesterdayOrderNum'=>$yesterdayOrderNumDataMap[$hourKey],
|
|
|
|
|
+ 'yesterdayPayNum'=>$yesterdayPaySuccessDataMap[$hourKey],
|
|
|
|
|
+ 'yesterdayPaySuccessRate'=>$yesterdayPaySuccessRateArr[$hour],
|
|
|
|
|
+ 'successRateChange'=>$successRateChange[$hour],
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return [
|
|
|
|
|
+ 'PaySuccessRateArr' => $todayPaySuccessRateArr,
|
|
|
|
|
+ 'OldPaySuccessRateArr' => $yesterdayPaySuccessRateArr,
|
|
|
|
|
+ 'orderNum'=>$todayOrderNum,
|
|
|
|
|
+ 'successNum'=>$todayPaySuccessNum,
|
|
|
|
|
+ 'paySuccessRate'=>$paySuccessRate,
|
|
|
|
|
+ 'xAxisData'=>$xAxisData,
|
|
|
|
|
+ 'successRateChange'=>$successRateChange,
|
|
|
|
|
+ 'tableData'=>$tableData
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|