Files
smart-go/migrations/postgres/004_seed_platform_builtin.sql
2026-04-23 18:58:13 +08:00

123 lines
3.8 KiB
PL/PgSQL
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.
-- 平台租户内置角色 + 平台管理员账号(与 internal/iam/service 中租户初始化逻辑对齐)
-- 依赖:已执行 001_iam.sql、002_system.sql、003_seed_platform_tenant.sql
--
-- 默认管理员(平台租户 platform):
-- 用户名:admin
-- 密码:Admin@123 bcrypt DefaultCost,与 golang.org/x/crypto/bcrypt 一致)
--
-- 内置角色:
-- tenant_admin — 与 DefaultTenantAdminRoleCode 一致,data_scope=4(全部)
-- user — 普通用户占位,data_scope=1(本人)
BEGIN;
-- 固定 UUID,便于排查与文档引用
-- platform_tenant_id = 00000000-0000-0000-0000-000000000001
-- root_dept_id = 20000000-0000-4000-8000-000000000001
-- role_admin_id = 20000000-0000-4000-8000-000000000002
-- role_user_id = 20000000-0000-4000-8000-000000000006
-- admin_user_id = 20000000-0000-4000-8000-000000000003
-- 1) 平台根部门(与 TenantService.Create 中根部门一致)
INSERT INTO iam_dept (
id, tenant_id, parent_id, dept_name, dept_path, sort_order, status, created_at, updated_at
) VALUES (
'20000000-0000-4000-8000-000000000001',
'00000000-0000-0000-0000-000000000001',
'',
'平台',
'/20000000-0000-4000-8000-000000000001/',
0,
1,
now(),
now()
)
ON CONFLICT (id) DO NOTHING;
-- 2) 内置角色:租户超级管理员(与新租户初始化角色编码一致)
INSERT INTO iam_role (
id, tenant_id, role_code, role_name, data_scope, description, is_builtin, status, created_at, updated_at
) VALUES (
'20000000-0000-4000-8000-000000000002',
'00000000-0000-0000-0000-000000000001',
'tenant_admin',
'超级管理员',
4,
'内置:租户内全部数据权限(与 DefaultTenantAdminRoleCode 一致)',
true,
1,
now(),
now()
)
ON CONFLICT (id) DO NOTHING;
-- 3) 内置角色:普通用户(占位)
INSERT INTO iam_role (
id, tenant_id, role_code, role_name, data_scope, description, is_builtin, status, created_at, updated_at
) VALUES (
'20000000-0000-4000-8000-000000000006',
'00000000-0000-0000-0000-000000000001',
'user',
'普通用户',
1,
'内置:本人数据范围(DataScopeSelf',
true,
1,
now(),
now()
)
ON CONFLICT (id) DO NOTHING;
-- 4) 平台管理员用户(密码 Admin@123)
INSERT INTO iam_user (
id, tenant_id, dept_id, user_name, real_name, password_hash, status, created_at, updated_at
) VALUES (
'20000000-0000-4000-8000-000000000003',
'00000000-0000-0000-0000-000000000001',
'20000000-0000-4000-8000-000000000001',
'admin',
'平台管理员',
'$2a$10$8p7lXpy9mr7hhnAiOA8pNOgAU128xIWFxrU90iqw.F4VSw77vDEYO',
1,
now(),
now()
)
ON CONFLICT (id) DO NOTHING;
-- 5) 用户-部门(主部门)
INSERT INTO iam_user_dept (id, user_id, dept_id, is_primary, created_at)
VALUES (
'20000000-0000-4000-8000-000000000004',
'20000000-0000-4000-8000-000000000003',
'20000000-0000-4000-8000-000000000001',
true,
now()
)
ON CONFLICT (id) DO NOTHING;
-- 6) 用户-角色(绑定 tenant_admin
INSERT INTO iam_user_role (id, user_id, role_id, created_at)
VALUES (
'20000000-0000-4000-8000-000000000005',
'20000000-0000-4000-8000-000000000003',
'20000000-0000-4000-8000-000000000002',
now()
)
ON CONFLICT (id) DO NOTHING;
-- 7) 回写租户管理员
UPDATE iam_tenant
SET admin_user_id = '20000000-0000-4000-8000-000000000003'
WHERE id = '00000000-0000-0000-0000-000000000001';
-- 8) 将「超级管理员」与当前库中全部菜单关联(与 TenantService.Create 一致;无 iam_menu 数据时本步不插入行)
INSERT INTO iam_role_menu (id, role_id, menu_id, created_at)
SELECT gen_random_uuid()::text,
'20000000-0000-4000-8000-000000000002',
m.id,
now()
FROM iam_menu m
ON CONFLICT (role_id, menu_id) DO NOTHING;
COMMIT;