소스 검색

Merge branch 'master' of ssh://git.9026.com:2212/swdz-WangHaijun/BaoMa into develop

Mike 4 년 전
부모
커밋
25db99a530

+ 172 - 0
app/Admin/Controllers/DataCenter/FinancialOrderChart.php

xqd
@@ -0,0 +1,172 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 陈武杰
+ * Date: 2021/1/15
+ * Time: 15:57
+ */
+
+namespace App\Admin\Controllers\DataCenter;
+use Encore\Admin\Widgets\Box;
+use Encore\Admin\Widgets\Echarts\Echarts;
+use Encore\Admin\Widgets\Form;
+use Encore\Admin\Layout\Row;
+use Encore\Admin\Layout\Column;
+use Encore\Admin\Widgets\Collapse;
+use App\Models\Order;
+
+
+class FinancialOrderChart
+{
+    public  function chart(Row $row)
+    {
+        $row->column(12,function (Column $column){
+
+            $form = new Form();
+            $form->disableReset();
+            $form->disableSubmit();
+            $ry = request('year');
+            $rm = request('month');
+            //是否是初始化
+            $isb = request('b');
+//            dd($isb);
+            $year = range(2000,2099);
+            $month = range(1,12);
+            $nowYear = date('Y');
+            $nowMonth = date('m');
+
+            //默认数据获取方式 1默认选择当前月份 2根据时间
+            $type = 2;
+            if(empty($ry) && empty($rm)){
+                $type = 1;
+            }
+
+            //判断是否是初始化
+            if(empty($isb)){
+                $ry = $nowYear;
+                $rm = $nowMonth;
+            } else {
+                $type = 2;
+            }
+            //生成对应年月的键名的数组
+            foreach ($year as $v){
+                $realYear[$v]=$v;
+            }
+            foreach ($month as $v){
+                $realMonth[$v]=$v;
+            }
+            //获取数据 传入参数 真实的年、月、和类型 1默认选择当前月份 2根据时间
+            $chartData =self::getData($ry,$rm,$type);
+
+            $filter_content = new Row(function (Column $col)use ($form,$type,$realYear,$ry,$rm,$realMonth){
+                $col->row(function (Row $row)use ($form,$type,$realYear,$ry,$rm,$realMonth){
+                    $form->method('get');
+                    $form->select('year','年份')->options($realYear)->default($ry);
+                    $form->select('month','月份')->options($realMonth)->default($rm);
+                    $form->hidden('b')->default(1);
+                    $form->html("<button type='submit'  class='btn btn-success'>筛选</button><a style='margin-left: 20px;' href='/admin/financial_order_overview'  class='btn btn-danger'>重置</a>");
+                    $form->action('/admin/financial_order_overview');
+                    $row->column(6,$form->render());
+                });
+            });
+            $col = new Collapse();
+            $col->add('日期筛选',$filter_content->render());
+
+            $column->append($col->render());
+            $column->row(function (Row $row)use ($chartData){
+                $row->column(12,function (Column $column)use ($chartData){
+                    $echarts = (new Echarts('订单走势图', '','user_change'))
+                        ->setData($chartData['d'])
+                        ->bindLegend($chartData['h'])->setShowToolbox(true);
+                    return $column->append(new  Box('',$echarts));
+                });
+            });
+        });
+    }
+
+    public function getData($year,$month,$type)
+    {
+
+        //type 1默认选择当前月份 2根据时间+
+        $month >10??$month = '0'.$month;
+
+        if($type == 1){
+            //查找天
+
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m-%d") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('payment_status',2)
+                ->where('created_at', '>=', $year.'-'.$month)
+                ->where('created_at', '<', $year.'-'.($month+1))
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+//            dd($data);
+
+            $data = self::getFomateData($data,3);
+
+            return $data;
+        }
+
+        if(empty($year) && empty($month)){
+            //查找年
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%Y") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('payment_status',2)
+                ->where('created_at', '>', '2000-')
+                ->where('created_at', '<', '2099-')
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,1);
+            return $data;
+        }
+
+        if($year && $month){
+            //查找天
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m-%d") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('payment_status',2)
+                ->where('created_at', '>', $year.'-'.$month)
+                ->where('created_at', '<', $year.'-'.($month+1))
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,3);
+
+            return $data;
+
+        }
+
+        if($year){
+            //查找月
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('payment_status',2)
+                ->where('created_at', '>=', $year.'-')
+                ->where('created_at', '<', ($year+1).'-')
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,2);
+            return $data;
+        }
+        return self::getFomateData([],3);
+
+    }
+
+    public static function getFomateData($data,$type)
+    {
+        $typeArr = [1=>'年',2=>'月',3=>'日'];
+        $chartData['d'] = [];
+        foreach ($data as $v){
+            $chartData['d'][] = ['day'=>$v['day'].$typeArr[$type],'sum'=>$v['sum']/100];
+        }
+        $chartData['h'] = ['day'=>$typeArr[$type],'sum'=>'订单金额'];
+        return $chartData;
+    }
+}

+ 61 - 0
app/Admin/Controllers/DataCenter/FinancialOrderOverview.php

xqd
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 陈武杰
+ * Date: 2021/1/13
+ * Time: 17:34
+ */
+
+namespace App\Admin\Controllers\DataCenter;
+use App\Admin\Controllers\Chart\OrderChart;
+use App\Admin\Controllers\Sta;
+use App\Http\Controllers\Controller;
+use Encore\Admin\Controllers\Dashboard;
+use Encore\Admin\Layout\Column;
+use Encore\Admin\Layout\Content;
+use Encore\Admin\Layout\Row;
+use Encore\Admin\Widgets\InfoBox;
+
+
+class FinancialOrderOverview
+{
+    public function index(Content $content)
+    {
+        return $content
+            ->title('欢迎进入后台管理系统')
+            ->description('后台数据中心')
+            ->row('<h1 text-align="center">订单走势</h1>')
+            ->row(function (Row $row) {
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('今日支付金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getTodayPay()));
+                });
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('昨日支付金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getYesterdayPay()));
+                });
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('近七日支付金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getSevenDayPay()));
+                });
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('近三十日支付金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getOneMonthPay()));
+                });
+            })
+            ->row(function (Row $row){
+                (new FinancialOrderChart())->chart($row);
+            });
+    }
+
+}
+/**
+ * 消息框
+ * @param $name
+ * @param $icon
+ * @param $link
+ * @param $color
+ * @param $info
+ * @return string HTML
+ */
+
+function infoBox($name, $icon, $link, $color, $info)
+{
+    return (new InfoBox($name, $icon, $color, $link, $info))->render();
+}

+ 72 - 0
app/Admin/Controllers/DataCenter/FinancialOverview.php

xqd
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 陈武杰
+ * Date: 2021/1/13
+ * Time: 17:34
+ */
+
+namespace App\Admin\Controllers\DataCenter;
+use App\Admin\Controllers\Chart\OrderChart;
+use App\Admin\Controllers\Sta;
+use App\Http\Controllers\Controller;
+use Encore\Admin\Controllers\Dashboard;
+use Encore\Admin\Layout\Column;
+use Encore\Admin\Layout\Content;
+use Encore\Admin\Layout\Row;
+use Encore\Admin\Widgets\InfoBox;
+
+
+class FinancialOverview
+{
+    public function index(Content $content)
+    {
+        return $content
+            ->title('欢迎进入后台管理系统')
+            ->description('后台数据中心')
+            ->row('<h1 text-align="center">财务概况</h1>')
+            ->row(function (Row $row) {
+                // 产品类型(1.电话咨询 2.图文咨询 3.门诊预约 4.疫苗接种预约 5.儿保预约 6.服务包 7.充值)
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('收入总金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getTotalIncome()));
+                });
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('用户充值总金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getTotalRecharge()));
+                });
+                $row->column(3, function (Column $column) {
+                    $column->append(infoBox('用户总余额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getTotalUserBalance()));
+                });
+            })
+            ->row('<h1 text-align="center">充值记录</h1>')
+            ->row(function (Row $row){
+                $row->column(3,function (Column $column){
+                    $column->append(infoBox('当日充值金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getTodayReCharge()));
+                });
+                $row->column(3,function (Column $column){
+                    $column->append(infoBox('近七日充值金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getSevenDayReCharge()));
+                });
+                $row->column(3,function (Column $column){
+                    $column->append(infoBox('近三十日充值金额', 'dropbox', '/admin/deliver?status=1', 'green', FinancialSta::getOneMonthReCharge()));
+                });
+            })
+            ->row(function (Row $row){
+                (new FinancialRechargeChart())->chart($row);
+            })
+            ;
+    }
+
+}
+/**
+ * 消息框
+ * @param $name
+ * @param $icon
+ * @param $link
+ * @param $color
+ * @param $info
+ * @return string HTML
+ */
+
+function infoBox($name, $icon, $link, $color, $info)
+{
+    return (new InfoBox($name, $icon, $color, $link, $info))->render();
+}

+ 176 - 0
app/Admin/Controllers/DataCenter/FinancialRechargeChart.php

xqd
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 陈武杰
+ * Date: 2021/1/15
+ * Time: 10:31
+ */
+
+namespace App\Admin\Controllers\DataCenter;
+use Encore\Admin\Widgets\Box;
+use Encore\Admin\Widgets\Echarts\Echarts;
+use Encore\Admin\Widgets\Form;
+use Encore\Admin\Layout\Row;
+use Encore\Admin\Layout\Column;
+use Encore\Admin\Widgets\Collapse;
+use App\Models\Order;
+
+class FinancialRechargeChart
+{
+    public  function chart(Row $row)
+    {
+        $row->column(12,function (Column $column){
+
+            $form = new Form();
+            $form->disableReset();
+            $form->disableSubmit();
+            $ry = request('year');
+            $rm = request('month');
+            //是否是初始化
+            $isb = request('b');
+//            dd($isb);
+            $year = range(2000,2099);
+            $month = range(1,12);
+            $nowYear = date('Y');
+            $nowMonth = date('m');
+
+            //默认数据获取方式 1默认选择当前月份 2根据时间
+            $type = 2;
+            if(empty($ry) && empty($rm)){
+                $type = 1;
+            }
+
+            //判断是否是初始化
+            if(empty($isb)){
+                $ry = $nowYear;
+                $rm = $nowMonth;
+            } else {
+                $type = 2;
+            }
+            //生成对应年月的键名的数组
+            foreach ($year as $v){
+                $realYear[$v]=$v;
+            }
+            foreach ($month as $v){
+                $realMonth[$v]=$v;
+            }
+            //获取数据 传入参数 真实的年、月、和类型 1默认选择当前月份 2根据时间
+            $chartData =self::getData($ry,$rm,$type);
+
+            $filter_content = new Row(function (Column $col)use ($form,$type,$realYear,$ry,$rm,$realMonth){
+                $col->row(function (Row $row)use ($form,$type,$realYear,$ry,$rm,$realMonth){
+                    $form->method('get');
+                    $form->select('year','年份')->options($realYear)->default($ry);
+                    $form->select('month','月份')->options($realMonth)->default($rm);
+                    $form->hidden('b')->default(1);
+                    $form->html("<button type='submit'  class='btn btn-success'>筛选</button><a style='margin-left: 20px;' href='/admin/financial_recharge_overview'  class='btn btn-danger'>重置</a>");
+                    $form->action('/admin/financial_recharge_overview');
+                    $row->column(6,$form->render());
+                });
+            });
+            $col = new Collapse();
+            $col->add('日期筛选',$filter_content->render());
+
+            $column->append($col->render());
+            $column->row(function (Row $row)use ($chartData){
+                $row->column(12,function (Column $column)use ($chartData){
+                    $echarts = (new Echarts('充值走势图', '','user_change'))
+                        ->setData($chartData['d'])
+                        ->bindLegend($chartData['h'])->setShowToolbox(true);
+                    return $column->append(new  Box('',$echarts));
+                });
+            });
+        });
+    }
+
+    public function getData($year,$month,$type)
+    {
+
+        //type 1默认选择当前月份 2根据时间+
+        $month >10??$month = '0'.$month;
+
+        if($type == 1){
+            //查找天
+
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m-%d") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('product_type',7)
+                ->where('payment_status',2)
+                ->where('created_at', '>=', $year.'-'.$month)
+                ->where('created_at', '<', $year.'-'.($month+1))
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+//            dd($data);
+
+            $data = self::getFomateData($data,3);
+
+            return $data;
+        }
+
+        if(empty($year) && empty($month)){
+            //查找年
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%Y") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('product_type',7)
+                ->where('payment_status',2)
+                ->where('created_at', '>', '2000-')
+                ->where('created_at', '<', '2099-')
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,1);
+            return $data;
+        }
+
+        if($year && $month){
+            //查找天
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m-%d") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('product_type',7)
+                ->where('payment_status',2)
+                ->where('created_at', '>', $year.'-'.$month)
+                ->where('created_at', '<', $year.'-'.($month+1))
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,3);
+
+            return $data;
+
+        }
+
+        if($year){
+            //查找月
+            $data = Order::query()
+                ->selectRaw('DATE_FORMAT(created_at,"%m") as day')
+                ->selectRaw('SUM(payment_amount) as sum')
+                ->where('product_type',7)
+                ->where('payment_status',2)
+                ->where('created_at', '>=', $year.'-')
+                ->where('created_at', '<', ($year+1).'-')
+                ->groupBy('day')
+                ->orderBy('day')
+                ->get()->toArray();
+            $data = self::getFomateData($data,2);
+            return $data;
+        }
+        return self::getFomateData([],3);
+
+    }
+
+    public static function getFomateData($data,$type)
+    {
+        $typeArr = [1=>'年',2=>'月',3=>'日'];
+        $chartData['d'] = [];
+        foreach ($data as $v){
+            $chartData['d'][] = ['day'=>$v['day'].$typeArr[$type],'sum'=>$v['sum']/100];
+        }
+        $chartData['h'] = ['day'=>$typeArr[$type],'sum'=>'充值金额'];
+
+        return $chartData;
+    }
+}

+ 97 - 0
app/Admin/Controllers/DataCenter/FinancialSta.php

xqd
@@ -0,0 +1,97 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 陈武杰
+ * Date: 2021/1/14
+ * Time: 9:37
+ */
+
+namespace App\Admin\Controllers\DataCenter;
+use App\Http\Controllers\Controller;
+use App\Models\Order;
+use App\Models\User;
+
+
+class FinancialSta
+{
+    //获取平台的收入总金额
+    public static function getTotalIncome(){
+        $data = Order::where('payment_status',2)->pluck('payment_amount')->sum();
+        $data /=100;
+       return $data;
+    }
+    //获取用户充值总金额
+    public static function getTotalRecharge(){
+        $data = Order::where('payment_status',2)->where('product_type',7)->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取平台用户所有的余额
+    public static function getTotalUserBalance(){
+        $data = User::where('is_docter',0)->pluck('balance')->sum();
+        $data /= 100;
+        return $data;
+    }
+    /*
+     * 充值记录
+     * */
+    //获取当日充值金额
+    public static function getTodayReCharge(){
+        $data = Order::where('payment_status',2)
+                        ->where('product_type',7)
+                        ->where('created_at','>=',date('Y-m-d 00:00:00',strtotime('today')))
+                        ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取最近7天的充值金额
+    public static function getSevenDayReCharge(){
+        $data = Order::where('payment_status',2)
+            ->where('product_type',7)
+            ->whereBetween('created_at',[date('Y-m-d 00:00:00',strtotime('-6 days')),date('Y-m-d H:i:s',time())])
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取最近30天的充值金额
+    public static function getOneMonthReCharge(){
+        $data = Order::where('payment_status',2)
+            ->where('product_type',7)
+            ->whereBetween('created_at',[date('Y-m-d 00:00:00',strtotime('-29 days')),date('Y-m-d H:i:s',time())])
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取今天的支付金额
+    public static function getTodayPay(){
+        $data = Order::where('payment_status',2)
+            ->where('created_at','>=',date('Y-m-d 00:00:00',strtotime('today')))
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取昨天的支付金额
+    public static function getYesterdayPay(){
+        $data = Order::where('payment_status',2)
+            ->whereBetween('created_at',[date('Y-m-d 00:00:00',strtotime('-1 days')),date('Y-m-d 23:59:59',strtotime('-1 days'))])
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取近七日的支付金额
+    public static function getSevenDayPay(){
+        $data = Order::where('payment_status',2)
+            ->whereBetween('created_at',[date('Y-m-d 00:00:00',strtotime('-6 days')),date('Y-m-d H:i:s',time())])
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+    //获取三十日的支付金额
+    public static function getOneMonthPay(){
+        $data = Order::where('payment_status',2)
+            ->whereBetween('created_at',[date('Y-m-d 00:00:00',strtotime('-29 days')),date('Y-m-d H:i:s',time())])
+            ->pluck('payment_amount')->sum();
+        $data /= 100;
+        return $data;
+    }
+}

+ 9 - 0
app/Admin/routes.php

xqd
@@ -172,5 +172,14 @@ Route::group([
      * 常见问题
      * */
     $router->resource('helpinfos', HelpInfoController::class);
+
+    /*
+     * 数据中心
+     * */
+    //财务概况->充值记录
+    $router->resource('financial_recharge_overview', DataCenter\FinancialOverview::class);
+    //财务概况->订单走势
+    $router->resource('financial_order_overview', DataCenter\FinancialOrderOverview::class);
+
 });