package com.qianwen.core.tenant; import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.StringValue; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.secure.utils.AuthUtil; import com.qianwen.core.tenant.annotation.TableExclude; import com.qianwen.core.tool.utils.Func; import com.qianwen.core.tool.utils.SpringUtil; import com.qianwen.core.tool.utils.StringUtil; import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.context.ApplicationContext; /* loaded from: blade-starter-tenant-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tenant/BladeTenantHandler.class */ public class BladeTenantHandler implements TenantLineHandler, SmartInitializingSingleton { private static final Logger log = LoggerFactory.getLogger(BladeTenantHandler.class); private final List tenantTableList = new ArrayList(); private final List excludeTableList = Arrays.asList("blade_user", "blade_dept", "blade_role", "blade_tenant", "act_de_model"); private final BladeTenantProperties tenantProperties; public BladeTenantHandler(final BladeTenantProperties tenantProperties) { this.tenantProperties = tenantProperties; } public Expression getTenantId() { return new StringValue(Func.toStr(AuthUtil.getTenantId(), "000000")); } public String getTenantIdColumn() { return this.tenantProperties.getColumn(); } public boolean ignoreTable(String tableName) { return (!BladeTenantHolder.isIgnore().booleanValue() && this.tenantTableList.contains(tableName) && StringUtil.isNotBlank(AuthUtil.getTenantId())) ? false : true; } public void afterSingletonsInstantiated() { ApplicationContext context = SpringUtil.getContext(); if (this.tenantProperties.getAnnotationExclude().booleanValue() && context != null) { Map tables = context.getBeansWithAnnotation(TableExclude.class); List excludeTables = this.tenantProperties.getExcludeTables(); for (Object o : tables.values()) { TableExclude annotation = (TableExclude) o.getClass().getAnnotation(TableExclude.class); String value = annotation.value(); excludeTables.add(value); } } List tableInfos = TableInfoHelper.getTableInfos(); for (TableInfo tableInfo : tableInfos) { String tableName = tableInfo.getTableName(); if (!this.tenantProperties.getExcludeTables().contains(tableName) && !this.excludeTableList.contains(tableName.toLowerCase()) && !this.excludeTableList.contains(tableName.toUpperCase())) { List fieldList = tableInfo.getFieldList(); Iterator it = fieldList.iterator(); while (true) { if (it.hasNext()) { TableFieldInfo fieldInfo = it.next(); String column = fieldInfo.getColumn(); if (this.tenantProperties.getColumn().equals(column)) { this.tenantTableList.add(tableName); break; } } } } } } }