-- ========================================================
-- 工作流审批中心 - 菜单及权限初始化 SQL
-- 适用：BladeX 微服务平台（标准版，无多租户字段）
-- 说明：给所有人查看，不设置按钮级权限
-- 执行方式：在数据库客户端中逐条执行，或作为脚本批量执行
-- ========================================================

-- --------------------------------------------------------
-- 1. 插入菜单数据（blade_menu 表）
--    标准版字段：不含 tenant_id
-- --------------------------------------------------------

-- 父菜单：工作流审批中心
INSERT INTO blade_menu (
    id, parent_id, code, name, alias, 
    path, source, sort, category, action, 
    is_open, remark, is_deleted
) VALUES (
    10001, 0, 'workflow', '业务流程', '工作流审批中心',
    '/workflow', 'icon-caidan', 1, 1, 0,
    2, '工作流审批中心', 0
);

-- 子菜单：我的待办
INSERT INTO blade_menu (
    id, parent_id, code, name, alias, 
    path, source, sort, category, action, 
    is_open, remark, is_deleted
) VALUES (
    10002, 10001, 'workflow_todo', '我的待办', '我的待办',
    '/workflow/todo', 'iconfont iconicon_study', 1, 1, 0,
    2, '我的待办任务', 0
);

-- 子菜单：我的已办
INSERT INTO blade_menu (
    id, parent_id, code, name, alias, 
    path, source, sort, category, action, 
    is_open, remark, is_deleted
) VALUES (
    10003, 10001, 'workflow_done', '我的已办', '我的已办',
    '/workflow/done', 'iconfont iconicon_study', 2, 1, 0,
    2, '我的已办记录', 0
);

-- 子菜单：我的申请
INSERT INTO blade_menu (
    id, parent_id, code, name, alias, 
    path, source, sort, category, action, 
    is_open, remark, is_deleted
) VALUES (
    10004, 10001, 'workflow_my', '我的申请', '我的申请',
    '/workflow/my', 'iconfont iconicon_study', 3, 1, 0,
    2, '我的申请流程', 0
);

-- 子菜单：我的流程（统一视图）
INSERT INTO blade_menu (
    id, parent_id, code, name, alias, 
    path, source, sort, category, action, 
    is_open, remark, is_deleted
) VALUES (
    10005, 10001, 'workflow_process', '我的流程', '我的流程',
    '/workflow/process', 'iconfont iconicon_study', 4, 1, 0,
    2, '我的流程统一视图', 0
);

-- --------------------------------------------------------
-- 2. 分配菜单给所有角色（blade_role_menu 表）
--    不设置按钮权限，所有登录用户均可查看
-- --------------------------------------------------------

-- 获取所有角色并分配菜单（排除已删除的角色）
-- 注意：如果只需要给特定角色，请修改 WHERE 条件

INSERT INTO blade_role_menu (role_id, menu_id)
SELECT r.id, 10001 FROM blade_role r WHERE r.is_deleted = 0;

INSERT INTO blade_role_menu (role_id, menu_id)
SELECT r.id, 10002 FROM blade_role r WHERE r.is_deleted = 0;

INSERT INTO blade_role_menu (role_id, menu_id)
SELECT r.id, 10003 FROM blade_role r WHERE r.is_deleted = 0;

INSERT INTO blade_role_menu (role_id, menu_id)
SELECT r.id, 10004 FROM blade_role r WHERE r.is_deleted = 0;

INSERT INTO blade_role_menu (role_id, menu_id)
SELECT r.id, 10005 FROM blade_role r WHERE r.is_deleted = 0;

-- --------------------------------------------------------
-- 3. 【可选】仅给管理员角色分配（注释掉上方批量插入，取消下方注释）
-- --------------------------------------------------------
/*
INSERT INTO blade_role_menu (role_id, menu_id) VALUES (1, 10001);
INSERT INTO blade_role_menu (role_id, menu_id) VALUES (1, 10002);
INSERT INTO blade_role_menu (role_id, menu_id) VALUES (1, 10003);
INSERT INTO blade_role_menu (role_id, menu_id) VALUES (1, 10004);
INSERT INTO blade_role_menu (role_id, menu_id) VALUES (1, 10005);
*/

-- ========================================================
-- 回滚 SQL（如需删除工作流审批中心菜单及权限）
-- 执行方式：单独执行以下语句，或取消注释后批量执行
-- ========================================================

-- --------------------------------------------------------
-- 步骤 1：删除角色菜单关联（blade_role_menu 表）
-- --------------------------------------------------------
-- 删除所有角色与工作流菜单的关联
DELETE FROM blade_role_menu WHERE menu_id IN (10001, 10002, 10003, 10004, 10005);

-- --------------------------------------------------------
-- 步骤 2：删除菜单数据（blade_menu 表）
-- --------------------------------------------------------
-- 先删除子菜单，再删除父菜单（避免外键约束问题）
DELETE FROM blade_menu WHERE id IN (10002, 10003, 10004, 10005);
DELETE FROM blade_menu WHERE id = 10001;

-- --------------------------------------------------------
-- 步骤 3：【可选】清理按钮权限（如果后续添加了按钮级权限）
-- --------------------------------------------------------
-- 如果为工作流菜单添加了按钮权限（blade_menu 表中 category=2 的记录），一并删除
-- DELETE FROM blade_role_menu WHERE menu_id IN (
--     SELECT id FROM blade_menu WHERE parent_id IN (10001, 10002, 10003, 10004, 10005)
-- );
-- DELETE FROM blade_menu WHERE parent_id IN (10001, 10002, 10003, 10004, 10005);

-- --------------------------------------------------------
-- 回滚验证查询（执行回滚后，以下查询应返回空结果）
-- --------------------------------------------------------
-- SELECT * FROM blade_menu WHERE id IN (10001, 10002, 10003, 10004, 10005);
-- SELECT * FROM blade_role_menu WHERE menu_id IN (10001, 10002, 10003, 10004, 10005);