From 77ee89c1aac124ca3fa01602bfc51b4a72f87404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Wed, 6 Apr 2022 11:05:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=8F=E9=94=80=E5=95=86=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Actions/Grid/DealerWalletRecharge.php | 36 +++++++++ app/Admin/Controllers/DealerController.php | 4 + app/Admin/Forms/DealerWalletRecharge.php | 77 +++++++++++++++++++ app/Enums/DealerWalletAction.php | 1 + database/seeders/AdminPermissionSeeder.php | 1 + 5 files changed, 119 insertions(+) create mode 100644 app/Admin/Actions/Grid/DealerWalletRecharge.php create mode 100644 app/Admin/Forms/DealerWalletRecharge.php diff --git a/app/Admin/Actions/Grid/DealerWalletRecharge.php b/app/Admin/Actions/Grid/DealerWalletRecharge.php new file mode 100644 index 00000000..32e16491 --- /dev/null +++ b/app/Admin/Actions/Grid/DealerWalletRecharge.php @@ -0,0 +1,36 @@ + 充值  '; + } + + /** + * @param Model|Authenticatable|HasPermissions|null $user + * + * @return bool + */ + protected function authorize($user): bool + { + return $user->can('dcat.admin.dealers.wallet_recharge'); + } + + public function render() + { + $form = DealerWalletRechargeForm::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 f6b3ad39..8499a29a 100644 --- a/app/Admin/Controllers/DealerController.php +++ b/app/Admin/Controllers/DealerController.php @@ -5,6 +5,7 @@ namespace App\Admin\Controllers; use App\Admin\Actions\Grid\DealerBonds; use App\Admin\Actions\Grid\DealerEditLvl; use App\Admin\Actions\Grid\DealerEditProduct; +use App\Admin\Actions\Grid\DealerWalletRecharge; use App\Admin\Renderable\DealerEarningSimpleTable; use App\Admin\Renderable\DealerSubordinateCard; use App\Admin\Renderable\DealerUserProductLogSimpleTable; @@ -83,6 +84,9 @@ class DealerController extends AdminController if (Admin::user()->can('dcat.admin.dealers.edit_lvl')) { $actions->append(new DealerEditLvl()); } + if (Admin::user()->can('dcat.admin.dealers.wallet_recharge')) { + $actions->append(new DealerWalletRecharge()); + } if ($actions->row->lvl->value >= DealerLvl::Special->value && Admin::user()->can('dcat.admin.dealers.bonds')) { $actions->append(new DealerBonds()); } diff --git a/app/Admin/Forms/DealerWalletRecharge.php b/app/Admin/Forms/DealerWalletRecharge.php new file mode 100644 index 00000000..2b466383 --- /dev/null +++ b/app/Admin/Forms/DealerWalletRecharge.php @@ -0,0 +1,77 @@ +can('dcat.admin.dealers.wallet_recharge'); + } + + /** + * Handle the form request. + * + * @param array $input + * + * @return mixed + */ + public function handle(array $input) + { + if (($input['change_balance'] ?? 0) <= 0) { + return $this->response()->error('充值金额必须大于0'); + } + + $dealer = Dealer::findOrFail($this->payload['id']); + + try { + DB::beginTransaction(); + + (new WalletService())->changeBalance( + $dealer->user, + $input['change_balance'], + DealerWalletAction::Recharge, + '充值', + Admin::user() + ); + + 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('change_balance', '充值金额')->symbol('¥')->required(); + $this->confirm('是否确认充值?', '提交后该动作无法逆转'); + } +} diff --git a/app/Enums/DealerWalletAction.php b/app/Enums/DealerWalletAction.php index 1bacc3a6..4f0f0750 100644 --- a/app/Enums/DealerWalletAction.php +++ b/app/Enums/DealerWalletAction.php @@ -16,4 +16,5 @@ enum DealerWalletAction: int { case EarningIn = 11; case EarningOut = 12; case DeliveryBillPaid = 13; + case Recharge = 14; // 充值 } diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index 4c58862d..746c3e60 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -318,6 +318,7 @@ class AdminPermissionSeeder extends Seeder 'edit_lvl'=>['name' =>'修改经销商等级'], 'bonds'=>['name' =>'填写保证金'], 'edit_product'=>['name' =>'调整库存'], + 'wallet_recharge' => ['name' => '充值'], ], ], 'dealer_products'=>[