/*
 * 在线用户管理功能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正确
- 执行前请备份相关表数据
*/