diff --git a/app/AdminAgent/Controllers/FinanceStatisticsController.php b/app/AdminAgent/Controllers/FinanceStatisticsController.php index 78b3929..9a7bbbe 100755 --- a/app/AdminAgent/Controllers/FinanceStatisticsController.php +++ b/app/AdminAgent/Controllers/FinanceStatisticsController.php @@ -3,6 +3,9 @@ namespace App\AdminAgent\Controllers; use App\AdminAgent\Metrics\Examples\FinanceStatistics; +use App\Common\OrderStatus; +use App\Models\Order; +use App\Models\OrderProductItem; use Dcat\Admin\Admin; use Dcat\Admin\Layout\Column; use Dcat\Admin\Layout\Content; @@ -21,7 +24,20 @@ class FinanceStatisticsController extends AdminController } CSS ); - $count = $total = $totalNon = 0; + + //数据 + + //金额 + $price = Order::query()->where('agent_id',Admin::user()->id)->where('status',OrderStatus::SUCCESS)->sum('price'); + + //利润 + $costPrice = OrderProductItem::query()->where('agent_id',Admin::user()->id)->whereHas('order',function ($query) { + $query->where('status',OrderStatus::SUCCESS); + })->sum('price'); + $profit = bcsub($price,$costPrice,2); + + //已完成订单 + $count = Order::query()->where('agent_id',Admin::user()->id)->where('status',OrderStatus::SUCCESS)->count(); return $content ->body( <<body(function (Row $row) use ($count, $total, $totalNon) { + ->body(function (Row $row) use ($price, $profit, $count) { - $row->column(4, function (Column $column) use ($count) { - $column->row(Card::make('金额', function () use ($count) { + $row->column(4, function (Column $column) use ($price) { + $column->row(Card::make('金额', function () use ($price) { return << -

$count

+

$price

HTML; })); }); - $row->column(4, function (Column $column) use ($total) { - $column->row(Card::make('利润', function () use ($total) { + $row->column(4, function (Column $column) use ($profit) { + $column->row(Card::make('利润', function () use ($profit) { return << -

$total

+

$profit

HTML; })); }); - $row->column(4, function (Column $column) use ($totalNon) { - $column->row(Card::make('已完成订单', function () use ($totalNon) { + $row->column(4, function (Column $column) use ($count) { + $column->row(Card::make('已完成订单', function () use ($count) { return << -

$totalNon

+

$count

HTML; })); @@ -74,7 +90,8 @@ HTML; }) ->body(function (Row $row){ - $row->column(12,new FinanceStatistics()); + $row->column(12,new FinanceStatistics() + ); }); } } diff --git a/app/AdminAgent/Metrics/Examples/FinanceStatistics.php b/app/AdminAgent/Metrics/Examples/FinanceStatistics.php index fb7b1f5..72ebb02 100644 --- a/app/AdminAgent/Metrics/Examples/FinanceStatistics.php +++ b/app/AdminAgent/Metrics/Examples/FinanceStatistics.php @@ -2,9 +2,13 @@ namespace App\AdminAgent\Metrics\Examples; +use App\Common\OrderStatus; +use App\Models\Order; use Dcat\Admin\Admin; use Dcat\Admin\Widgets\Metrics\Bar; use Illuminate\Http\Request; +use Illuminate\Support\Arr; +use Illuminate\Support\Facades\DB; class FinanceStatistics extends Bar { @@ -23,7 +27,7 @@ class FinanceStatistics extends Bar $this->chartHeight = 500; // 设置下拉选项 $this->dropdown([ - '7' => '日', + '1' => '日', '30' => '月', '365' => '年', ]); @@ -42,16 +46,33 @@ class FinanceStatistics extends Bar */ public function handle(Request $request) { + $query = Order::query() + ->where('agent_id',Admin::user()->id) + ->where('status',OrderStatus::SUCCESS) + ->select('*'); switch ($request->get('option')) { - case '7': + case '1': + $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); + break; + case '30': + $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time")); + break; + case '365': + $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time")); + break; default: - - - // 图表数据 - $this->withChart( - [75, 125, 225, 175, 125, 75, 25] - ); + $query->addSelect(DB::raw("sum(price) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); } + $order = $query->groupBy('statistics_time') + ->orderBy('created_at') + ->get() + ->toArray(); + $this->withChart( + Arr::pluck($order,'sum_price') + ); + $this->chartLabels( + Arr::pluck($order,'statistics_time') + ); } /** @@ -89,9 +110,9 @@ class FinanceStatistics extends Bar 'show' => false ], 'xaxis' => [ - 'categories' => - [75, 125, 225, 175, 125, 75, 25] - , + //'categories' => + // [75, 125, 225, 175, 125, 75, 25] + //, 'labels' => [ 'show' => true, 'style' => [