From 8208b04ec22a52568235ab09238158b617adeed8 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 19 Jan 2022 15:18:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=8E=E5=8F=B0=E4=BF=9D?= =?UTF-8?q?=E8=AF=81=E9=87=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Actions/Grid/DealerBonds.php | 38 ++++++++++++ app/Admin/Controllers/DealerController.php | 11 +++- app/Admin/Forms/DealerBonds.php | 71 ++++++++++++++++++++++ app/Models/Dealer.php | 1 + 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 app/Admin/Actions/Grid/DealerBonds.php create mode 100644 app/Admin/Forms/DealerBonds.php diff --git a/app/Admin/Actions/Grid/DealerBonds.php b/app/Admin/Actions/Grid/DealerBonds.php new file mode 100644 index 00000000..675888ab --- /dev/null +++ b/app/Admin/Actions/Grid/DealerBonds.php @@ -0,0 +1,38 @@ +title) { + return $this->title; + } + return ' 保证金   '; + } + + /** + * @param Model|Authenticatable|HasPermissions|null $user + * + * @return bool + */ + protected function authorize($user): bool + { + return $user->can('dcat.admin.dealer.bonds'); + } + + public function render() + { + $form = DealerBondsForm::make()->payload(['id'=>$this->getKey()]); + return Modal::make() + ->lg() + ->title($this->title()) + ->body($form) + ->button($this->title()); + } +} diff --git a/app/Admin/Controllers/DealerController.php b/app/Admin/Controllers/DealerController.php index 081ab552..a0394c36 100644 --- a/app/Admin/Controllers/DealerController.php +++ b/app/Admin/Controllers/DealerController.php @@ -2,10 +2,12 @@ namespace App\Admin\Controllers; +use App\Admin\Actions\Grid\DealerBonds; use App\Admin\Actions\Grid\DealerEditLvl; use App\Admin\Actions\Grid\DealerSignManager; use App\Admin\Actions\Grid\DealerUnsignManager; use App\Admin\Repositories\Dealer; +use App\Enums\DealerLvl; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; @@ -33,7 +35,9 @@ class DealerController extends AdminController }); $grid->column('is_sale'); $grid->column('is_manager')->bool(); - // $grid->column('pay_info'); + $grid->column('bonds')->prepend('¥')->filter( + Grid\Column\Filter\Between::make() + ); $grid->column('created_at')->sortable(); $grid->actions(function (Grid\Displayers\Actions $actions) { @@ -43,9 +47,12 @@ class DealerController extends AdminController if (!$actions->row->is_manager && Admin::user()->can('dcat.admin.dealers.sign_manager')) { $actions->append(new DealerSignManager()); } - if ($actions->row->is_manager && Admin::user()->can('dcat.admin.dealers.sign_manager')) { + if ($actions->row->is_manager && Admin::user()->can('dcat.admin.dealers.unsign_manager')) { $actions->append(new DealerUnsignManager()); } + if ($actions->row->lvl->value >= DealerLvl::Special->value && Admin::user()->can('dcat.admin.dealers.bonds')) { + $actions->append(new DealerBonds()); + } }); $grid->filter(function (Grid\Filter $filter) { diff --git a/app/Admin/Forms/DealerBonds.php b/app/Admin/Forms/DealerBonds.php new file mode 100644 index 00000000..de3fdb6e --- /dev/null +++ b/app/Admin/Forms/DealerBonds.php @@ -0,0 +1,71 @@ +can('dcat.admin.dealer.bonds'); + } + + /** + * Handle the form request. + * + * @param array $input + * + * @return mixed + */ + public function handle(array $input) + { + $id = $this->payload['id'] ?? 0; + + try { + DB::beginTransaction(); + $dealer = Dealer::findOrFail($id); + $dealer->update([ + 'bonds'=>$input['bonds'], + ]); + DB::commit(); + } catch (Throwable $th) { + DB::rollBack(); + report($th); + return $this->response()->error('操作失败:'.$th->getMessage()); + } + + return $this->response() + ->success(__('admin.update_succeeded')) + ->refresh(); + } + + /** + * Build a form here. + */ + public function form() + { + $this->currency('bonds')->required(); + } + + public function default() + { + $id = $this->payload['id'] ?? 0; + $dealer = Dealer::findOrFail($id); + return [ + 'bonds'=>$dealer->bonds, + ]; + } +} diff --git a/app/Models/Dealer.php b/app/Models/Dealer.php index 3bebba6a..5106a54f 100644 --- a/app/Models/Dealer.php +++ b/app/Models/Dealer.php @@ -33,6 +33,7 @@ class Dealer extends Model 'is_manager', 'pay_info', 'contracted_lvl_at', + 'bonds', ]; public function user()