From bee6098028399d93abc2e73105b801a50acc0ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Sun, 24 Apr 2022 10:35:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=9B=B6=E7=BB=8F=E9=94=80=E5=95=86?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...letRecharge.php => DealerWalletChange.php} | 10 +++---- app/Admin/Controllers/DealerController.php | 6 ++-- ...letRecharge.php => DealerWalletChange.php} | 29 ++++++++++++++----- app/Enums/DealerWalletAction.php | 1 + database/seeders/AdminPermissionSeeder.php | 2 +- 5 files changed, 31 insertions(+), 17 deletions(-) rename app/Admin/Actions/Grid/{DealerWalletRecharge.php => DealerWalletChange.php} (58%) rename app/Admin/Forms/{DealerWalletRecharge.php => DealerWalletChange.php} (57%) diff --git a/app/Admin/Actions/Grid/DealerWalletRecharge.php b/app/Admin/Actions/Grid/DealerWalletChange.php similarity index 58% rename from app/Admin/Actions/Grid/DealerWalletRecharge.php rename to app/Admin/Actions/Grid/DealerWalletChange.php index 32e16491..0ea43526 100644 --- a/app/Admin/Actions/Grid/DealerWalletRecharge.php +++ b/app/Admin/Actions/Grid/DealerWalletChange.php @@ -2,15 +2,15 @@ namespace App\Admin\Actions\Grid; -use App\Admin\Forms\DealerWalletRecharge as DealerWalletRechargeForm; +use App\Admin\Forms\DealerWalletChange as DealerWalletChangeForm; use Dcat\Admin\Grid\RowAction; use Dcat\Admin\Widgets\Modal; -class DealerWalletRecharge extends RowAction +class DealerWalletChange extends RowAction { public function title() { - return ' 充值  '; + return ' 变更余额  '; } /** @@ -20,12 +20,12 @@ class DealerWalletRecharge extends RowAction */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealers.wallet_recharge'); + return $user->can('dcat.admin.dealers.wallet_change'); } public function render() { - $form = DealerWalletRechargeForm::make()->payload(['id'=>$this->getKey()]); + $form = DealerWalletChangeForm::make()->payload(['id'=>$this->getKey()]); return Modal::make() ->lg() diff --git a/app/Admin/Controllers/DealerController.php b/app/Admin/Controllers/DealerController.php index eaaff19a..6ad4341a 100644 --- a/app/Admin/Controllers/DealerController.php +++ b/app/Admin/Controllers/DealerController.php @@ -5,7 +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\Actions\Grid\DealerWalletChange; use App\Admin\Renderable\DealerEarningSimpleTable; use App\Admin\Renderable\DealerSubordinateCard; use App\Admin\Renderable\DealerUserProductLogSimpleTable; @@ -84,8 +84,8 @@ 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 (Admin::user()->can('dcat.admin.dealers.wallet_change')) { + $actions->append(new DealerWalletChange()); } 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/DealerWalletChange.php similarity index 57% rename from app/Admin/Forms/DealerWalletRecharge.php rename to app/Admin/Forms/DealerWalletChange.php index 2b466383..5d3080ee 100644 --- a/app/Admin/Forms/DealerWalletRecharge.php +++ b/app/Admin/Forms/DealerWalletChange.php @@ -12,7 +12,7 @@ use Dcat\Admin\Widgets\Form; use Illuminate\Support\Facades\DB; use Throwable; -class DealerWalletRecharge extends Form implements LazyRenderable +class DealerWalletChange extends Form implements LazyRenderable { use LazyWidget; @@ -23,7 +23,7 @@ class DealerWalletRecharge extends Form implements LazyRenderable */ protected function authorize($user): bool { - return $user->can('dcat.admin.dealers.wallet_recharge'); + return $user->can('dcat.admin.dealers.wallet_change'); } /** @@ -35,20 +35,25 @@ class DealerWalletRecharge extends Form implements LazyRenderable */ public function handle(array $input) { - if (($input['change_balance'] ?? 0) <= 0) { - return $this->response()->error('充值金额必须大于0'); + if (bccomp($input['change_balance'], '0', 2) === -1) { + return $this->response()->error('金额必须大于0'); } $dealer = Dealer::findOrFail($this->payload['id']); + $action = DealerWalletAction::from($input['action']); + try { DB::beginTransaction(); (new WalletService())->changeBalance( $dealer->user, - $input['change_balance'], - DealerWalletAction::Recharge, - '充值', + match ($action) { + DealerWalletAction::Recharge => bcmul($input['change_balance'], '1', 2), + DealerWalletAction::Deduct => bcmul($input['change_balance'], '-1', 2), + }, + $action, + $input['remarks'], Admin::user() ); @@ -71,7 +76,15 @@ class DealerWalletRecharge extends Form implements LazyRenderable */ public function form() { - $this->currency('change_balance', '充值金额')->symbol('¥')->required(); + $this->radio('action', '操作') + ->options([ + DealerWalletAction::Recharge->value => '充值', + DealerWalletAction::Deduct->value => '扣除', + ]) + ->default(DealerWalletAction::Recharge->value) + ->required(); + $this->currency('change_balance', '金额')->symbol('¥')->required(); + $this->textarea('remarks', '备注')->required(); $this->confirm('是否确认充值?', '提交后该动作无法逆转'); } } diff --git a/app/Enums/DealerWalletAction.php b/app/Enums/DealerWalletAction.php index 4f0f0750..7cd5d19b 100644 --- a/app/Enums/DealerWalletAction.php +++ b/app/Enums/DealerWalletAction.php @@ -17,4 +17,5 @@ enum DealerWalletAction: int { case EarningOut = 12; case DeliveryBillPaid = 13; case Recharge = 14; // 充值 + case Deduct = 15; // 扣除 } diff --git a/database/seeders/AdminPermissionSeeder.php b/database/seeders/AdminPermissionSeeder.php index 572fa0f5..4fe1a3e6 100644 --- a/database/seeders/AdminPermissionSeeder.php +++ b/database/seeders/AdminPermissionSeeder.php @@ -319,7 +319,7 @@ class AdminPermissionSeeder extends Seeder 'edit_lvl'=>['name' =>'修改经销商等级'], 'bonds'=>['name' =>'填写保证金'], 'edit_product'=>['name' =>'调整库存'], - 'wallet_recharge' => ['name' => '充值'], + 'wallet_change' => ['name' => '变更余额'], ], ], 'dealer_products'=>[