From 58c51f32626621c3ff02f5c28ef368bd1187464f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E6=B8=85=E7=88=BD?= Date: Thu, 17 Apr 2025 15:55:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=AE=A1=E5=90=8E=E5=8F=B0=20-=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=AE=A1=E7=90=86=E5=91=98=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E8=BF=94=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/superadmin/config/route.php | 2 +- .../controller/AdministratorController.php | 23 +--- .../GetAdministratorDetailController.php | 111 ++++++++++++++++++ .../GetAdministratorListController.php | 3 +- 4 files changed, 115 insertions(+), 24 deletions(-) create mode 100644 Server/application/superadmin/controller/administrator/GetAdministratorDetailController.php diff --git a/Server/application/superadmin/config/route.php b/Server/application/superadmin/config/route.php index 5b45bc97..fb931c12 100644 --- a/Server/application/superadmin/config/route.php +++ b/Server/application/superadmin/config/route.php @@ -19,7 +19,7 @@ Route::group('', function () { // 管理员相关路由 Route::group('administrator', function () { Route::get('list', 'app\\superadmin\\controller\\administrator\\GetAdministratorListController@index'); - Route::get('detail/:id', 'app\\superadmin\\controller\\AdministratorController@getDetail'); + Route::get('detail/:id', 'app\\superadmin\\controller\\administrator\\GetAdministratorDetailController@index'); Route::post('update', 'app\\superadmin\\controller\\AdministratorController@updateAdmin'); Route::post('add', 'app\\superadmin\\controller\\AdministratorController@addAdmin'); Route::post('delete', 'app\\superadmin\\controller\\AdministratorController@deleteAdmin'); diff --git a/Server/application/superadmin/controller/AdministratorController.php b/Server/application/superadmin/controller/AdministratorController.php index 64c32fa2..14ae5dc1 100644 --- a/Server/application/superadmin/controller/AdministratorController.php +++ b/Server/application/superadmin/controller/AdministratorController.php @@ -120,29 +120,10 @@ class AdministratorController extends Controller return json([ 'code' => 200, 'msg' => '获取成功', - 'data' => $data + 'data' => array_merge() ]); } - - /** - * 根据权限ID获取角色名称 - * @param int $authId 权限ID - * @return string - */ - private function getRoleName($authId) - { - // 可以从权限表中查询,这里为演示简化处理 - switch($authId) { - case 1: - return '超级管理员'; - case 2: - return '项目管理员'; - case 3: - return '客户管理员'; - default: - return '普通管理员'; - } - } + /** * 根据权限ID获取权限列表 diff --git a/Server/application/superadmin/controller/administrator/GetAdministratorDetailController.php b/Server/application/superadmin/controller/administrator/GetAdministratorDetailController.php new file mode 100644 index 00000000..661d489f --- /dev/null +++ b/Server/application/superadmin/controller/administrator/GetAdministratorDetailController.php @@ -0,0 +1,111 @@ +field( + 'a.id, a.account username, a.name, a.status, a.authId, a.createTime createdAt, a.lastLoginTime, p.permissions' + ) + ->leftJoin('administrator_permissions p', 'a.id = p.adminId') + ->where('a.id', $adminId) + ->where('a.deleteTime', 0) + ->find(); + + if (!$admin) { + throw new \Exception('管理员不存在', 404); + } + + return $admin; + } + + /** + * 解析权限数据 + * + * @param string|null $permission + * @return array + */ + protected function parsePermissions(?string $permission): array + { + $permissionIds = []; + + if (!empty($permission)) { + $permissions = json_decode($permission, true); + $permissions = is_array($permissions) ? $permissions : json_decode($permissions, true); + + if (isset($permissions['ids'])) { + $permissionIds = is_string($permissions['ids']) ? explode(',', $permissions['ids']) : $permissions['ids']; + $permissionIds = array_map('intval', $permissionIds); + } + } + + return $permissionIds; + } + + /** + * 根据权限ID获取角色名称 + * + * @param int $authId + * @return string + */ + protected function getRoleName($authId): string + { + switch ($authId) { + case 1: + return '超级管理员'; + case 2: + return '项目管理员'; + case 3: + return '客户管理员'; + default: + return '普通管理员'; + } + } + + /** + * 获取详细信息 + * + * @param int $id 管理员ID + * @return \think\response\Json + */ + public function index($id) + { + try { + $admin = $this->getAdministrator($id); + $roleName = $this->getRoleName($admin->authId); + $permissionIds = $this->parsePermissions($admin->permissions); + + return json([ + 'code' => 200, + 'msg' => '获取成功', + 'data' => array_merge($admin->toArray(), [ + 'roleName' => $roleName, + 'permissions' => $permissionIds, + 'lastLogin' => !empty($admin->lastLoginTime) ? date('Y-m-d H:i', $admin->lastLoginTime) : '从未登录', + ]) + ]); + } catch (\Exception $e) { + return json([ + 'code' => $e->getCode(), + 'msg' => $e->getMessage() + ]); + } + } +} \ No newline at end of file diff --git a/Server/application/superadmin/controller/administrator/GetAdministratorListController.php b/Server/application/superadmin/controller/administrator/GetAdministratorListController.php index b593b0c5..46a10950 100644 --- a/Server/application/superadmin/controller/administrator/GetAdministratorListController.php +++ b/Server/application/superadmin/controller/administrator/GetAdministratorListController.php @@ -157,7 +157,7 @@ class GetAdministratorListController extends Controller /** * 获取管理员列表 - * + * * @return \think\response\Json */ public function index() @@ -174,5 +174,4 @@ class GetAdministratorListController extends Controller ] ]); } - } \ No newline at end of file