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()