-- 011_house_menu.sql -- 看房系统(House)菜单 + API 权限种子。 -- 约定:type=1 菜单(component 指向 views/house/xxx/index.vue);type=2 API 权限(path 为完整 "METHOD /api/service/admin/...")。 -- 依赖:先执行 010_house_tables.sql(建表)+ 已存在 admin_menu/admin_role_menu 结构。 -- 幂等:INSERT ... ON DUPLICATE KEY UPDATE + INSERT IGNORE,可重复执行。 -- ============ 1) 看房中心菜单(type=1) ============ INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES (90, 0, '看房中心', 'mdi:home-city', 1, '/house', '', 'house:center', 6, 1, 0, NOW(), NOW()), (91, 90, '小区管理', 'mdi:domain', 1, 'community', 'house/community/index', 'house:community', 1, 1, 0, NOW(), NOW()), (92, 90, '房源管理', 'mdi:home-search', 1, 'listing', 'house/listing/index', 'house:listing', 2, 1, 0, NOW(), NOW()), (93, 90, '数据看板', 'mdi:chart-box', 1, 'dashboard', 'house/dashboard/index', 'house:dashboard', 3, 1, 0, NOW(), NOW()), (94, 90, '数据明细', 'mdi:database', 1, 'data', 'house/data/index', 'house:data', 4, 1, 0, NOW(), NOW()) ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type), path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort), status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL; -- ============ 2) 小区管理按钮(type=2) ============ INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES (910, 91, '查询', '', 2, 'POST /api/service/admin/house/community/list', '', 'house:community:list', 1, 1, 0, NOW(), NOW()), (911, 91, '新增', '', 2, 'POST /api/service/admin/house/community/create', '', 'house:community:create', 2, 1, 0, NOW(), NOW()), (912, 91, '编辑', '', 2, 'POST /api/service/admin/house/community/update/{id}', '', 'house:community:update', 3, 1, 0, NOW(), NOW()), (913, 91, '删除', '', 2, 'POST /api/service/admin/house/community/delete/{id}', '', 'house:community:delete', 4, 1, 0, NOW(), NOW()) ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type), path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort), status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL; -- ============ 3) 房源管理按钮(type=2) ============ INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES (920, 92, '查询', '', 2, 'POST /api/service/admin/house/listing/list', '', 'house:listing:list', 1, 1, 0, NOW(), NOW()), (921, 92, '新增', '', 2, 'POST /api/service/admin/house/listing/create', '', 'house:listing:create', 2, 1, 0, NOW(), NOW()), (922, 92, '编辑', '', 2, 'POST /api/service/admin/house/listing/update/{id}', '', 'house:listing:update', 3, 1, 0, NOW(), NOW()), (923, 92, '删除', '', 2, 'POST /api/service/admin/house/listing/delete/{id}', '', 'house:listing:delete', 4, 1, 0, NOW(), NOW()), (924, 92, '标记', '', 2, 'POST /api/service/admin/house/listing/batch-mark', '', 'house:listing:batchMark', 5, 1, 0, NOW(), NOW()) ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type), path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort), status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL; -- ============ 4) 数据看板按钮(type=2) ============ INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES (930, 93, '概览', '', 2, 'POST /api/service/admin/house/dashboard/overview', '', 'house:dashboard:overview', 1, 1, 0, NOW(), NOW()), (931, 93, '地图点', '', 2, 'POST /api/service/admin/house/dashboard/map-points', '', 'house:dashboard:mapPoints', 2, 1, 0, NOW(), NOW()), (932, 93, '价格趋势', '', 2, 'POST /api/service/admin/house/dashboard/price-trend', '', 'house:dashboard:priceTrend', 3, 1, 0, NOW(), NOW()), (933, 93, '区域聚合', '', 2, 'POST /api/service/admin/house/dashboard/aggregate-region', '', 'house:dashboard:aggregateRegion', 4, 1, 0, NOW(), NOW()) ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type), path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort), status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL; -- ============ 5) 数据明细按钮(type=2,快照/成交/配套/学区共用 list) ============ INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES (940, 94, '查询', '', 2, 'POST /api/service/admin/house/snapshot/list', '', 'house:data:list', 1, 1, 0, NOW(), NOW()) ON DUPLICATE KEY UPDATE parent_id=VALUES(parent_id), name=VALUES(name), icon=VALUES(icon), type=VALUES(type), path=VALUES(path), component=VALUES(component), permission=VALUES(permission), sort=VALUES(sort), status=VALUES(status), hidden=VALUES(hidden), deleted_at=NULL; -- ============ 6) 超管角色绑定新菜单(role_id=1 超管) ============ INSERT IGNORE INTO admin_role_menu (role_id, menu_id, created_at, updated_at) SELECT 1, id, NOW(), NOW() FROM admin_menu WHERE id IN (90,91,92,93,94,910,911,912,913,920,921,922,923,924,930,931,932,933,940);