44 lines
2.0 KiB
SQL
44 lines
2.0 KiB
SQL
-- Local direct-SQL companion for V3.1.44.
|
|
SELECT set_config('app.current_tenant', '0', false);
|
|
|
|
WITH target_menu AS (
|
|
SELECT id, name FROM sys_menu
|
|
WHERE route_name IN ('organization_employee', 'manage_user') AND COALESCE(is_deleted, 0) = 0
|
|
ORDER BY CASE route_name WHEN 'organization_employee' THEN 0 ELSE 1 END
|
|
LIMIT 1
|
|
), desired_permissions(id, name, resource, sort) AS (
|
|
VALUES
|
|
(310230000008::bigint, '调动部门', 'sys:user:transfer', 8),
|
|
(310230000009::bigint, '用户启停', 'sys:user:status', 9)
|
|
)
|
|
INSERT INTO sys_permission (
|
|
id, menu_id, menu_name, name, resource, description, sort, status,
|
|
customer_id, create_user, create_user_id, create_time, update_user, update_user_id, update_time, is_deleted
|
|
)
|
|
SELECT p.id, m.id, m.name, p.name, p.resource, '', p.sort, '1', 0,
|
|
'system', 0, NOW(), 'system', 0, NOW(), 0
|
|
FROM desired_permissions p CROSS JOIN target_menu m
|
|
ON CONFLICT (id) DO UPDATE
|
|
SET menu_id = EXCLUDED.menu_id, menu_name = EXCLUDED.menu_name,
|
|
name = EXCLUDED.name, resource = EXCLUDED.resource, sort = EXCLUDED.sort,
|
|
status = '1', customer_id = 0, update_time = NOW(), is_deleted = 0;
|
|
|
|
WITH desired_permissions(id) AS (
|
|
VALUES (310230000008::bigint), (310230000009::bigint)
|
|
), target_roles AS (
|
|
SELECT id AS role_id FROM sys_role
|
|
WHERE COALESCE(is_deleted, 0) = 0
|
|
AND role_code IN ('PLATFORM_ADMIN', 'TENANT_ADMIN', 'ADMIN', 'tenant_admin', 'DAdmin', 'dept_manager')
|
|
), missing_grants AS (
|
|
SELECT r.role_id, p.id AS permission_id,
|
|
310230200000 + ROW_NUMBER() OVER (ORDER BY r.role_id, p.id) AS id
|
|
FROM target_roles r CROSS JOIN desired_permissions p
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM sys_role_permission rp
|
|
WHERE rp.role_id = r.role_id AND rp.permission_id = p.id AND COALESCE(rp.is_deleted, 0) = 0
|
|
)
|
|
)
|
|
INSERT INTO sys_role_permission (id, role_id, permission_id, create_user, create_user_id, create_time, is_deleted)
|
|
SELECT id, role_id, permission_id, 'system', 0, NOW(), 0 FROM missing_grants
|
|
ON CONFLICT (id) DO NOTHING;
|