From af4b57068188a4ed4132669f71f309ec63c0e4c3 Mon Sep 17 00:00:00 2001 From: xiaochong0302 Date: Mon, 8 Apr 2024 10:59:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4=E5=92=8C?= =?UTF-8?q?=E8=BF=98=E5=8E=9F=E7=94=A8=E6=88=B7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Admin/Controllers/UserController.php | 38 ++++++++++++++++ app/Http/Admin/Services/User.php | 43 +++++++++++++++++++ app/Http/Admin/Views/user/list.volt | 11 ++++- app/Http/Admin/Views/user/search.volt | 7 +++ 4 files changed, 98 insertions(+), 1 deletion(-) diff --git a/app/Http/Admin/Controllers/UserController.php b/app/Http/Admin/Controllers/UserController.php index f14b6e4c..f49b5e65 100644 --- a/app/Http/Admin/Controllers/UserController.php +++ b/app/Http/Admin/Controllers/UserController.php @@ -140,4 +140,42 @@ class UserController extends Controller return $this->jsonSuccess($content); } + /** + * @Post("/{id:[0-9]+}/delete", name="admin.user.delete") + */ + public function deleteAction($id) + { + $userService = new UserService(); + + $userService->deleteUser($id); + + $location = $this->url->get(['for' => 'admin.user.list']); + + $content = [ + 'location' => $location, + 'msg' => '删除用户成功', + ]; + + return $this->jsonSuccess($content); + } + + /** + * @Post("/{id:[0-9]+}/restore", name="admin.user.restore") + */ + public function restoreAction($id) + { + $userService = new UserService(); + + $userService->restoreUser($id); + + $location = $this->url->get(['for' => 'admin.user.list']); + + $content = [ + 'location' => $location, + 'msg' => '还原用户成功', + ]; + + return $this->jsonSuccess($content); + } + } diff --git a/app/Http/Admin/Services/User.php b/app/Http/Admin/Services/User.php index 78d61e5a..46d87a07 100644 --- a/app/Http/Admin/Services/User.php +++ b/app/Http/Admin/Services/User.php @@ -13,6 +13,7 @@ use App\Http\Admin\Services\Traits\AccountSearchTrait; use App\Library\Paginator\Query as PaginateQuery; use App\Library\Utils\Password as PasswordUtil; use App\Models\Account as AccountModel; +use App\Models\Role as RoleModel; use App\Models\User as UserModel; use App\Repos\Account as AccountRepo; use App\Repos\Online as OnlineRepo; @@ -242,6 +243,48 @@ class User extends Service return $user; } + public function deleteUser($id) + { + $user = $this->findOrFail($id); + + if ($user->admin_role == RoleModel::ROLE_ROOT) { + return; + } + + $user->deleted = 1; + + $user->update(); + + $accountRepo = new AccountRepo(); + + $account = $accountRepo->findById($id); + + $account->deleted = 1; + + $account->update(); + + $this->rebuildUserCache($user); + } + + public function restoreUser($id) + { + $user = $this->findOrFail($id); + + $user->deleted = 0; + + $user->update(); + + $accountRepo = new AccountRepo(); + + $account = $accountRepo->findById($id); + + $account->deleted = 0; + + $account->update(); + + $this->rebuildUserCache($user); + } + public function updateAccount($id) { $post = $this->request->getPost(); diff --git a/app/Http/Admin/Views/user/list.volt b/app/Http/Admin/Views/user/list.volt index 2690c781..751d8b8c 100644 --- a/app/Http/Admin/Views/user/list.volt +++ b/app/Http/Admin/Views/user/list.volt @@ -51,6 +51,8 @@ {% set user_url = url({'for':'home.user.show','id':item.id}) %} {% set online_url = url({'for':'admin.user.online','id':item.id}) %} {% set edit_url = url({'for':'admin.user.edit','id':item.id}) %} + {% set delete_url = url({'for':'admin.user.delete','id':item.id}) %} + {% set restore_url = url({'for':'admin.user.restore','id':item.id}) %} {{ item.name }} @@ -87,7 +89,14 @@ diff --git a/app/Http/Admin/Views/user/search.volt b/app/Http/Admin/Views/user/search.volt index 18160a5f..dac050ab 100644 --- a/app/Http/Admin/Views/user/search.volt +++ b/app/Http/Admin/Views/user/search.volt @@ -68,6 +68,13 @@ +
+ +
+ + +
+