批量优化
This commit is contained in:
1 parent
438145cae7
commit
c925b198d1
50 files changed
+5716
-291
No files matched your search
@@ -0,0 +1,92 @@
|
||||
-- ============================================================
|
||||
-- 注册企业绑定/创建申请(yz_auth_tenant_apply)+ 审核菜单
|
||||
-- type=1 加入企业:注册第二步「绑定企业」,企业管理员在 backend 审批
|
||||
-- type=2 创建企业:注册第二步「创建企业」,平台在 platform 审批,
|
||||
-- 通过后自动建租户并把申请人绑定为租户管理员(不可更改)
|
||||
-- 幂等脚本:重复执行不会产生重复数据。
|
||||
-- 执行:mysql -h <host> -P <port> -u <user> -p <db> < create_auth_tenant_apply.sql
|
||||
-- ============================================================
|
||||
|
||||
-- ---------- 1. 申请表 ----------
|
||||
CREATE TABLE IF NOT EXISTS yz_auth_tenant_apply (
|
||||
id bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
identity_id bigint unsigned NOT NULL COMMENT '申请人统一身份ID(yz_auth_identity)',
|
||||
type tinyint NOT NULL DEFAULT 1 COMMENT '1=加入企业 2=创建企业',
|
||||
tid bigint unsigned NOT NULL DEFAULT 0 COMMENT '目标企业ID(type=1 有值;type=2 审核通过后回填)',
|
||||
tenant_name varchar(128) NOT NULL DEFAULT '' COMMENT '企业名称(申请时快照)',
|
||||
credit_code varchar(64) NOT NULL DEFAULT '' COMMENT '统一社会信用代码(type=2)',
|
||||
legal_person varchar(64) NOT NULL DEFAULT '' COMMENT '法定代表人姓名(type=2)',
|
||||
license_file varchar(500) NOT NULL DEFAULT '' COMMENT '营业执照文件URL,pdf/jpg/png(type=2)',
|
||||
contact_person varchar(64) NOT NULL DEFAULT '' COMMENT '联系人',
|
||||
contact_phone varchar(20) NOT NULL DEFAULT '' COMMENT '联系电话',
|
||||
contact_email varchar(128) NOT NULL DEFAULT '' COMMENT '电子邮箱',
|
||||
address varchar(255) NOT NULL DEFAULT '' COMMENT '公司地址',
|
||||
status tinyint NOT NULL DEFAULT 0 COMMENT '0=待审核 1=已通过 2=已驳回',
|
||||
reject_reason varchar(255) NOT NULL DEFAULT '' COMMENT '驳回原因',
|
||||
reviewer_id bigint unsigned NOT NULL DEFAULT 0 COMMENT '审核人ID(backend=租户用户uid / platform=平台管理员id)',
|
||||
reviewer_name varchar(64) NOT NULL DEFAULT '' COMMENT '审核人姓名',
|
||||
review_time datetime NULL COMMENT '审核时间',
|
||||
create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
update_time datetime NULL COMMENT '更新时间',
|
||||
delete_time datetime NULL COMMENT '软删时间',
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_apply_identity (identity_id),
|
||||
KEY idx_apply_tid (tid),
|
||||
KEY idx_apply_status (status, type)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='注册时加入企业/创建企业申请';
|
||||
|
||||
-- ---------- 2. backend 菜单:基础设置 → 加入申请 ----------
|
||||
-- 注意:用户变量在 SELECT 列表赋值后于同语句 WHERE 中引用不可靠,改用派生表
|
||||
INSERT INTO yz_system_menu
|
||||
(pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark)
|
||||
SELECT bs.id, '加入申请', '/basicSettings/applies', 'basicSettings/applies/index.vue',
|
||||
'Bell', 90, 1, 1, '[2]', 2, 'system', '企业管理员审批注册用户提交的「绑定企业」申请'
|
||||
FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings' AND delete_time IS NULL LIMIT 1) bs
|
||||
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings/applies' AND delete_time IS NULL) x);
|
||||
|
||||
-- 找不到基础设置目录时退化为 backend 顶级菜单
|
||||
INSERT INTO yz_system_menu
|
||||
(pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark)
|
||||
SELECT 0, '加入申请', '/basicSettings/applies', 'basicSettings/applies/index.vue',
|
||||
'Bell', 90, 1, 1, '[2]', 2, 'system', '企业管理员审批注册用户提交的「绑定企业」申请'
|
||||
FROM DUAL
|
||||
WHERE (SELECT id FROM yz_system_menu WHERE path = '/basicSettings' AND delete_time IS NULL LIMIT 1) IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/basicSettings/applies' AND delete_time IS NULL) x);
|
||||
|
||||
-- ---------- 3. platform 菜单:企业创建审核(顶级) ----------
|
||||
INSERT INTO yz_system_menu
|
||||
(pid, title, path, component_path, icon, sort, status, is_visible, views, type, creater, remark)
|
||||
SELECT 0, '企业创建审核', '/tenantApply', 'tenantApply/index.vue',
|
||||
'OfficeBuilding', 21, 1, 1, '[1]', 2, 'system', '平台审批注册用户提交的「创建企业」申请,通过后自动建租户'
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM (SELECT id FROM yz_system_menu WHERE path = '/tenantApply' AND delete_time IS NULL) x);
|
||||
|
||||
-- ---------- 4. 把「加入申请」菜单加入全局「租户管理员」角色 rights ----------
|
||||
-- rights 兼容 JSON 数组与逗号分隔两种格式;rights 为空表示全权限,无需处理
|
||||
SET @apply_menu_id := (
|
||||
SELECT id FROM yz_system_menu WHERE path = '/basicSettings/applies' AND delete_time IS NULL LIMIT 1
|
||||
);
|
||||
|
||||
-- 逗号分隔格式:追加
|
||||
UPDATE yz_system_admin_role
|
||||
SET rights = CONCAT(TRIM(TRAILING ',' FROM TRIM(BOTH ' ' FROM rights)), ',', @apply_menu_id)
|
||||
WHERE cid = 2 AND tenant_id = 0 AND name = '租户管理员' AND delete_time IS NULL
|
||||
AND @apply_menu_id IS NOT NULL
|
||||
AND rights IS NOT NULL AND TRIM(rights) <> '' AND TRIM(rights) NOT LIKE '[%'
|
||||
AND NOT FIND_IN_SET(@apply_menu_id, REPLACE(REPLACE(REPLACE(rights, '[', ''), ']', ''), ' ', ''));
|
||||
|
||||
-- JSON 数组格式:末尾插入
|
||||
UPDATE yz_system_admin_role
|
||||
SET rights = CONCAT(SUBSTRING(TRIM(rights), 1, LENGTH(TRIM(rights)) - 1), ',', @apply_menu_id, ']')
|
||||
WHERE cid = 2 AND tenant_id = 0 AND name = '租户管理员' AND delete_time IS NULL
|
||||
AND @apply_menu_id IS NOT NULL
|
||||
AND TRIM(rights) LIKE '[%' AND TRIM(rights) LIKE '%]'
|
||||
AND NOT FIND_IN_SET(@apply_menu_id, REPLACE(REPLACE(REPLACE(rights, '[', ''), ']', ''), ' ', ''));
|
||||
|
||||
-- ---------- 结果校验 ----------
|
||||
SELECT id, pid, title, path, component_path, views, type
|
||||
FROM yz_system_menu
|
||||
WHERE delete_time IS NULL AND path IN ('/basicSettings/applies', '/tenantApply');
|
||||
|
||||
SELECT id, cid, tenant_id, name, rights FROM yz_system_admin_role
|
||||
WHERE cid = 2 AND tenant_id = 0 AND name = '租户管理员' AND delete_time IS NULL;
|
||||
Reference in new issue
Block a user