Browse Source

财务统计

develop
lemon 4 years ago
parent
commit
1d16c6d178
  1. 41
      app/AdminAgent/Controllers/FinanceStatisticsController.php
  2. 41
      app/AdminAgent/Metrics/Examples/FinanceStatistics.php

41
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(
<<<HTML
@ -38,34 +54,34 @@ class FinanceStatisticsController extends AdminController
HTML
)
->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 <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$count</h2>
<h2 class="ml-1 font-large-1 text-primary">$price</h2>
</div>
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 <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$total</h2>
<h2 class="ml-1 font-large-1 text-primary">$profit</h2>
</div>
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 <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$totalNon</h2>
<h2 class="ml-1 font-large-1 text-primary">$count</h2>
</div>
HTML;
}));
@ -74,7 +90,8 @@ HTML;
})
->body(function (Row $row){
$row->column(12,new FinanceStatistics());
$row->column(12,new FinanceStatistics()
);
});
}
}

41
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:
// 图表数据
$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(
[75, 125, 225, 175, 125, 75, 25]
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' => [

Loading…
Cancel
Save