| package com.zy.asrs.wms.common.config; | 
|   | 
| import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; | 
| import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory; | 
| 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.wms.system.entity.User; | 
| import com.zy.asrs.wms.system.entity.UserLogin; | 
| 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(); | 
|   | 
|         TenantLineHandler tenantLineHandler = new TenantLineHandler() { | 
|   | 
|             @Override | 
|             public Expression getTenantId() { | 
|                 return getLoginUserTenantId(); | 
|             } | 
|   | 
|             @Override | 
|             public String getTenantIdColumn() { | 
|                 return "host_id"; | 
|             } | 
|   | 
|             @Override | 
|             public boolean ignoreTable(String tableName) { | 
|                 return Arrays.asList( | 
|                         "sys_host", | 
|                         "sys_user_role", | 
|                         "sys_role_menu", | 
|                         "sys_language", | 
|                         "view_man_loc_detl_field" | 
|                 ).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()); | 
|                 } | 
|                 if (object instanceof UserLogin) { | 
|                     return new LongValue(((UserLogin) object).getHostId()); | 
|                 } | 
|             } | 
|         } catch (Exception e) { | 
|             System.out.println(e.getMessage()); | 
|         } | 
|         return new NullValue(); | 
|     } | 
|   | 
|     @Bean | 
|     public ConfigurationCustomizer mybatisConfigurationCustomizer(){ | 
|         return configuration -> configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory()); | 
|     } | 
|   | 
| } |