CREATE TABLE go_group_targets
(group_id
bigint DEFAULT NULL COMMENT '组id(groups表id)',target_id
bigint DEFAULT NULL COMMENT '组内用户id(targets表id)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='用户与组关系表';
CREATE TABLE go_targets
(id
int NOT NULL AUTO_INCREMENT,name
varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '姓名',tenant_id
bigint DEFAULT NULL COMMENT '租户id',dept_id
varchar(255) DEFAULT '' COMMENT '部门id(多个,隔开)',
PRIMARY KEY (id
) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=228 DEFAULT CHARSET=utf8mb3 COMMENT='组内用户表';
CREATE TABLE tenant_dept_group
(group_id
bigint DEFAULT NULL COMMENT '组id(groups表id)',dept_id
bigint DEFAULT NULL COMMENT '租户部门id(tenant_dept表id)',tenant_id
bigint DEFAULT NULL COMMENT '租户id(tenant表id)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='租户部门与组关系表';
CREATE VIEW v_group_targets (group_id, target_id) AS
SELECT
gt.group_id,
gt.target_id
FROM
go_group_targets gt
UNION
SELECT
td.group_id,
t.id target_id
FROM
tenant_dept_group td
INNER JOIN go_targets t ON td.tenant_id = t.tenant_id AND FIND_IN_SET(td.dept_id, t.dept_id)