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}) %}