From 02df227bbf0e63fcee3c049bbdd868f61f5ce78c Mon Sep 17 00:00:00 2001 From: lanzu_qinsheng <334039090@qq.com> Date: Tue, 20 Oct 2020 11:43:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Actions/Metrics/Distance.php | 20 +++++++++---- app/Admin/Actions/Metrics/Shipping.php | 28 ++++++++++++++++--- app/Admin/Common/Order.php | 16 +++++++++-- app/Admin/Controllers/v3/DataReport.php | 20 +++++++------ app/Admin/Extensions/Chart/Bar/OrderBar.php | 2 +- .../admin/tools/data_report_time.blade.php | 2 +- 6 files changed, 66 insertions(+), 22 deletions(-) diff --git a/app/Admin/Actions/Metrics/Distance.php b/app/Admin/Actions/Metrics/Distance.php index 1697318..54d23b8 100644 --- a/app/Admin/Actions/Metrics/Distance.php +++ b/app/Admin/Actions/Metrics/Distance.php @@ -26,7 +26,7 @@ class Distance extends Round parent::init(); $this->height = 160; $this->style('padding-top:0'); - $this->chartLabels(['1km以内', '1-3km', '3km以上']); + $this->chartLabels(['1km以内', '1-3km', '3-5km','5km以上']); } @@ -57,16 +57,17 @@ JS; */ public function fill() { - $this->withContent($this->distance[0], $this->distance[1],$this->distance[2]); + $this->withContent($this->distance[0], $this->distance[1],$this->distance[2],$this->distance[3]); // 图表数据 $this->withChart([ $this->distance[0]>0?sprintf("%.2f",($this->distance[0]/$this->number)*100):0, $this->distance[0]>0?sprintf("%.2f",($this->distance[1]/$this->number)*100):0, $this->distance[0]>0?sprintf("%.2f",($this->distance[2]/$this->number)*100):0, + $this->distance[0]>0?sprintf("%.2f",($this->distance[3]/$this->number)*100):0, ]); // 总数 - $this->chartTotal('总数', $this->number); + $this->chartTotal('订单数', $this->number); } @@ -96,7 +97,7 @@ JS; * * @return $this */ - public function withContent($d1, $d2, $d3) + public function withContent($d1, $d2, $d3,$d4) { return $this->content( <<
- 3km以上 + 3-5km
{$d3}
+
+
+ + 5km以上 +
+
+ {$d4} +
+
HTML ); diff --git a/app/Admin/Actions/Metrics/Shipping.php b/app/Admin/Actions/Metrics/Shipping.php index 324a553..a22079d 100644 --- a/app/Admin/Actions/Metrics/Shipping.php +++ b/app/Admin/Actions/Metrics/Shipping.php @@ -1,4 +1,5 @@ shipping = $shipping; - parent::__construct($title=null, $icon=null); + parent::__construct($title = null, $icon = null); } public function init() @@ -45,9 +47,14 @@ class Shipping extends Donut */ public function fill() { + $total = array_sum($this->shipping); + $s3 = $this->shipping[0]>0?sprintf("%.1f", ($this->shipping[0] / $total) * 100) . '%':'0%'; + $s4 = $this->shipping[0]>0?sprintf("%.1f", ($this->shipping[1] / $total) * 100) . '%':'0%'; // 图表数据 + $this->withChart($this->shipping); - $this->withContent($this->shipping[0], $this->shipping[1]); + + $this->withContent($this->shipping[0], $this->shipping[1], $s3, $s4); } /** @@ -72,7 +79,7 @@ class Shipping extends Donut * * @return $this */ - protected function withContent($s1, $s2) + protected function withContent($s1, $s2, $s3, $s4) { $blue = Admin::color()->alpha('blue2', 0.5); @@ -93,6 +100,19 @@ class Shipping extends Donut
{$s2}
+ +
+
+ {$this->labels[2]} +
+
{$s3}
+
+
+
+ {$this->labels[3]} +
+
{$s4}
+
HTML ); } diff --git a/app/Admin/Common/Order.php b/app/Admin/Common/Order.php index f00e15e..7d0e434 100644 --- a/app/Admin/Common/Order.php +++ b/app/Admin/Common/Order.php @@ -6,6 +6,7 @@ namespace App\Admin\Common; use App\Models\ImsCjdcOrderMain; use App\Models\LanzuUserRelationBind; +use Illuminate\Support\Facades\DB; class Order { @@ -67,10 +68,19 @@ class Order $build1 = clone $buildData; $build2 = clone $buildData; $build3 = clone $buildData; + $build4 = clone $buildData; $d1 = $build1->where('delivery_distance','<',1000)->count(); - $d2 = $build2->where('delivery_distance','>',[1000,3000])->count(); - $d3 = $build3->where('delivery_distance','>',3000)->count(); - $result = [$d1,$d2,$d3]; + $d2 = $build2->whereBetween('delivery_distance',[1000,3000])->count(); + $d3 = $build3->whereBetween('delivery_distance',[3000,5000])->count(); + $d4 = $build4->where('delivery_distance','>',5000)->count(); + $result = [$d1,$d2,$d3,$d4]; + }elseif ($params['data_type']=='order_count_user'){ + $result = DB::table('lanzu_order_main') + ->whereIn('state', [3, 4, 5, 10,11]) + ->where('type',1) + ->groupBy('user_id')->pluck('user_id') + ->toArray(); + $result = count($result); } return $result; } diff --git a/app/Admin/Controllers/v3/DataReport.php b/app/Admin/Controllers/v3/DataReport.php index f7a7d2d..f9ac2e0 100644 --- a/app/Admin/Controllers/v3/DataReport.php +++ b/app/Admin/Controllers/v3/DataReport.php @@ -3,24 +3,19 @@ namespace App\Admin\Controllers\v3; - - use App\Admin\Actions\Metrics\Distance; use App\Admin\Actions\Metrics\Shipping; use App\Admin\Actions\Tools\DataReportDate; use App\Admin\Actions\Tools\DataReportOption; use App\Admin\Common\Order; use App\Admin\Extensions\Chart\Bar\OrderBar; +use App\Admin\Extensions\Chart\PolarArea\Market; use App\Models\ImsCjdcMarket; -use App\Models\LanzuStore; use App\Models\v3\User; -use Dcat\Admin\Form; -use Dcat\Admin\Grid; use Dcat\Admin\Layout\Column; use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Row; use Dcat\Admin\Widgets\Card; -use http\Message\Body; use Illuminate\Support\Facades\DB; class DataReport @@ -35,6 +30,7 @@ class DataReport protected $_count_user; protected $_shipping; protected $_distance; + protected $_order_count_user; public function __construct() { $option = request()->get('option',1); @@ -74,6 +70,13 @@ class DataReport 'condition'=>1,//取数据维度 condition 'user_ids'=>null ],$option); + $this->_order_count_user = Order::getOrderData([ + 'user_type'=>'market_service',//谁取数据 user_type 用户类型 + 'data_type'=>'order_count_user',//取什么数据 data_type 数据类型 + 'market_id'=>$marketId,//取哪个市场数据 + 'condition'=>1,//取数据维度 condition + 'user_ids'=>null + ],$option); } public function index(Content $content) @@ -146,7 +149,7 @@ class DataReport }); $row->column(2,function (Column $column){ $title = "下过单的用户数"; - $value = 0; + $value = $this->_order_count_user; $card = Card::make("{$title}","{$value}"); $card->style('background-color:#4e9876'); $column->row($card); @@ -172,7 +175,7 @@ class DataReport $row->column(4,function (Column $column){ $column->row(new Shipping($this->_shipping)); $column->row(new Distance($this->_distance,$this->_number)); - $card3 = Card::make('222'); + $card3 = Card::make('送达时间(暂无)'); $card3->style("height:155px"); $column->row($card3); }); @@ -193,6 +196,7 @@ class DataReport $data = DB::table('lanzu_order_main') ->select('money') ->selectRaw("FROM_UNIXTIME(created_at,'%Y-%m-%d') as add_time") + ->whereIn('state', [3, 4, 5, 10,11]) ->where($where) ->whereBetween('created_at',$params['date_time']) ->get(); diff --git a/app/Admin/Extensions/Chart/Bar/OrderBar.php b/app/Admin/Extensions/Chart/Bar/OrderBar.php index f2b6f52..0f3029c 100644 --- a/app/Admin/Extensions/Chart/Bar/OrderBar.php +++ b/app/Admin/Extensions/Chart/Bar/OrderBar.php @@ -65,7 +65,7 @@ class OrderBar extends Chart // 执行你的数据查询逻辑 $data = [ [ - 'name'=>'订单金额', + 'name'=>$orderType=='num'?'订单数':'订单金额', 'data' =>$orderType=='num'? $this->_data['num']:$this->_data['amount'] ], ]; diff --git a/resources/views/admin/tools/data_report_time.blade.php b/resources/views/admin/tools/data_report_time.blade.php index 2e33c54..cb325b7 100644 --- a/resources/views/admin/tools/data_report_time.blade.php +++ b/resources/views/admin/tools/data_report_time.blade.php @@ -1,6 +1,6 @@
@foreach($options as $option => $label) -