From 65fdfa852b8bc328b81a1fb928f2ae32e676cd76 Mon Sep 17 00:00:00 2001 From: "[yxf]" <[1524240689@qq.com]> Date: Tue, 14 Apr 2026 14:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=8E=E5=8F=B0token?= =?UTF-8?q?=E6=8F=92=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-admin-ui/src/layout/index.vue | 3 +- .../src/views/im/code/components/alink.vue | 56 ++++++++++++--- .../controller/system/SysUserController.java | 68 +++++++++++++++++-- .../dromara/system/domain/vo/UserInfoVo.java | 6 ++ 4 files changed, 117 insertions(+), 16 deletions(-) diff --git a/im-admin-ui/src/layout/index.vue b/im-admin-ui/src/layout/index.vue index 8ef0af9..f9277a6 100644 --- a/im-admin-ui/src/layout/index.vue +++ b/im-admin-ui/src/layout/index.vue @@ -69,7 +69,8 @@ onMounted(() => { onMounted(() => { let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; - initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket'); + // initWebSocket(protocol + window.location.host + import.meta.env.VITE_APP_BASE_API + '/resource/websocket'); + initWebSocket(protocol + window.location.host + '/resource/websocket'); }); const handleClickOutside = () => { diff --git a/im-admin-ui/src/views/im/code/components/alink.vue b/im-admin-ui/src/views/im/code/components/alink.vue index 80e8913..fa4fa15 100644 --- a/im-admin-ui/src/views/im/code/components/alink.vue +++ b/im-admin-ui/src/views/im/code/components/alink.vue @@ -1,7 +1,7 @@ + + \ No newline at end of file diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 9b175e5..cbbd603 100644 --- a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -2,6 +2,8 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; @@ -23,14 +25,13 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.ImAgentAdmin; import org.dromara.system.domain.SysUser; -import org.dromara.system.domain.bo.SysDeptBo; -import org.dromara.system.domain.bo.SysPostBo; -import org.dromara.system.domain.bo.SysRoleBo; -import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.bo.*; import org.dromara.system.domain.vo.*; import org.dromara.system.listener.SysUserImportListener; import org.dromara.system.service.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -55,6 +56,8 @@ public class SysUserController extends BaseController { private final ISysPostService postService; private final ISysDeptService deptService; private final ISysTenantService tenantService; + @Autowired + private IImAgentAdminService imAgentAdminService; private final IImAgentAdminService imAgentService; @@ -100,6 +103,29 @@ public class SysUserController extends BaseController { ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response); } +// /** +// * 获取用户信息 +// * +// * @return 用户信息 +// */ +// @GetMapping("/getInfo") +// public R getInfo() { +// UserInfoVo userInfoVo = new UserInfoVo(); +// LoginUser loginUser = LoginHelper.getLoginUser(); +// if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { +// // 超级管理员 如果重新加载用户信息需清除动态租户 +// TenantHelper.clearDynamic(); +// } +// SysUserVo user = userService.selectUserById(loginUser.getUserId()); +// if (ObjectUtil.isNull(user)) { +// return R.fail("没有权限访问用户数据!"); +// } +// userInfoVo.setUser(user); +// userInfoVo.setPermissions(loginUser.getMenuPermission()); +// userInfoVo.setRoles(loginUser.getRolePermission()); +// return R.ok(userInfoVo); +// } + /** * 获取用户信息 * @@ -109,20 +135,54 @@ public class SysUserController extends BaseController { public R getInfo() { UserInfoVo userInfoVo = new UserInfoVo(); LoginUser loginUser = LoginHelper.getLoginUser(); + if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { // 超级管理员 如果重新加载用户信息需清除动态租户 TenantHelper.clearDynamic(); } + SysUserVo user = userService.selectUserById(loginUser.getUserId()); if (ObjectUtil.isNull(user)) { return R.fail("没有权限访问用户数据!"); } + + // 获取 ImAgentAdmin 信息 + ImAgentAdmin tokenInfo = getImAgentAdminBySysId(loginUser.getUserId()); + + // 如果不存在,创建新的 + if (tokenInfo == null) { + imAgentAdminService.insertAgentData(loginUser.getUserId(), user.getNickName()); + tokenInfo = getImAgentAdminBySysId(loginUser.getUserId()); + } + userInfoVo.setUser(user); + userInfoVo.setTokenInfo(tokenInfo); userInfoVo.setPermissions(loginUser.getMenuPermission()); userInfoVo.setRoles(loginUser.getRolePermission()); + return R.ok(userInfoVo); } + /** + * 根据 sysId 获取 ImAgentAdmin 信息 + */ + private ImAgentAdmin getImAgentAdminBySysId(Long sysId) { + ImAgentAdminBo bo = new ImAgentAdminBo(); + bo.setSysId(sysId); + + List list = imAgentAdminService.queryList(bo); + + if (CollUtil.isNotEmpty(list)) { + ImAgentAdminVo vo = list.get(0); + // 转换为 ImAgentAdmin 实体 + ImAgentAdmin admin = new ImAgentAdmin(); + BeanUtil.copyProperties(vo, admin); + return admin; + } + + return null; + } + /** * 根据用户编号获取详细信息 * diff --git a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java index 48fa92a..239ca99 100644 --- a/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java +++ b/im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java @@ -1,6 +1,7 @@ package org.dromara.system.domain.vo; import lombok.Data; +import org.dromara.system.domain.ImAgentAdmin; import java.util.Set; @@ -27,4 +28,9 @@ public class UserInfoVo { */ private Set roles; + /** + * 用户基本信息 + */ + private ImAgentAdmin tokenInfo; + }