-- ============================================================
-- 物业人员管理 - 菜单数据初始化SQL
-- 功能: 为Web端左侧菜单和Android端工作台提供菜单入口
-- 数据库: MicroCommunity
-- ============================================================
-- 使用方法：
--   方案一（推荐）: 登录Web后台 → 开发管理 → 手动添加菜单目录/菜单组/菜单项
--   方案二: 直接执行此SQL（注意先检查ID是否冲突）
-- ============================================================

-- ============================================================
-- 方案一：通过Web后台界面添加（推荐，无需执行SQL）
-- ============================================================
-- 1. 登录系统 -> 开发管理 -> 菜单目录 -> 新增目录：
--    名称: 人员管理, URL: #, 序号: 99, 是否显示: Y
-- 2. 开发管理 -> 菜单组 -> 新增菜单组（选择刚创建的目录）：
--    名称: 轨迹监控, 图标: el-icon-map-location, 序号: 1
--    名称: 打卡管理, 图标: el-icon-time, 序号: 2
--    名称: 保安巡更, 图标: el-icon-warning, 序号: 3
--    名称: 保洁作业, 图标: el-icon-brush, 序号: 4
--    名称: 工单管理, 图标: el-icon-s-tools, 序号: 5
--    名称: 人员管理, 图标: el-icon-user, 序号: 6
-- 3. 开发管理 -> 菜单 -> 为每个菜单组新增菜单项：
--    轨迹监控 → 轨迹查询: /property/track
--    打卡管理 → 打卡记录: /property/attendance
--    保安巡更 → 巡更记录: /property/patrol
--    保洁作业 → 作业记录: /property/cleaning
--    工单管理 → 工单列表: /property/repair
--    人员管理 → 人员列表: /property/staff
--    工单管理 → 提交工单: /property/submitRepair (APP端用)

-- ============================================================
-- 方案二：直接执行SQL（根据实际store_type调整）
-- ============================================================
-- 注意事项：
--   1. store_type 值根据实际项目确定，常见值: 800900000001(物业)
--   2. 执行前先查询确认ID不冲突
--   3. 执行后可能需要刷新页面或重新登录

-- 设置变量（请根据实际数据库调整store_type）
SET @store_type = '800900000003'; -- 物业类型，根据实际情况调整
SET @ca_id = '20260511001';

-- ============================================================
-- 1. 创建菜单目录（Web端顶部导航标签）
-- ============================================================
-- 表结构: m_menu_catalog(store_type, ca_id, name, icon, seq, url, is_show, priv_id)
INSERT INTO m_menu_catalog (store_type, ca_id, name, icon, seq, url, is_show, priv_id)
VALUES (@store_type, @ca_id, '人员管理', 'el-icon-s-custom', 99, '#', 'Y', '')
ON DUPLICATE KEY UPDATE name = '人员管理';

-- ============================================================
-- 2. 创建菜单组（Web端左侧一级菜单 / Android工作台分组）
-- ============================================================
-- 表结构: m_menu_group(g_id, name, icon, label, seq, description, group_type, store_type)

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511101', '轨迹监控', 'el-icon-map-location', '轨迹监控', 1, '物业人员轨迹监控', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '轨迹监控';

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511102', '打卡管理', 'el-icon-time', '打卡管理', 2, '上下班打卡记录管理', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '打卡管理';

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511103', '保安巡更', 'el-icon-warning', '保安巡更', 3, '保安巡更记录管理', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '保安巡更';

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511104', '保洁作业', 'el-icon-brush', '保洁作业', 4, '保洁作业记录管理', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '保洁作业';

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511105', '工单管理', 'el-icon-s-tools', '工单管理', 5, '维修工单管理', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '工单管理';

INSERT INTO m_menu_group (g_id, name, icon, label, seq, description, group_type, store_type)
VALUES ('20260511106', '人员管理', 'el-icon-user', '人员管理', 6, '物业人员列表管理', 'P_WEB', @store_type)
ON DUPLICATE KEY UPDATE name = '人员管理';

-- ============================================================
-- 3. 关联菜单目录与菜单组（目录与菜单组的映射关系）
-- ============================================================
-- 表结构: m_menu_group_catalog(store_type, g_id, gc_id, ca_id)

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511101', CONCAT('GC20260511101'), @ca_id);

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511102', CONCAT('GC20260511102'), @ca_id);

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511103', CONCAT('GC20260511103'), @ca_id);

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511104', CONCAT('GC20260511104'), @ca_id);

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511105', CONCAT('GC20260511105'), @ca_id);

INSERT INTO m_menu_group_catalog (store_type, g_id, gc_id, ca_id)
VALUES (@store_type, '20260511106', CONCAT('GC20260511106'), @ca_id);

-- ============================================================
-- 3.5 关联菜单组与小区（物业类型必须配置，否则菜单不显示）
-- ============================================================
-- 表结构: m_menu_group_community(g_id, gc_id, name, community_name, community_id)
-- 将菜单组分配到指定小区，支持不同小区看到不同的菜单
-- 根据实际 community_id 和 community_name 调整

INSERT IGNORE INTO m_menu_group_community (g_id, gc_id, name, community_name, community_id)
SELECT mg.g_id, CONCAT('GC_CM_', mg.g_id), mg.name, '请修改为实际小区名称', '请修改为实际community_id'
FROM m_menu_group mg
WHERE mg.g_id IN ('20260511101','20260511102','20260511103','20260511104','20260511105','20260511106')
  AND mg.store_type = @store_type;

-- ============================================================
-- 4. 创建菜单项（子菜单，对应具体页面路由）
-- ============================================================
-- 表结构: m_menu(m_id, name, g_id, url, seq, p_id, description, is_show)
-- url 格式: Web端用 /property/xxx，Android端通过 href.contains("keyword") 匹配路由

-- 轨迹监控 -> 轨迹查询
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511201', '轨迹查询', '20260511101', '/property/track', 1, '', '查看人员历史行动轨迹', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/track';

-- 打卡管理 -> 打卡记录
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511202', '打卡记录', '20260511102', '/property/attendance', 1, '', '查看上下班打卡记录', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/attendance';

-- 保安巡更 -> 巡更记录
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511203', '巡更记录', '20260511103', '/property/patrol', 1, '', '查看保安巡更记录', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/patrol';

-- 保洁作业 -> 作业记录
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511204', '作业记录', '20260511104', '/property/cleaning', 1, '', '查看保洁作业记录', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/cleaning';

-- 工单管理 -> 工单列表
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511205', '工单列表', '20260511105', '/property/repair', 1, '', '维修工单管理', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/repair';

-- 工单管理 -> 提交工单（Android端使用）
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511206', '提交工单', '20260511105', '/property/submitRepair', 2, '', '提交维修工单(APP端使用)', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/submitRepair';

-- 人员管理 -> 人员列表
INSERT INTO m_menu (m_id, name, g_id, url, seq, p_id, description, is_show)
VALUES ('20260511207', '人员列表', '20260511106', '/property/staff', 1, '', '物业人员列表', 'Y')
ON DUPLICATE KEY UPDATE url = '/property/staff';

-- ============================================================
-- 5. 创建权限（p_privilege表）- 菜单与权限关联
-- ============================================================
-- 表结构: p_privilege(p_id, name, m_id, domain, status_cd)
INSERT IGNORE INTO p_privilege (p_id, name, m_id, domain, status_cd)
SELECT CONCAT('PRIV', m_id), name, m_id, @store_type, '0'
FROM m_menu WHERE g_id IN ('20260511101','20260511102','20260511103','20260511104','20260511105','20260511106');

-- ============================================================
-- 验证SQL：执行后查询确认
-- ============================================================
-- SELECT * FROM m_menu_catalog WHERE ca_id = @ca_id;
-- SELECT * FROM m_menu_group WHERE g_id LIKE '202605111%';
-- SELECT * FROM m_menu_group_catalog WHERE ca_id = @ca_id;
-- SELECT * FROM m_menu WHERE g_id LIKE '202605111%';
