批量优化

This commit is contained in:
hero920103 committed 2026-10-08 15:30:37 +08:00
1 parent 438145cae7
commit c925b198d1
50 files changed
+5716 -291

No files matched your search

+92
View File
@@ -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;