package com.zy.asrs.wcs.common.config;
|
|
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
|
import com.zy.asrs.wcs.system.entity.User;
|
import net.sf.jsqlparser.expression.Expression;
|
import net.sf.jsqlparser.expression.LongValue;
|
import net.sf.jsqlparser.expression.NullValue;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import java.util.Arrays;
|
|
/**
|
* MybatisPlus配置
|
*
|
* @author vincent
|
* @since 2018-02-22 11:29:28
|
*/
|
@Configuration
|
public class MybatisPlusConfig {
|
|
@Bean
|
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
|
@Override
|
public Expression getTenantId() {
|
return getLoginUserTenantId();
|
}
|
|
@Override
|
public String getTenantIdColumn() {
|
return "host_id";
|
}
|
|
// 这是 default 方法,默认返回 false 表示所有表都需要拼多租户条件
|
@Override
|
public boolean ignoreTable(String tableName) {
|
if (getTenantId() == null) {
|
return true;
|
}else {
|
return Arrays.asList(
|
"sys_host",
|
"sys_user_role",
|
"sys_role_menu",
|
"wcs_bas_shuttle_err",
|
"wcs_bas_lift_err"
|
).contains(tableName);
|
}
|
}
|
}));
|
// 如果用了分页插件注意先 add TenantLineInnerInterceptor 再 add PaginationInnerInterceptor
|
// 用了分页插件必须设置 MybatisConfiguration#useDeprecatedExecutor = false
|
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
|
return interceptor;
|
}
|
|
@Bean
|
public ConfigurationCustomizer configurationCustomizer() {
|
return configuration -> configuration.setUseDeprecatedExecutor(false);
|
}
|
|
// @Bean
|
// public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
// MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
//
|
// TenantLineHandler tenantLineHandler = new TenantLineHandler() {
|
//
|
// @Override
|
// public Expression getTenantId() {
|
// return getLoginUserTenantId();
|
// }
|
//
|
// @Override
|
// public String getTenantIdColumn() {
|
// return "host_id";
|
// }
|
//
|
// @Override
|
// public boolean ignoreTable(String tableName) {
|
// if (getTenantId() == null) {
|
// return true;
|
// }else {
|
// return Arrays.asList(
|
// "sys_host",
|
// "sys_user_role",
|
// "sys_role_menu",
|
// "wcs_bas_shuttle_err",
|
// "wcs_bas_lift_err"
|
// ).contains(tableName);
|
// }
|
// }
|
//
|
// };
|
// TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(tenantLineHandler);
|
// interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
|
//
|
// PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
|
// interceptor.addInnerInterceptor(paginationInnerInterceptor);
|
//
|
// return interceptor;
|
// }
|
|
/**
|
* 获取当前登录用户的租户id
|
*
|
* @return Integer
|
*/
|
public Expression getLoginUserTenantId() {
|
try {
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
if (authentication != null) {
|
Object object = authentication.getPrincipal();
|
if (object instanceof User) {
|
return new LongValue(((User) object).getHostId());
|
}
|
}
|
} catch (Exception e) {
|
System.out.println(e.getMessage());
|
}
|
return null;
|
}
|
|
}
|