From 75d4942e9d6247f43315d893fb28e3c0c75b3586 Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Wed, 31 Aug 2022 11:50:51 +0800 Subject: [PATCH] order-profit filter --- .../Controllers/OrderProfitController.php | 39 ++++++++++++++++++- app/Admin/Controllers/UserController.php | 10 +++-- app/Models/UserInfo.php | 5 +++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/app/Admin/Controllers/OrderProfitController.php b/app/Admin/Controllers/OrderProfitController.php index 003e6fa1..8909a209 100644 --- a/app/Admin/Controllers/OrderProfitController.php +++ b/app/Admin/Controllers/OrderProfitController.php @@ -10,6 +10,7 @@ use Dcat\Admin\Http\Controllers\AdminController; use App\Admin\Extensions\Grid\Tools\ProfitBatchSuccess; use App\Enums\PayWay; use App\Models\Agent; +use Carbon\Carbon; use Dcat\Admin\Admin; class OrderProfitController extends AdminController @@ -27,7 +28,7 @@ class OrderProfitController extends AdminController $grid->disableViewButton(false); - $grid->column('order.sn'); + $grid->column('order.sn')->link(fn() => admin_url('orders', ['id' => $this->order_id])); $grid->column('fromUser.phone'); $grid->column('user.phone'); $grid->column('role_name'); @@ -46,6 +47,20 @@ class OrderProfitController extends AdminController $filter->like('user.phone')->width(3); $filter->equal('status')->select(OrderProfit::$statusMap)->width(3); $filter->where('role_name', fn($q) => $q->role($this->input))->select(Agent::$typeMap)->width(3); + $filter->whereBetween('created_at', function ($q) { + $start = data_get($this->input, 'start'); + $start = $start ? Carbon::createFromFormat('Y-m-d', $start) : null; + $end = data_get($this->input, 'end'); + $end = $end ? Carbon::createFromFormat('Y-m-d', $end) : null; + if ($start) { + if ($end) { + $q->whereBetween('created_at', [$start, $end]); + } + $q->where('created_at', '>=', $start); + } else if ($end) { + $q->where('created_at', '<=', $end); + } + })->date()->width(6); }); $grid->showRowSelector(); @@ -55,6 +70,28 @@ class OrderProfitController extends AdminController $batch->add(new ProfitBatchSuccess()); } }); + + $grid->footer(function ($collection) use ($grid) { + $query = OrderProfit::query(); + $grid->model()->getQueries()->unique()->each(function ($value) use (&$query) { + if (in_array($value['method'], ['paginate', 'get', 'orderBy', 'orderByDesc'], true)) { + return; + } + + $query = call_user_func_array([$query, $value['method']], $value['arguments'] ?? []); + }); + $money = number_format($query->sum('money'), 2); + return << +
+