|
@@ -406,16 +406,9 @@ class RechargeController extends Controller
|
|
|
'amountSort' => $amountSort,
|
|
'amountSort' => $amountSort,
|
|
|
'request' => $request,
|
|
'request' => $request,
|
|
|
'payMethod' => $payMethod,
|
|
'payMethod' => $payMethod,
|
|
|
- 'payMethods' => [
|
|
|
|
|
- 1 => 'cashapp',
|
|
|
|
|
- 2 => 'paypal',
|
|
|
|
|
- 4 => 'applepay',
|
|
|
|
|
- 8 => 'googlepay',
|
|
|
|
|
- 16 => 'btcpay',
|
|
|
|
|
- 32 => 'eth',
|
|
|
|
|
- 1024 => 'usdt',
|
|
|
|
|
- 2048 => 'usdc',
|
|
|
|
|
- ]
|
|
|
|
|
|
|
+ 'payMethods' => array_map(function ($item) {
|
|
|
|
|
+ return $item['key'];
|
|
|
|
|
+ }, config('payment.methods'))
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -767,6 +760,107 @@ class RechargeController extends Controller
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 支付通道成功率(近4日)
|
|
|
|
|
+ public function payChannelRate(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $payMethodsMap = array_map(function ($item) {
|
|
|
|
|
+ return $item['name'];
|
|
|
|
|
+ }, config('payment.methods'));
|
|
|
|
|
+
|
|
|
|
|
+ $today = Carbon::today();
|
|
|
|
|
+ $dates = [];
|
|
|
|
|
+ $dateLabels = [];
|
|
|
|
|
+
|
|
|
|
|
+ // 近4日: 今日, 昨日, 今日-2, 今日-3
|
|
|
|
|
+ for ($i = 0; $i < 4; $i++) {
|
|
|
|
|
+ $d = $today->copy()->subDays($i);
|
|
|
|
|
+ $dates[] = $d->format('Y-m-d');
|
|
|
|
|
+ if ($i == 0) {
|
|
|
|
|
+ $dateLabels[] = '今日';
|
|
|
|
|
+ } elseif ($i == 1) {
|
|
|
|
|
+ $dateLabels[] = '昨日';
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $dateLabels[] = $d->format('Y-m-d') . '(今日-' . $i . '天)';
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $rows = DB::connection('write')->table(DB::raw('agent.dbo.[order] as o WITH (NOLOCK)'))
|
|
|
|
|
+ ->where('o.created_at', '>=', $dates[3] . ' 00:00:00')
|
|
|
|
|
+ ->where('o.created_at', '<=', $dates[0] . ' 23:59:59')
|
|
|
|
|
+ ->selectRaw("
|
|
|
|
|
+ o.payment_code,
|
|
|
|
|
+ o.order_title,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[0]}' THEN 1 ELSE 0 END) as d0_total,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[0]}' AND o.pay_status = 1 THEN 1 ELSE 0 END) as d0_success,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[1]}' THEN 1 ELSE 0 END) as d1_total,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[1]}' AND o.pay_status = 1 THEN 1 ELSE 0 END) as d1_success,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[2]}' THEN 1 ELSE 0 END) as d2_total,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[2]}' AND o.pay_status = 1 THEN 1 ELSE 0 END) as d2_success,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[3]}' THEN 1 ELSE 0 END) as d3_total,
|
|
|
|
|
+ SUM(CASE WHEN CONVERT(date, o.created_at) = '{$dates[3]}' AND o.pay_status = 1 THEN 1 ELSE 0 END) as d3_success
|
|
|
|
|
+ ")
|
|
|
|
|
+ ->groupBy('o.payment_code', 'o.order_title')
|
|
|
|
|
+ ->orderBy('o.payment_code')
|
|
|
|
|
+ ->orderBy('o.order_title')
|
|
|
|
|
+ ->get();
|
|
|
|
|
+
|
|
|
|
|
+ // 从 admin_configs 取所有支付渠道(type=pay),config_key 即为 payment_code
|
|
|
|
|
+ $paymentCodes = DB::connection('write')
|
|
|
|
|
+ ->table(DB::raw('agent.dbo.admin_configs WITH (NOLOCK)'))
|
|
|
|
|
+ ->where('type', 'pay')
|
|
|
|
|
+ ->where('config_key', '<>', '')
|
|
|
|
|
+ ->pluck('config_key')
|
|
|
|
|
+ ->unique()
|
|
|
|
|
+ ->values()
|
|
|
|
|
+ ->toArray();
|
|
|
|
|
+
|
|
|
|
|
+ // 将订单数据按 [payment_code][order_title] 索引
|
|
|
|
|
+ $dataIndex = [];
|
|
|
|
|
+ foreach ($rows as $row) {
|
|
|
|
|
+ $code = $row->payment_code;
|
|
|
|
|
+ $title = (int)$row->order_title;
|
|
|
|
|
+ $dataIndex[$code][$title] = $row;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $list = [];
|
|
|
|
|
+ foreach ($paymentCodes as $code) {
|
|
|
|
|
+ foreach ($payMethodsMap as $title => $name) {
|
|
|
|
|
+ $row = $dataIndex[$code][$title] ?? null;
|
|
|
|
|
+ $channelName = $code . ' ' . $name;
|
|
|
|
|
+
|
|
|
|
|
+ $days = [];
|
|
|
|
|
+ for ($i = 0; $i < 4; $i++) {
|
|
|
|
|
+ if ($row) {
|
|
|
|
|
+ $total = (int)$row->{'d' . $i . '_total'};
|
|
|
|
|
+ $success = (int)$row->{'d' . $i . '_success'};
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $total = 0;
|
|
|
|
|
+ $success = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ $rate = $total > 0 ? round($success / $total * 100, 1) : 0;
|
|
|
|
|
+ $days[] = [
|
|
|
|
|
+ 'total' => $total,
|
|
|
|
|
+ 'success' => $success,
|
|
|
|
|
+ 'rate' => $rate,
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $list[] = [
|
|
|
|
|
+ 'payment_code' => $code,
|
|
|
|
|
+ 'order_title' => $title,
|
|
|
|
|
+ 'channel_name' => $channelName,
|
|
|
|
|
+ 'days' => $days,
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return view('admin.recharge.pay_channel_rate', [
|
|
|
|
|
+ 'list' => $list,
|
|
|
|
|
+ 'dateLabels' => $dateLabels,
|
|
|
|
|
+ 'dates' => $dates,
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 补单
|
|
// 补单
|
|
|
public function supplement(Request $request, $id)
|
|
public function supplement(Request $request, $id)
|
|
|
{
|
|
{
|
|
@@ -1142,25 +1236,12 @@ class RechargeController extends Controller
|
|
|
|
|
|
|
|
// 构建支付方式数组
|
|
// 构建支付方式数组
|
|
|
$gearData = [];
|
|
$gearData = [];
|
|
|
- $payMethodsMap = [
|
|
|
|
|
- 1 => 'cashapp',
|
|
|
|
|
- 2 => 'paypal',
|
|
|
|
|
- 4 => 'applepay',
|
|
|
|
|
- 8 => 'googlepay',
|
|
|
|
|
- 16 => 'btcpay',
|
|
|
|
|
- 32 => 'eth',
|
|
|
|
|
- 64 => 'usdt-trc20',
|
|
|
|
|
- 128 => 'usdt-erc20',
|
|
|
|
|
- 256 => 'usdc-trc20',
|
|
|
|
|
- 512 => 'usdc-erc20',
|
|
|
|
|
- 1024 => 'usdt',
|
|
|
|
|
- 2048 => 'usdc',
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ $payMethodsMap = config('payment.methods');
|
|
|
|
|
|
|
|
- foreach ($payMethodsMap as $value => $name) {
|
|
|
|
|
|
|
+ foreach ($payMethodsMap as $value => $item) {
|
|
|
if ($pay_methods & $value) {
|
|
if ($pay_methods & $value) {
|
|
|
$gearData[] = [
|
|
$gearData[] = [
|
|
|
- 'name' => $name,
|
|
|
|
|
|
|
+ 'name' => $item['key'],
|
|
|
'value' => $value,
|
|
'value' => $value,
|
|
|
'status' => 1
|
|
'status' => 1
|
|
|
];
|
|
];
|