66 lines
3.3 KiB
SQL
66 lines
3.3 KiB
SQL
-- Phase-one merchant onboarding state migration.
|
|
USE baiyue_iam;
|
|
SET NAMES utf8mb4;
|
|
|
|
ALTER TABLE iam_tenant MODIFY COLUMN status VARCHAR(20) NOT NULL DEFAULT 'PROFILE_REQUIRED'
|
|
COMMENT 'PROFILE_REQUIRED, PENDING, ACTIVE, REJECTED or DISABLED';
|
|
DROP PROCEDURE IF EXISTS phase1_iam_add_column;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE phase1_iam_add_column(
|
|
IN p_table_name VARCHAR(64), IN p_column_name VARCHAR(64), IN p_definition VARCHAR(1000)
|
|
)
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.COLUMNS
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = p_table_name AND COLUMN_NAME = p_column_name
|
|
) THEN
|
|
SET @phase1_iam_sql = CONCAT('ALTER TABLE `', p_table_name, '` ADD COLUMN `',
|
|
p_column_name, '` ', p_definition);
|
|
PREPARE phase1_iam_stmt FROM @phase1_iam_sql;
|
|
EXECUTE phase1_iam_stmt;
|
|
DEALLOCATE PREPARE phase1_iam_stmt;
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL phase1_iam_add_column('iam_tenant', 'approved_at', "DATETIME(3) NULL COMMENT 'Approval time'");
|
|
CALL phase1_iam_add_column('iam_tenant', 'approved_by', "BIGINT NULL COMMENT 'Reviewer ID'");
|
|
CALL phase1_iam_add_column('iam_tenant', 'reject_reason', "VARCHAR(500) NULL COMMENT 'Rejection reason'");
|
|
CALL phase1_iam_add_column('iam_tenant_qualification', 'review_comment', "VARCHAR(500) NULL COMMENT 'Review comment'");
|
|
CALL phase1_iam_add_column('iam_membership', 'created_by', "BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Creator ID'");
|
|
CALL phase1_iam_add_column('iam_membership', 'updated_by', "BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Updater ID'");
|
|
DROP PROCEDURE phase1_iam_add_column;
|
|
|
|
-- A global merchant owner template is assigned to newly registered enterprises.
|
|
INSERT INTO iam_role (
|
|
id, tenant_id, app_code, role_code, role_name, role_type, status,
|
|
description, created_by, updated_by, deleted, version
|
|
) VALUES (
|
|
4000100, 0, 'MERCHANT', 'MERCHANT_OWNER', '企业管理员', 'SYSTEM', 'ACTIVE',
|
|
'一期企业全部菜单和操作按钮模板', 1000001, 1000001, 0, 0
|
|
)
|
|
ON DUPLICATE KEY UPDATE status='ACTIVE', deleted=0;
|
|
|
|
-- Clone the一期 merchant menu/button template into the global scope.
|
|
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
|
|
)
|
|
SELECT id + 100000, 0, app_code, permission_type,
|
|
CASE WHEN parent_id = 0 THEN 0 ELSE parent_id + 100000 END,
|
|
permission_code, permission_name, route_path, NULL, sort_no, 'ACTIVE', 0
|
|
FROM iam_permission
|
|
WHERE tenant_id = 10001 AND app_code = 'MERCHANT'
|
|
AND permission_type IN ('MENU', 'BUTTON')
|
|
ON DUPLICATE KEY UPDATE
|
|
permission_name=VALUES(permission_name), route_path=VALUES(route_path),
|
|
parent_id=VALUES(parent_id), sort_no=VALUES(sort_no), status='ACTIVE', deleted=0;
|
|
|
|
INSERT IGNORE INTO iam_role_permission (role_id, permission_id, tenant_id)
|
|
SELECT 4000100, id, 0
|
|
FROM iam_permission
|
|
WHERE app_code='MERCHANT' AND tenant_id=0
|
|
AND permission_type IN ('MENU','BUTTON') AND status='ACTIVE' AND deleted=0;
|
|
|
|
-- 不再写入伪造的资质 URL。资质必须先由 File 服务保存真实图片,再由 IAM 记录文件地址和审核结果。
|
|
-- 已部署环境中的 /phase1-seed/ 历史记录按 docs/企业资质文件迁移说明.md 处理,本脚本不得将其改成不存在的 UUID。
|