diff --git a/app/AdminAgent/Controllers/UserStatisticsController.php b/app/AdminAgent/Controllers/UserStatisticsController.php new file mode 100755 index 0000000..11d00bd --- /dev/null +++ b/app/AdminAgent/Controllers/UserStatisticsController.php @@ -0,0 +1,57 @@ +body( + << + + + HTML + + ) + ->body(function (Row $row){ + $row->column(12,new UserStatistics() + ); + }); + } +} diff --git a/app/AdminAgent/Metrics/Examples/UserStatistics.php b/app/AdminAgent/Metrics/Examples/UserStatistics.php new file mode 100644 index 0000000..c5b708e --- /dev/null +++ b/app/AdminAgent/Metrics/Examples/UserStatistics.php @@ -0,0 +1,142 @@ +contentWidth(0, 12); + // 标题 + //$this->title('财务统计'); + $this->chartHeight = 500; + // 设置下拉选项 + $this->dropdown([ + '1' => '日', + '30' => '月', + '365' => '年', + ]); + // 设置图表颜色 + $this->chartColors([ + $color->green(), + ]); + } + + /** + * 处理请求 + * + * @param Request $request + * + * @return mixed|void + */ + public function handle(Request $request) + { + $query = User::query() + ->where('agent_id',Admin::user()->id) + ->select('*'); + switch ($request->get('option')) { + case '1': + $query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); + break; + case '30': + $query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time")); + break; + case '365': + $query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time")); + break; + default: + $query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); + } + $users = $query->groupBy('statistics_time') + ->orderBy('statistics_time') + ->get(); + + $userNum = 0; + $userArr = []; + + foreach ($users as $user) { + $userNum += $user->sum_price; + array_push($userArr,$userNum); + } + + $this->withChart( + $userArr + ); + $this->chartLabels( + Arr::pluck($users,'statistics_time') + ); + } + + /** + * 设置图表数据. + * + * @param array $data + * + * @return $this + */ + public function withChart(array $data) + { + return $this->chart([ + 'series' => [[ + 'name' => '用户数', + 'data' => $data + ]], + 'chart' => [ + //'width' => '180%', + 'type' => 'bar', + 'events' => [ + ], + 'toolbar' => ['show' => false], + ], + 'colors' => $this->colors, + 'plotOptions' => [ + 'bar' => [ + //'columnWidth' => '45%', + 'distributed' => true, + ] + ], + 'dataLabels' => [ + 'enabled' => false + ], + 'legend' => [ + 'show' => false + ], + 'xaxis' => [ + //'categories' => + // [75, 125, 225, 175, 125, 75, 25] + //, + 'labels' => [ + 'show' => true, + 'style' => [ + 'colors' => $this->colors, + 'fontSize' => '12px' + ] + ], + ], + 'yaxis' => [ + 'show' => true + ], + 'tooltip' => [ + 'x' => ['show' => true], + ], + + ]); + } +} diff --git a/app/AdminAgent/routes.php b/app/AdminAgent/routes.php index b01d436..99fdbeb 100644 --- a/app/AdminAgent/routes.php +++ b/app/AdminAgent/routes.php @@ -39,4 +39,5 @@ Route::group([ $router->resource('group_order/list', 'GroupOrderController'); $router->resource('finance_statistics', 'FinanceStatisticsController'); $router->resource('order_statistics', 'OrderStatisticsController'); + $router->resource('user_statistics', 'UserStatisticsController'); });