-- =============================================
-- 报表模块 SQL 初始化脚本
-- 包含 GoView 大屏设计器相关表
-- =============================================

-- =============================================
-- 1. 数据库表结构
-- =============================================

-- 1.1 GoView 项目表（大屏设计器）
CREATE TABLE IF NOT EXISTS `report_go_view_project` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
    `name` varchar(100) NOT NULL COMMENT '项目名称',
    `pic_url` varchar(255) DEFAULT NULL COMMENT '预览图片 URL',
    `content` longtext COMMENT '报表内容（JSON 配置）',
    `status` tinyint NOT NULL DEFAULT 0 COMMENT '发布状态：0-已发布，1-未发布',
    `remark` varchar(500) DEFAULT NULL COMMENT '项目备注',
    `creator` varchar(64) DEFAULT '' COMMENT '创建者',
    `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updater` varchar(64) DEFAULT '' COMMENT '更新者',
    `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='GoView 项目表';

-- =============================================
-- 2. 菜单权限（如果主 SQL 中已包含，可跳过）
-- =============================================

-- 2.1 报表管理目录
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (1281, '报表管理', '', 1, 40, 0, '/report', 'ep:pie-chart', NULL, NULL, 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 2.2 报表设计器（JimuReport 积木报表）
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (1282, '报表设计器', '', 2, 1, 1281, 'jimu-report', 'ep:trend-charts', 'report/jmreport/index', 'JimuReport', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 2.3 大屏设计器（GoView）
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (2153, '大屏设计器', '', 2, 2, 1281, 'go-view', 'fa:area-chart', 'report/goview/index', 'GoView', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 2.4 仪表盘设计器（JimuBI）
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (5009, '仪表盘设计器', '', 2, 3, 1281, 'jimu-bi', 'fa:y-combinator', 'report/jmreport/bi', 'JimuBI', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- =============================================
-- 3. 角色菜单关联（给管理员角色分配报表权限）
-- =============================================

-- 注意：如果主 SQL 中已有这些记录，可能会冲突，可先删除再插入
-- DELETE FROM `system_role_menu` WHERE `menu_id` IN (1281, 1282, 2153, 5009);

-- 3.1 给角色 ID=2（假设为管理员）分配报表菜单权限
INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (2, 1281, '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (2, 1282, '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (2, 2153, '1', NOW(), '1', NOW(), b'0');

INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (2, 5009, '1', NOW(), '1', NOW(), b'0');

-- =============================================
-- 执行完成提示
-- =============================================
SELECT '报表模块 SQL 初始化完成！' AS result;
SELECT COUNT(*) AS go_view_project_count FROM report_go_view_project WHERE deleted = 0;