Browse Source

添加后台token插入

master
[yxf] 1 month ago
parent
commit
65fdfa852b
  1. 3
      im-admin-ui/src/layout/index.vue
  2. 56
      im-admin-ui/src/views/im/code/components/alink.vue
  3. 68
      im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  4. 6
      im-admin/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java

3
im-admin-ui/src/layout/index.vue

@ -69,7 +69,8 @@ onMounted(() => {
onMounted(() => { onMounted(() => {
let protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; 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 = () => { const handleClickOutside = () => {

56
im-admin-ui/src/views/im/code/components/alink.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="content"> <div class="content">
<div class="code-content-wrap"> <div class="code-content-wrap">
<textarea id="NormalCodeTextarealink1" class="code" rows="1">{{ siteUrl }}/h5</textarea> <textarea id="NormalCodeTextarealink1" class="code" rows="1">{{ linkUrl3 }}</textarea>
<div class="other-wrap"> <div class="other-wrap">
<a class="btn btn-blue btn-large mr10" :href="linkUrl3" target="_blank">点击体验</a> <a class="btn btn-blue btn-large mr10" :href="linkUrl3" target="_blank">点击体验</a>
<a class="btn btn-blue btn-large" href="javascript:void(0);" @click="getCopy('NormalCodeTextarealink1')"><span>复制代码</span></a> <a class="btn btn-blue btn-large" href="javascript:void(0);" @click="getCopy('NormalCodeTextarealink1')"><span>复制代码</span></a>
@ -9,7 +9,10 @@
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getInfo } from '@/api/login';
export default { export default {
name: 'Alink', name: 'Alink',
@ -17,23 +20,54 @@ export default {
tokeninfo: {}, tokeninfo: {},
siteUrl: '' siteUrl: ''
}, },
data() {
return {
uniqueToken: '',
loading: false
};
},
computed: { computed: {
// linkUrl1() {
// return `${location.origin}/chat/index?token=${this.tokeninfo.token_md5}&noCanClose=1`;
// },
// linkUrl2() {
// return `${location.origin}/chat/index?token=${this.tokeninfo.token_md5}&noCanClose=1&deviceType=Mobile`;
// },
linkUrl3() { linkUrl3() {
// return `${location.origin}/chat/index?token=${this.tokeninfo.token_md5}&noCanClose=1`; const baseUrl = `${location.origin}/h5`;
return `${location.origin}/h5`;
if (this.uniqueToken) {
return `${baseUrl}?uniqueToken=${this.uniqueToken}`;
}
return baseUrl;
} }
}, },
mounted() {},
mounted() {
this.fetchUserInfo();
},
methods: { methods: {
//
async fetchUserInfo() {
this.loading = true;
try {
const res = await getInfo();
// tokenInfo
if (res.data && res.data.tokenInfo) {
this.uniqueToken = res.data.tokenInfo.uniqueToken || '';
}
} catch (error) {
// props
if (this.tokeninfo && typeof this.tokeninfo === 'object') {
this.uniqueToken = this.tokeninfo.uniqueToken || '';
}
} finally {
this.loading = false;
}
},
getCopy(id) { getCopy(id) {
this.$emit('cgetCopy', id); this.$emit('cgetCopy', id);
} }
} }
}; };
</script> </script>

68
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.annotation.SaCheckPermission;
import cn.dev33.satoken.secure.BCrypt; 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.lang.tree.Tree;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; 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.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.ImAgentAdmin;
import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.bo.*;
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.vo.*; import org.dromara.system.domain.vo.*;
import org.dromara.system.listener.SysUserImportListener; import org.dromara.system.listener.SysUserImportListener;
import org.dromara.system.service.*; import org.dromara.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -55,6 +56,8 @@ public class SysUserController extends BaseController {
private final ISysPostService postService; private final ISysPostService postService;
private final ISysDeptService deptService; private final ISysDeptService deptService;
private final ISysTenantService tenantService; private final ISysTenantService tenantService;
@Autowired
private IImAgentAdminService imAgentAdminService;
private final IImAgentAdminService imAgentService; private final IImAgentAdminService imAgentService;
@ -100,6 +103,29 @@ public class SysUserController extends BaseController {
ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response); ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response);
} }
// /**
// * 获取用户信息
// *
// * @return 用户信息
// */
// @GetMapping("/getInfo")
// public R<UserInfoVo> 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<UserInfoVo> getInfo() { public R<UserInfoVo> getInfo() {
UserInfoVo userInfoVo = new UserInfoVo(); UserInfoVo userInfoVo = new UserInfoVo();
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
// 超级管理员 如果重新加载用户信息需清除动态租户 // 超级管理员 如果重新加载用户信息需清除动态租户
TenantHelper.clearDynamic(); TenantHelper.clearDynamic();
} }
SysUserVo user = userService.selectUserById(loginUser.getUserId()); SysUserVo user = userService.selectUserById(loginUser.getUserId());
if (ObjectUtil.isNull(user)) { if (ObjectUtil.isNull(user)) {
return R.fail("没有权限访问用户数据!"); 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.setUser(user);
userInfoVo.setTokenInfo(tokenInfo);
userInfoVo.setPermissions(loginUser.getMenuPermission()); userInfoVo.setPermissions(loginUser.getMenuPermission());
userInfoVo.setRoles(loginUser.getRolePermission()); userInfoVo.setRoles(loginUser.getRolePermission());
return R.ok(userInfoVo); return R.ok(userInfoVo);
} }
/**
* 根据 sysId 获取 ImAgentAdmin 信息
*/
private ImAgentAdmin getImAgentAdminBySysId(Long sysId) {
ImAgentAdminBo bo = new ImAgentAdminBo();
bo.setSysId(sysId);
List<ImAgentAdminVo> 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;
}
/** /**
* 根据用户编号获取详细信息 * 根据用户编号获取详细信息
* *

6
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; package org.dromara.system.domain.vo;
import lombok.Data; import lombok.Data;
import org.dromara.system.domain.ImAgentAdmin;
import java.util.Set; import java.util.Set;
@ -27,4 +28,9 @@ public class UserInfoVo {
*/ */
private Set<String> roles; private Set<String> roles;
/**
* 用户基本信息
*/
private ImAgentAdmin tokenInfo;
} }

Loading…
Cancel
Save