adminReturn->success( 'success', $this->getAdminUserInfo($this->adminId)->isSuperAdmin() ? $this->getAdminMenuBySuperAdmin() : $this->getAdminMenuByAdminId() ); } /** * @return array */ private function getAdminMenuByAdminId(): array { $permissions = $this->getAdminUserInfo($this->adminId)->getPermissions()->pluck('name')->unique(); $menuList = $permissions->isEmpty() ? [] : $this->adminMenuRepository->list([ 'status' => AdminMenuStatusCode::Normal, 'name' => $permissions->toArray() ])->toArray(); $tree = []; $map = []; foreach ($menuList as &$menu) { $menu['children'] = []; $map[$menu['id']] = &$menu; } unset($menu); foreach ($menuList as &$menu) { $pid = $menu['parent_id']; if ($pid === 0 || !isset($map[$pid])) { $tree[] = &$menu; } else { $map[$pid]['children'][] = &$menu; } } unset($menu); return $tree; } /** * @return array */ private function getAdminMenuBySuperAdmin(): array { return $this->adminMenuRepository->list([ 'status' => AdminMenuStatusCode::Normal, 'children' => true, 'parent_id' => 0, ])?->toArray() ?? []; } /** * @return array */ public function getRoleByAdminUser(): array { return $this->adminReturn->success( 'success', $this->getAdminUserInfo($this->adminId)->isSuperAdmin() ? $this->adminRoleRepository->list(['status' => AdminRoleStatusCode::Normal])->toArray() : $this->getAdminUserInfo($this->adminId)->getRoles(['name', 'code', 'remark'])->toArray() ); } /** * @return array */ public function update(): array { $userInfo = $this->getAdminUserInfo($this->adminId); if (!$userInfo) throw new ErrException('用户不存在'); $data = $this->getRequestData(); if (Arr::exists($data, 'new_password')) { if (!$userInfo->verifyPassword(Arr::get($data,'old_password'))) throw new ErrException('旧密码错误',ResultCode::OLD_PASSWORD_ERROR); $data['password'] = $data['new_password']; } if (!$this->adminUserRepository->updateById($userInfo->id, $data)) throw new ErrException('更新失败'); return $this->adminReturn->success(); } }