62 lines
3.5 KiB
SQL
62 lines
3.5 KiB
SQL
USE baiyue_iam;
|
|
SET NAMES utf8mb4;
|
|
|
|
DROP PROCEDURE IF EXISTS migrate_domestic_container_permissions;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE migrate_domestic_container_permissions()
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1 FROM iam_permission
|
|
WHERE (id = 5103070 AND permission_code <> 'platform:domestic-container:list')
|
|
OR (id = 5103071 AND permission_code <> 'platform:domestic-container:inbound:create')
|
|
OR (id = 5103072 AND permission_code <> 'platform:domestic-container:outbound:create')
|
|
OR (permission_code = 'platform:domestic-container:list' AND id <> 5103070)
|
|
OR (permission_code = 'platform:domestic-container:inbound:create' AND id <> 5103071)
|
|
OR (permission_code = 'platform:domestic-container:outbound:create' AND id <> 5103072)
|
|
) THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'domestic container permission id/code conflict';
|
|
END IF;
|
|
|
|
INSERT INTO iam_permission
|
|
(id, tenant_id, app_code, permission_type, parent_id, permission_code,
|
|
permission_name, route_path, http_method, sort_no, status, built_in, deleted)
|
|
VALUES
|
|
(5103070,0,'PLATFORM','API',5103010,'platform:domestic-container:list',
|
|
'查看国内整柜业务','/api/platform/v1/domestic-containers','GET',40,'ACTIVE',1,0),
|
|
(5103071,0,'PLATFORM','BUTTON',5103070,'platform:domestic-container:inbound:create',
|
|
'新建整柜入库单','/api/platform/v1/domestic-containers/inbounds','POST',10,'ACTIVE',1,0),
|
|
(5103072,0,'PLATFORM','BUTTON',5103070,'platform:domestic-container:outbound:create',
|
|
'新建整柜出库单','/api/platform/v1/domestic-containers/outbounds','POST',20,'ACTIVE',1,0)
|
|
ON DUPLICATE KEY UPDATE
|
|
permission_type=VALUES(permission_type), parent_id=VALUES(parent_id),
|
|
permission_name=VALUES(permission_name), route_path=VALUES(route_path),
|
|
http_method=VALUES(http_method), sort_no=VALUES(sort_no), status='ACTIVE', built_in=1, deleted=0;
|
|
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, r.id, p.id, CURRENT_TIMESTAMP(3)
|
|
FROM iam_role r
|
|
JOIN iam_permission p ON p.tenant_id=0 AND p.app_code='PLATFORM'
|
|
WHERE r.tenant_id=0 AND r.app_code='PLATFORM' AND r.role_code='PLATFORM_ADMIN'
|
|
AND r.status='ACTIVE' AND r.deleted=0
|
|
AND p.permission_code IN ('platform:domestic-container:list',
|
|
'platform:domestic-container:inbound:create','platform:domestic-container:outbound:create');
|
|
|
|
IF (SELECT COUNT(*) FROM iam_permission WHERE tenant_id=0 AND app_code='PLATFORM'
|
|
AND status='ACTIVE' AND built_in=1 AND deleted=0
|
|
AND permission_code IN ('platform:domestic-container:list',
|
|
'platform:domestic-container:inbound:create','platform:domestic-container:outbound:create')) <> 3 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'domestic container permission catalog is incomplete';
|
|
END IF;
|
|
IF (SELECT COUNT(*) FROM iam_role_permission rp
|
|
JOIN iam_role r ON r.id=rp.role_id AND r.tenant_id=rp.tenant_id
|
|
JOIN iam_permission p ON p.id=rp.permission_id AND p.tenant_id=rp.tenant_id
|
|
WHERE r.tenant_id=0 AND r.app_code='PLATFORM' AND r.role_code='PLATFORM_ADMIN'
|
|
AND p.permission_code IN ('platform:domestic-container:list',
|
|
'platform:domestic-container:inbound:create','platform:domestic-container:outbound:create')) <> 3 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'PLATFORM_ADMIN domestic container grant is incomplete';
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL migrate_domestic_container_permissions();
|
|
DROP PROCEDURE IF EXISTS migrate_domestic_container_permissions;
|