service.xpcool.com/manifest/sql/009_menu_rbac_v5.sql
夏犀麟 4aca0c7f6f
Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 5m7s
feat(house): 实现看房模块后端功能
- 新增 9 张房屋相关数据表(社区/楼宇/房源/价格快照/交易/设施/社区设施/学区/偏好)
- 添加菜单权限种子数据并绑定超级管理员角色
- 生成 DAO 层代码和实体对象
- 实现房屋模块 API 接口(社区/房源/看板)和控制器服务层
- 支持多平台软关联匹配、笋盘标记和低可信度标记功能
- 更新超级管理员账号为 xxcool/xxCool@2026
- 调整 RBAC 菜单结构,移除管理员管理功能,新增日志管理菜单
- 修复 RBAC 安全漏洞,确保禁用角色权限失效
- 重构认证模块,将登录相关接口迁移到统一包结构下
- 移除废弃的管理模块和工具类接口定义
- 为通用工具包添加中文注释和文档说明
2026-08-26 23:42:38 +08:00

45 lines
4.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 009_menu_rbac_v5.sql
-- 2026-08-26 RBAC 菜单结构调整二期
-- 1) 系统管理下新增"人员管理"id=8组件 system/admin/index复用管理员接口按钮 81-85system:personnel:*映射原 /admin/* 接口
-- 2) 日志管理id=7改为目录下拆"操作日志"id=71组件 system/log/index"登录日志"id=72组件 system/login-log/index
-- 原按钮 63system:log:list改挂到 71 新增 721system:login-log:listPOST /api/service/admin/system/login-log
-- 注意admin_menu.permission 有唯一索引菜单行与按钮行权限码必须不同
-- 操作日志菜单=system:operation-log查询按钮=system:log:list登录日志菜单=system:login-log查询按钮=system:login-log:list
-- 3) 菜单管理id=4图标由 mdi:menu-outline 改为 mdi:file-tree-outline原图标渲染异常
-- 4) 超管角色绑定新菜单
-- 依赖先执行 004_seed.sql + 007_menu_permissions_v3.sql + 008_menu_rbac_v4.sql
-- 幂等性INSERT ... ON DUPLICATE KEY UPDATE + UPDATE可重复执行
-- ============ 1) 人员管理菜单 + 按钮 ============
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(8, 1, '人员管理', 'mdi:account-outline', 1, 'personnel', 'system/admin/index', 'system:personnel', 4, 1, 0, NOW(), NOW()),
(81, 8, '查询', '', 2, 'POST /api/service/admin/admin/list', '', 'system:personnel:list', 1, 1, 0, NOW(), NOW()),
(82, 8, '新增', '', 2, 'POST /api/service/admin/admin/create', '', 'system:personnel:create', 2, 1, 0, NOW(), NOW()),
(83, 8, '编辑', '', 2, 'POST /api/service/admin/admin/update/{id}', '', 'system:personnel:update', 3, 1, 0, NOW(), NOW()),
(84, 8, '删除', '', 2, 'POST /api/service/admin/admin/delete/{id}', '', 'system:personnel:delete', 4, 1, 0, NOW(), NOW()),
(85, 8, '重置密码', '', 2, 'POST /api/service/admin/admin/resetPwd/{id}', '', 'system:personnel:resetPwd', 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;
-- ============ 2) 日志管理改目录 + 操作日志/登录日志 ============
UPDATE admin_menu SET path='/log', component='', sort=5, deleted_at=NULL WHERE id=7;
-- 操作日志菜单permission=system:operation-log与按钮 63 system:log:list 区分避免唯一索引冲突
INSERT INTO admin_menu (id, parent_id, name, icon, type, path, component, permission, sort, status, hidden, created_at, updated_at) VALUES
(71, 7, '操作日志', 'mdi:clipboard-text-outline', 1, 'operation', 'system/log/index', 'system:operation-log', 1, 1, 0, NOW(), NOW()),
(72, 7, '登录日志', 'mdi:login', 1, 'login', 'system/login-log/index', 'system:login-log', 2, 1, 0, NOW(), NOW()),
(721, 72, '查询', '', 2, 'POST /api/service/admin/system/login-log', '', 'system:login-log: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;
-- 原按钮 63system:log:list恢复为按钮行并挂到操作日志菜单71
UPDATE admin_menu SET parent_id=71, name='查询', type=2, icon='', path='POST /api/service/admin/system/log',
component='', permission='system:log:list', sort=1, status=1, hidden=0, deleted_at=NULL WHERE id=63;
-- ============ 3) 菜单管理图标修正 ============
UPDATE admin_menu SET icon='mdi:file-tree-outline' WHERE id=4;
-- ============ 4) 超管绑定新菜单 ============
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 (8,81,82,83,84,85,71,72,721);