-- ========================================
-- 团播机构 v1.2.0 后台管理菜单配置脚本
-- 创建时间: 2025-01-25
-- 说明: CDK 管理菜单和权限配置
-- 数据库: 后台管理数据库 (admin)
-- ========================================

PRINT '开始执行 v1.2.0 后台管理菜单配置脚本...'
PRINT '执行时间: ' + CONVERT(VARCHAR, GETDATE(), 120)

-- ========================================
-- 1. 插入 CDK 管理菜单
-- ========================================
PRINT '正在插入 CDK 管理菜单...'

-- 检查是否已存在
IF NOT EXISTS (SELECT 1 FROM sys_menu WHERE path = 'tcdk' AND component = 'liveforum/tcdk')
BEGIN
    -- 插入 CDK 管理菜单 (父菜单ID: 1233 - 系统配置)
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('CDK管理', 1233, 10, 'tcdk', 'liveforum/tcdk', 1, 0, 'C', '0', '0', 'cdk:list', 'key', 'admin', GETDATE(), 'admin', GETDATE(), 'CDK激活码管理');
    
    DECLARE @cdkMenuId BIGINT = SCOPE_IDENTITY();
    PRINT '✓ CDK 管理菜单插入成功，menuId: ' + CAST(@cdkMenuId AS VARCHAR);
    
    -- 插入权限按钮
    -- 查询权限
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('查询', @cdkMenuId, 1, '#', NULL, 1, 0, 'F', '0', '0', 'cdk:query', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    -- 生成权限
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('生成', @cdkMenuId, 2, '#', NULL, 1, 0, 'F', '0', '0', 'cdk:generate', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    -- 删除权限
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('删除', @cdkMenuId, 3, '#', NULL, 1, 0, 'F', '0', '0', 'cdk:delete', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    -- 导出权限
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('导出', @cdkMenuId, 4, '#', NULL, 1, 0, 'F', '0', '0', 'cdk:export', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    -- 设置权限（用于CDK功能开关）
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('设置', @cdkMenuId, 5, '#', NULL, 1, 0, 'F', '0', '0', 'settings:edit', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    -- 查询设置权限
    INSERT INTO sys_menu (menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
    VALUES ('查询设置', @cdkMenuId, 6, '#', NULL, 1, 0, 'F', '0', '0', 'settings:query', '#', 'admin', GETDATE(), 'admin', GETDATE(), NULL);
    
    PRINT '✓ CDK 权限按钮插入成功';
    
    -- 为管理员角色分配权限
    INSERT INTO sys_role_menu (Role_id, Menu_id, Create_time)
    SELECT 1, menuId, GETDATE()
    FROM sys_menu 
    WHERE menuId >= @cdkMenuId;
    
    PRINT '✓ CDK 菜单权限分配成功';
END
ELSE
BEGIN
    PRINT '⚠ CDK 管理菜单已存在，跳过插入';
END

-- ========================================
-- 2. 验证配置结果
-- ========================================
PRINT '正在验证配置结果...'

IF EXISTS (SELECT 1 FROM sys_menu WHERE path = 'tcdk' AND component = 'liveforum/tcdk')
    PRINT '✓ CDK 管理菜单验证通过'
ELSE
    PRINT '✗ CDK 管理菜单验证失败'

-- ========================================
-- 配置完成
-- ========================================
PRINT ''
PRINT '========================================='
PRINT 'v1.2.0 后台管理菜单配置脚本执行完成！'
PRINT '完成时间: ' + CONVERT(VARCHAR, GETDATE(), 120)
PRINT '========================================='
PRINT ''
PRINT '配置内容总结:'
PRINT '1. ✓ CDK 管理菜单 (路径: tcdk, 组件: liveforum/tcdk)'
PRINT '2. ✓ 权限按钮: 查询、生成、删除、导出、设置、查询设置'
PRINT '3. ✓ 管理员角色权限分配'
PRINT ''
PRINT '注意事项:'
PRINT '- 菜单位于"系统配置"目录下'
PRINT '- 需要刷新浏览器或重新登录才能看到新菜单'
PRINT '========================================='
