6
0
Fork 0

更新会员管理

release
vine_liutk 2021-12-03 17:24:48 +08:00
parent 2ac4887268
commit ded8f523e9
8 changed files with 225 additions and 8 deletions

View File

@ -0,0 +1,44 @@
<?php
namespace App\Admin\Actions\Grid;
use App\Admin\Forms\DisableUser as DisableUserForm;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
class DisableUser extends RowAction
{
/**
* @return string
*/
protected $title = '<i class="feather icon-lock grid-action-icon"></i>';
public function title()
{
if ($this->title) {
return $this->title.'&nbsp;'.__('admin_message.actions.grid.disable_user');
}
return __('admin_message.actions.grid.disable_user');
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return $user->can('dcat.admin.users.disable');
}
public function render()
{
$form = DisableUserForm::make()->payload(['id'=>$this->getKey()]);
return Modal::make()
->lg()
->title($this->title())
->body($form)
->button($this->title());
}
}

View File

@ -0,0 +1,67 @@
<?php
namespace App\Admin\Actions\Grid;
use App\Models\User;
use Dcat\Admin\Grid\RowAction;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Throwable;
class EnableUser extends RowAction
{
/**
* @return string
*/
protected $title = '<i class="feather icon-unlock grid-action-icon"></i>';
public function title()
{
if ($this->title) {
return $this->title.'&nbsp;'.__('admin_message.actions.grid.enable_user');
}
return __('admin_message.actions.grid.enable_user');
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return $user->can('dcat.admin.users.enable');
}
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
$user = User::findOrFail($this->getKey());
try {
DB::beginTransaction();
$user->enable();
DB::commit();
} catch (Throwable $th) {
DB::rollBack();
report($th);
return $this->response()->error('操作失败,'.$th->getMessage())->refresh();
}
return $this->response()->success('操作成功')->refresh();
}
/**
* @return string|array|void
*/
public function confirm()
{
return ['确认启用当前用户?'];
}
}

View File

@ -37,8 +37,8 @@ class SkuVerify extends RowAction
$form = SkuVerifyForm::make()->payload(['id'=>$this->getKey()]);
return Modal::make()
->lg()
->title($this->title)
->title($this->title())
->body($form)
->button($this->title);
->button($this->title());
}
}

View File

@ -2,6 +2,8 @@
namespace App\Admin\Controllers;
use App\Admin\Actions\Grid\DisableUser;
use App\Admin\Actions\Grid\EnableUser;
use App\Admin\Repositories\User;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
@ -25,17 +27,18 @@ class UserController extends AdminController
$grid->column('phone');
// $grid->column('username');
// $grid->column('password');
$grid->column('userVip.vip.name');
$grid->column('userVip.vip.name')->label();
// $grid->column('email');
$grid->column('last_login_ip');
$grid->column('last_login_at')->sortable();
$grid->column('register_ip');
// $grid->column('remember_token');
$grid->column('status')->using([1=>'正常', -1=>'禁用'])
->dot([
1 => 'primary',
-1 => 'danger',
]);
$grid->column('status')->using([-1=>'冻结', 1=>'正常', 2=>'禁用'])
->dot([
-1 => '#b3b9bf',
1 => 'primary',
2 => '#b3b9bf',
]);
$grid->column('created_at');
/** 操作 **/
@ -47,6 +50,17 @@ class UserController extends AdminController
//删除以及自定义操作
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableView(Admin::user()->cannot('dcat.admin.users.show'));
if ($actions->row->status == 1) {
if (Admin::user()->can('dcat.admin.users.disable')) {
$actions->append(new DisableUser());
}
}
if (in_array($actions->row->status, [-1, 2])) {
if (Admin::user()->can('dcat.admin.users.enable')) {
$actions->append(new EnableUser());
}
}
});
$grid->filter(function (Grid\Filter $filter) {

View File

@ -0,0 +1,51 @@
<?php
namespace App\Admin\Forms;
use App\Models\User;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Illuminate\Support\Facades\DB;
use Throwable;
class DisableUser extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$id = $this->payload['id'] ?? 0;
$user = User::findOrFail($id);
try {
DB::beginTransaction();
$user->disable($input['status_remark']);
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()
{
$id = $this->payload['id'] ?? 0;
$this->text('status_remark')->required();
}
}

View File

@ -80,6 +80,39 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
return $this->hasOne(UserVip::class, 'user_id');
}
/**
* 禁用用户
*
* @param string|null $status_remarks
* @return void
*/
public function disable(?string $status_remark = null)
{
$res = null;
if ($this->status == 1) {//只操作正常用户
$this->status = 2;
$this->status_remark = $status_remark;
$res = $this->save();
}
return $res;
}
/**
* 启用用户
*
* @return void
*/
public function enable()
{
$res = null;
if ($this->status != 1) {//
$this->status = 1;
$res = $this->save();
}
return $res;
}
/**
* 设置此用户的密码
*

View File

@ -69,6 +69,8 @@ return [
'release_up'=>'申请上架',
'sku_sync_spu'=>'同步主商品',
'sku_verify'=>'商品审核',
'disable_user'=>'禁用用户',
'enable_user'=>'启用用户',
],
],
];

View File

@ -16,6 +16,12 @@ return [
'last_login_at' => '最近登录时间',
'register_ip' => '注册IP',
'created_at' => '注册时间',
'userVip'=>[
'vip' => [
'name' => '等级',
],
],
'status_remark'=>'备注',
],
'options' => [
],