229 lines
8.5 KiB
PHP
229 lines
8.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Models\Merchant;
|
|
use App\Services\DateServices;
|
|
use App\Services\DrawMoneyStatisServices;
|
|
use App\Services\MerchantStatisServices;
|
|
use App\Services\OrderStatisServices;
|
|
use App\Services\SystemCommissionStatisServices;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class StatisController extends BaseController
|
|
{
|
|
//
|
|
public function index($type, $method, Request $request)
|
|
{
|
|
|
|
switch ($type) {
|
|
case 'order':
|
|
if (method_exists($this, $method)) {
|
|
return $this->$method($request);
|
|
}
|
|
break;
|
|
|
|
|
|
}
|
|
}
|
|
public function orderIndexStatis2($request)
|
|
{
|
|
$system_commiss = new SystemCommissionStatisServices();
|
|
$data['prev_month_final_commiss'] = $system_commiss->getSum(['month' => 0, 'status' => 1], 'final_money');
|
|
}
|
|
public function orderIndexStatis($request)
|
|
{
|
|
$month = $request->input('month', 0);
|
|
|
|
$order = new OrderStatisServices();
|
|
//月订单支付总额
|
|
$data['month_order_money'] = $order->getSum(['month' => $month], 'order_money');
|
|
//全部订单支付总额
|
|
$data['month_order_all_money'] = $order->getSum([], 'order_money');
|
|
//月成功支付总额,已经支付判断,不判断是否交易成功
|
|
$data['month_order_ok_money'] = $order->getSum(['month' => $month, 'pay_status' => 1], 'pay_money');
|
|
//全部成功支付总额,已经支付判断,不判断是否交易成功
|
|
$data['month_order_ok_all_money'] = $order->getSum(['pay_status' => 1], 'pay_money');
|
|
|
|
//月结算总额
|
|
$data['month_order_payfor_money'] = $order->getSum(['month' => $month, 'pay_status' => 1], 'total_money');
|
|
|
|
|
|
//全部结算总额
|
|
$data['month_order_payfor_all_money'] = $order->getSum(['pay_status' => 1], 'total_money');
|
|
//今日结算
|
|
$today_info = $order->getSumArr(['day' => 0, 'pay_status' => 1], ['total_money', 'final_money']);
|
|
//dd($today_info);
|
|
//今日充值
|
|
$today_pay = $order->getSumArr(['day' => 0, 'pay_status' => 1], ['pay_money']);
|
|
$data['day_pay_money'] = $today_pay['pay_money'] ? $today_pay['pay_money'] : 0;
|
|
// dd($today_info);
|
|
//今日盈利
|
|
$data['day_payfor_money'] = $today_info['total_money'] ? $today_info['total_money'] : 0;
|
|
$data['day_profit_money'] = $today_info['final_money'] ? $today_info['final_money'] : 0;
|
|
//昨天盈利
|
|
$yesterday_info = $order->getSumArr(['day' => -1, 'pay_status' => 1], ['total_money', 'final_money']);
|
|
$data['yesterday_payfor_money'] = $yesterday_info['total_money'] ? $yesterday_info['total_money'] : 0;
|
|
$data['yesterday_profit_money'] = $yesterday_info['final_money'] ? $yesterday_info['final_money'] : 0;
|
|
|
|
//今日提现申请
|
|
$draw = new DrawMoneyStatisServices();
|
|
$data['day_draw_money'] = $draw->getSum(['day' => 0, 'status_in' => [0, 2]], 'draw_money');
|
|
|
|
//提现手续费收入
|
|
$data['day_draw_fee_money'] = $draw->getSum(['statut' => 1], 'fee_money');
|
|
|
|
$data['total_draw_money'] = $draw->getSum(['status_in' => [1]], 'draw_money');
|
|
|
|
|
|
$system_commiss = new SystemCommissionStatisServices();
|
|
|
|
|
|
$system_commiss_month = $system_commiss->getSumArr(['month' => $month, 'status' => 1], ['final_money', 'gateway_money']);
|
|
|
|
$data['prev_month_final_commiss'] = $system_commiss->getSum(['month' => -1, 'status' => 1], 'final_money');
|
|
|
|
$data['month_sys_commiss'] = money_str(sprintf("%.2f", (array_sum($system_commiss_month))));
|
|
$system_commiss_all = $system_commiss->getSumArr(['status' => 1], ['final_money', 'gateway_money']);
|
|
$data['month_sys_all_commiss'] = money_str(sprintf("%.2f", (array_sum($system_commiss_all))));
|
|
//纯收入查询
|
|
$data['month_final_commiss'] = money_str($system_commiss_month['final_money']);
|
|
$data['month_final_all_commiss'] = money_str($system_commiss_all['final_money']);
|
|
//支付宝扣除
|
|
|
|
$data['month_zf_commiss'] = money_str($system_commiss_month['gateway_money']);
|
|
$data['month_zf_all_commiss'] = money_str($system_commiss_all['gateway_money']);
|
|
|
|
|
|
return $this->jsonFormat($data, $request);
|
|
}
|
|
|
|
//商户信息
|
|
public function merchantStatis($request)
|
|
{
|
|
//商户信息
|
|
$merchant = new MerchantStatisServices();
|
|
$data['merchant_proxy_number'] = $merchant->getNumber(['level' => 2]);
|
|
$data['merchant_gudong_number'] = $merchant->getNumber(['level' => 1]);
|
|
//全部
|
|
$data['merchant_number'] = $merchant->getNumber(['level' => 3]);
|
|
//等待审核
|
|
$data['merchant_wait_number'] = $merchant->getNumber(['check_status' => 2]);
|
|
return $this->jsonFormat($data, $request);
|
|
}
|
|
|
|
//提现申请
|
|
public function drawStatis($request)
|
|
{
|
|
//商户信息
|
|
$draw = new DrawMoneyStatisServices();
|
|
$data['draw_number'] = $draw->getNumber(['status' => 0]);
|
|
//全部
|
|
|
|
return $this->jsonFormat($data, $request);
|
|
}
|
|
|
|
//活跃订单商户
|
|
public function topOrderNumber($request)
|
|
{
|
|
$data = $request->all();
|
|
$data['pay_status'] = 1;
|
|
$order = new OrderStatisServices();
|
|
$total = $order->topMerchantNumber($data);
|
|
|
|
return $this->jsonFormat($total, $request);
|
|
|
|
}
|
|
|
|
//失败率订单商户
|
|
public function successFailNumber($request)
|
|
{
|
|
$date = DateServices::today();
|
|
|
|
$data = DB::select("select t.merchant_name,t.merchant_id,t.total,t.created_at ,t.order_money,
|
|
(select sum(p.order_money) from orders p where p.merchant_id=t.merchant_id and pay_status='1' and created_at>='" . $date['start_at'] . "' and created_at <='" . $date['end_at'] . "') as ok_money,
|
|
(select count(p.pay_status) from orders p where p.merchant_id=t.merchant_id and pay_status='1' and created_at>='" . $date['start_at'] . "' and created_at <='" . $date['end_at'] . "')as ok_total from
|
|
(select count(pay_status) as total,sum(order_money)as order_money,merchant_id,merchant_name,created_at from orders where created_at>='" . $date['start_at'] . "' and created_at <='" . $date['end_at'] . "' group by merchant_id) t ORDER BY order_money desc");
|
|
|
|
return $this->jsonFormat($data, $request);
|
|
|
|
}
|
|
|
|
//订单量+资金
|
|
public function dayOrderNumber($request)
|
|
{
|
|
$data = $request->all();
|
|
$order = new OrderStatisServices();
|
|
|
|
|
|
$time = $request->input('timeDay');
|
|
$time = str_replace('~', ',', $time);
|
|
$time = explode(",", $time);
|
|
$start_at = isset($time[0]) ? $time[0] : '';
|
|
$end_at = isset($time[1]) ? $time[1] : '';
|
|
|
|
|
|
if ($start_at) {
|
|
|
|
$days = DateServices::diffDay($end_at, $start_at);
|
|
|
|
for ($i = 0; $i <= $days; $i++) {
|
|
$put['x'][] = DateServices::incrDay($start_at, $i);
|
|
}
|
|
}
|
|
$put['order'] = $this->dayOrderNumberDoing($put['x'], $order->dayOrderNumber($data));
|
|
|
|
$put['order_pay'] = $this->dayOrderNumberDoing($put['x'], $order->dayOrderNumber($data + ['pay_status' => 1]));
|
|
|
|
$put['order_ok'] = $this->dayOrderNumberDoing($put['x'], $order->dayOrderNumber($data + ['status' => 1]));
|
|
//$put['order_fail']=$this->dayOrderNumberDoing($put['x'],$order->dayOrderNumber($data+['pay_status'=>0]));
|
|
//dd($put);
|
|
|
|
return $this->jsonFormat($put, $request);
|
|
}
|
|
|
|
public function dayOrderNumberDoing($days, $data)
|
|
{
|
|
|
|
$arr = [];
|
|
|
|
foreach ($days as $k => $v) {
|
|
$arr['number'][$v] = 0;
|
|
$arr['order_money'][$v] = 0;
|
|
$arr['pay_money'][$v] = 0;
|
|
$arr['total_money'][$v] = 0;
|
|
|
|
}
|
|
if (count($data) >= 0) {
|
|
|
|
|
|
foreach ($data as $k => $v) {
|
|
|
|
|
|
if (in_array($v['day'], $days)) {
|
|
$arr['number'][$v['day']] = $v['number'];
|
|
$arr['order_money'][$v['day']] = $v['order_money'];
|
|
$arr['pay_money'][$v['day']] = $v['pay_money'];
|
|
$arr['total_money'][$v['day']] = $v['total_money'];
|
|
}
|
|
}
|
|
}
|
|
|
|
$narr['detail'] = $data;
|
|
$narr['echart'] = $arr;
|
|
return $narr;
|
|
}
|
|
|
|
public function jsonFormat($msg, $request)
|
|
{
|
|
if ($request->ajax()) {
|
|
return response()->json(['error' => 0, 'data' => $msg]);
|
|
}
|
|
return (['error' => 0, 'data' => $msg]);
|
|
}
|
|
|
|
|
|
}
|