From 47458b27a4f737035af6b28f50b0fbcd3762f96f Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Sat, 15 Jan 2022 17:58:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=8E=E5=8F=B0=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E7=94=A8=E6=88=B7=E8=BA=AB=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Actions/Grid/DealerEditLvl.php | 38 ++++++++++ app/Admin/Controllers/DealerController.php | 10 ++- app/Admin/Forms/DealerEditLvl.php | 81 ++++++++++++++++++++++ app/Admin/routes.php | 2 +- app/Endpoint/Api/routes.php | 3 - app/Models/Dealer.php | 3 + resources/lang/zh_CN/dealer.php | 18 ++++- 7 files changed, 149 insertions(+), 6 deletions(-) create mode 100644 app/Admin/Actions/Grid/DealerEditLvl.php create mode 100644 app/Admin/Forms/DealerEditLvl.php diff --git a/app/Admin/Actions/Grid/DealerEditLvl.php b/app/Admin/Actions/Grid/DealerEditLvl.php new file mode 100644 index 00000000..1840e33b --- /dev/null +++ b/app/Admin/Actions/Grid/DealerEditLvl.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.users.edit_agent'); + } + + public function render() + { + $form = DealerEditLvlForm::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 bd4d8a02..6d08e6db 100644 --- a/app/Admin/Controllers/DealerController.php +++ b/app/Admin/Controllers/DealerController.php @@ -2,7 +2,9 @@ namespace App\Admin\Controllers; +use App\Admin\Actions\Grid\DealerEditLvl; use App\Admin\Repositories\Dealer; +use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; @@ -32,8 +34,14 @@ class DealerController extends AdminController // $grid->column('pay_info'); $grid->column('created_at')->sortable(); + $grid->actions(function (Grid\Displayers\Actions $actions) { + if (Admin::user()->can('dcat.admin.dealers.edit_lvl')) { + $actions->append(new DealerEditLvl()); + } + }); + $grid->filter(function (Grid\Filter $filter) { - $filter->equal('id'); + $filter->panel(); }); }); } diff --git a/app/Admin/Forms/DealerEditLvl.php b/app/Admin/Forms/DealerEditLvl.php new file mode 100644 index 00000000..fb742b9e --- /dev/null +++ b/app/Admin/Forms/DealerEditLvl.php @@ -0,0 +1,81 @@ +can('dcat.admin.dealers.edit_lvl'); + } + + /** + * Handle the form request. + * + * @param array $input + * + * @return mixed + */ + public function handle(array $input) + { + $id = $this->payload['id'] ?? 0; + $dealer = Dealer::findOrFail($id); + if ($dealer?->lvl >= $input['lvl']) { + throw new BizException('请选择大于当前的等级'); + } + try { + DB::beginTransaction(); + //执行自己升级 + $dealer->update([ + 'lvl'=>$input['lvl'], + ]); + + 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() + { + // dd(UserInfo::$agentLevelTexts); + $this->select('lvl', '经销商级别')->options(DealerLvl::texts()) + ->help('请选择大于当前的身份') + ->required(); + } + + public function default() + { + $id = $this->payload['id'] ?? 0; + $dealer = Dealer::findOrFail($id); + return [ + 'lvl' => $dealer->lvl->value, + ]; + } +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index e5212545..ddcf6fd3 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -167,7 +167,7 @@ Route::group([ $router->resource('dealer-orders', 'DealerOrderController')->only([ 'index', 'edit', 'update', ])->names('dealer_orders'); - $router->resource('dealers', 'DealerController')->only([ + $router->resource('dealer-users', 'DealerController')->only([ 'index', ])->names('dealers'); diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index ec51c656..c9240d31 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -174,7 +174,6 @@ Route::group([ Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']); Route::get('order/orders/{order}/packages', [OrderController::class, 'orderPackages']); Route::get('order/orders/{package}/shipping-info', [OrderController::class, 'shippingInfo']); -<<<<<<< Updated upstream }); Route::group([ @@ -250,7 +249,5 @@ Route::group([ Route::post('orders/{order}/shippinged', [Dealer\OrderController::class, 'shippingedOrder']); //取消订单 Route::post('orders/{order}/cancel', [Dealer\OrderController::class, 'cancelOrder']); -======= ->>>>>>> Stashed changes }); }); diff --git a/app/Models/Dealer.php b/app/Models/Dealer.php index 81ee064a..494b9513 100644 --- a/app/Models/Dealer.php +++ b/app/Models/Dealer.php @@ -4,10 +4,13 @@ namespace App\Models; use App\Casts\JsonArray; use App\Enums\DealerLvl; +use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\Model; class Dealer extends Model { + use HasDateTimeFormatter; + protected $attributes = [ 'lvl' => DealerLvl::None, 'is_sale' => false, diff --git a/resources/lang/zh_CN/dealer.php b/resources/lang/zh_CN/dealer.php index 8b969c95..6ca45485 100644 --- a/resources/lang/zh_CN/dealer.php +++ b/resources/lang/zh_CN/dealer.php @@ -1,4 +1,5 @@ - [ 'Dealer' => 'Dealer', @@ -6,6 +7,21 @@ return [ ], 'fields' => [ 'user_id' => '用户ID', + 'user'=>[ + 'phone'=>'手机号', + ], + 'userInfo'=>[ + 'avatar' => '头像', + 'nickname' => '昵称', + 'agent_level'=>'管理级别', + 'growth_value'=>'消费值', + 'group_sales_value'=>'业绩', + 'inviterInfo'=>[ + 'user'=>[ + 'phone' =>'推荐人手机', + ], + ], + ], 'lvl' => '经销商等级', 'is_sale' => '是否可销售', 'is_manager' => '是否是管理者',