coder-common-thin-backend/sql/20250927-sys_user_online.sql
Leo b689713e3a feat(monitor): 新增在线用户管理功能数据库配置
- 添加系统监控菜单模块
- 新增在线用户管理菜单权限配置
- 配置查看、踢下线、强制注销等权限
- 支持基于Sa-Token + Redis的无表设计
- 为管理员角色分配在线用户管理权限
2025-09-27 17:50:54 +08:00

93 lines
5.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 在线用户管理功能SQL脚本
*
* 功能说明:
* 1. 基于Sa-Token + Redis实现无需专门的在线用户表
* 2. 仅需菜单权限配置用户数据完全存储在Redis会话中
* 3. 支持实时查看在线用户、踢人下线、强制注销等功能
*
* 作者Leocoder
* 创建时间2025-09-27
*/
-- ----------------------------
-- 在线用户管理菜单权限配置
-- ----------------------------
-- 1. 系统监控菜单(如果不存在)
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`)
SELECT 2000, '系统监控', 'System Monitor', 0, '1', '/monitor', 'monitorPage', '', 'Monitor', 'monitor:auth', '0', NULL, '1', '', '0', '1', '1', '1', 3, 'system', NOW(), 'system', NOW()
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `menu_id` = 2000);
-- 2. 在线用户菜单
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`)
VALUES (2001, '在线用户', 'Online Users', 2000, '2', '/monitor/online', 'onlineUsersPage', 'monitor/online/index', 'UserFilled', 'monitor:online:list', '0', NULL, '1', '', '1', '1', '1', '1', 1, 'system', NOW(), 'system', NOW());
-- 3. 在线用户-查看权限
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`)
VALUES (2002, '查看', 'View', 2001, '3', '', NULL, NULL, '', 'monitor:online:list', '0', NULL, '0', '', '0', '1', '1', '1', 1, 'system', NOW(), 'system', NOW());
-- 4. 在线用户-踢人下线权限
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`)
VALUES (2003, '踢人下线', 'Kick Out', 2001, '3', '', NULL, NULL, '', 'monitor:online:kickout', '0', NULL, '0', '', '0', '1', '1', '1', 2, 'system', NOW(), 'system', NOW());
-- 5. 在线用户-强制注销权限
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `en_name`, `parent_id`, `menu_type`, `path`, `name`, `component`, `icon`, `auth`, `menu_status`, `active_menu`, `is_hide`, `is_link`, `is_keep_alive`, `is_full`, `is_affix`, `is_spread`, `sorted`, `create_by`, `create_time`, `update_by`, `update_time`)
VALUES (2004, '强制注销', 'Force Logout', 2001, '3', '', NULL, NULL, '', 'monitor:online:logout', '0', NULL, '0', '', '0', '1', '1', '1', 3, 'system', NOW(), 'system', NOW());
-- ----------------------------
-- 角色权限关联(管理员角色拥有在线用户管理权限)
-- ----------------------------
-- 给管理员角色分配在线用户菜单权限
-- 注意这里假设管理员角色ID为1请根据实际情况调整
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 1, 2000 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2000);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 1, 2001 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2001);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 1, 2002 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2002);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 1, 2003 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2003);
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 1, 2004 WHERE NOT EXISTS (SELECT 1 FROM `sys_role_menu` WHERE `role_id` = 1 AND `menu_id` = 2004);
-- ----------------------------
-- 执行说明
-- ----------------------------
/*
执行此脚本后,系统将具备以下功能:
1. 🎯 功能特性:
✅ 实时查看所有在线用户
✅ 显示用户详细信息IP、设备、浏览器等
✅ 支持按登录名、用户名、IP地址过滤
✅ 分页显示
✅ 踢人下线功能
✅ 强制注销功能
2. 🔐 权限控制:
✅ monitor:online:list - 查看在线用户列表
✅ monitor:online:kickout - 踢人下线权限
✅ monitor:online:logout - 强制注销权限
3. 🏗️ 实现原理:
✅ 基于Sa-Token会话管理
✅ 数据存储在Redis中
✅ 无需额外数据表
✅ 实时性能优秀
4. 📱 前端菜单路径:
/monitor/online - 在线用户管理页面
✅ 位于系统监控模块下
注意事项:
- 确保系统已集成Sa-Token和Redis
- 确保角色权限表存在且管理员角色ID正确
- 执行前请备份相关表数据
*/