Files
ljwx-deploy/apps/ljwx-health/base/sql/epic-360/60-user-transfer-status-permissions.sql
T

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;