67 lines
3.1 KiB
SQL
67 lines
3.1 KiB
SQL
-- 通用 IAM 权限点独立初始化入口(MySQL 8.0)。
|
|
-- 国内与海外业务的 Admin/Client 权限主数据均在 baiyue_iam 统一管理。
|
|
-- 只允许写入 baiyue_iam 的权限资源和角色授权;
|
|
-- 不建表、不创建账号/客户/仓库,不写业务测试数据。
|
|
-- 前置:IAM 基础表、相关父菜单及系统角色已由全量基线创建。
|
|
USE baiyue_iam;
|
|
SET NAMES utf8mb4;
|
|
|
|
DROP PROCEDURE IF EXISTS apply_permission_points;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE apply_permission_points()
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM iam_permission WHERE id = 5102010 AND tenant_id = 0
|
|
AND permission_code = 'platform:order:list' AND permission_type = 'MENU') THEN
|
|
SIGNAL SQLSTATE '45000'
|
|
SET MESSAGE_TEXT = '权限初始化失败:订单列表父菜单不存在,请先执行全量基线';
|
|
END IF;
|
|
IF (SELECT COUNT(*) FROM iam_role WHERE id IN (4000001, 4000003) AND tenant_id = 0
|
|
AND app_code = 'PLATFORM' AND status = 'ACTIVE' AND deleted = 0) <> 2 THEN
|
|
SIGNAL SQLSTATE '45000'
|
|
SET MESSAGE_TEXT = '权限初始化失败:平台管理员或订单运营角色不存在';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM iam_permission WHERE id = 5102027
|
|
AND permission_code <> 'platform:order:declaration:edit')
|
|
OR EXISTS (SELECT 1 FROM iam_permission
|
|
WHERE permission_code = 'platform:order:declaration:edit' AND id <> 5102027) THEN
|
|
SIGNAL SQLSTATE '45000'
|
|
SET MESSAGE_TEXT = '权限初始化失败:5102027 或权限码已被其他语义占用';
|
|
END IF;
|
|
|
|
START TRANSACTION;
|
|
INSERT INTO iam_permission
|
|
(id, tenant_id, app_code, permission_type, parent_id, permission_code, permission_name,
|
|
route_path, http_method, sort_no, status, deleted)
|
|
VALUES
|
|
(5102027, 0, 'PLATFORM', 'BUTTON', 5102010, 'platform:order:declaration:edit',
|
|
'修改订单申报与运营预估', NULL, NULL, 130, 'ACTIVE', 0)
|
|
ON DUPLICATE KEY UPDATE
|
|
permission_name = VALUES(permission_name), parent_id = VALUES(parent_id),
|
|
permission_type = VALUES(permission_type), app_code = VALUES(app_code),
|
|
sort_no = VALUES(sort_no), status = 'ACTIVE', deleted = 0;
|
|
|
|
INSERT INTO iam_role_permission (role_id, permission_id, tenant_id)
|
|
SELECT role_id, 5102027, 0
|
|
FROM (SELECT 4000001 AS role_id UNION ALL SELECT 4000003 AS role_id) roles
|
|
ON DUPLICATE KEY UPDATE tenant_id = VALUES(tenant_id);
|
|
|
|
IF (SELECT COUNT(*) FROM iam_permission WHERE id = 5102027 AND tenant_id = 0
|
|
AND app_code = 'PLATFORM' AND permission_type = 'BUTTON' AND parent_id = 5102010
|
|
AND permission_code = 'platform:order:declaration:edit'
|
|
AND status = 'ACTIVE' AND deleted = 0) <> 1
|
|
OR (SELECT COUNT(DISTINCT role_id) FROM iam_role_permission
|
|
WHERE tenant_id = 0 AND permission_id = 5102027
|
|
AND role_id IN (4000001, 4000003)) <> 2 THEN
|
|
ROLLBACK;
|
|
SIGNAL SQLSTATE '45000'
|
|
SET MESSAGE_TEXT = '权限初始化失败:订单申报与运营预估权限未完整写入';
|
|
END IF;
|
|
COMMIT;
|
|
END$$
|
|
DELIMITER ;
|
|
|
|
CALL apply_permission_points();
|
|
DROP PROCEDURE IF EXISTS apply_permission_points;
|
|
|
|
SELECT 'PASS' AS permission_initialization_status;
|