多组户配置
admin超级用户可以登录任何租户的管理平台,admin登录选择对应租户添加管理账号。
需要配置多租户功能表新增tenant_id字段
SQL
CREATE TABLE `jw_crm_article` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(250) DEFAULT '' COMMENT '标题',
`content` varchar(1000) DEFAULT '' COMMENT '文章内容',
`public_time` datetime DEFAULT NULL COMMENT '发布时间',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`delete_status` varchar(1) DEFAULT '1' COMMENT '是否有效 1.有效 2无效',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='文章表';
租户处理器 -主要实现mybatis-plus,过滤不需要增加租户id表,在MyTenantHandler配置
java
/**
* 根据表名判断是否进行过滤
* 忽略掉一些表:如租户表(sys_tenant)本身不需要执行这样的处理
*
* @param tableName
* @return
*/
@Override
public boolean doTableFilter(String tableName) {
IGNORE_TENANT_TABLES.add("jw_sys_area");
IGNORE_TENANT_TABLES.add("jw_sys_config");
IGNORE_TENANT_TABLES.add("jw_sys_dict_data");
IGNORE_TENANT_TABLES.add("jw_sys_notice_receive");
IGNORE_TENANT_TABLES.add("jw_sys_permission");
IGNORE_TENANT_TABLES.add("jw_sys_region");
IGNORE_TENANT_TABLES.add("jw_sys_role");
IGNORE_TENANT_TABLES.add("jw_sys_role_permission");
IGNORE_TENANT_TABLES.add("jw_sys_user_role");
IGNORE_TENANT_TABLES.add("jw_sys_tenant");
return IGNORE_TENANT_TABLES.stream().anyMatch((e) -> e.equalsIgnoreCase(tableName));
}
过滤一些查询sql不用拼接租户id(tenant_id),MySqlParserFilter类配置
java
public boolean doFilter(MetaObject metaObject) {
MappedStatement ms = SqlParserHelper.getMappedStatement(metaObject);
// 过滤自定义查询此时无租户信息约束出现
if (
"com.jw.admin.dao.SysUserMapper.selectByPrimaryKey".equals(ms.getId())
||"com.jw.admin.dao.SysUserMapper.deleteByPrimaryKey".equals(ms.getId())
||"com.jw.admin.dao.UserDao.getUserName".equals(ms.getId())
) {
return true;
}
return false;
}