From 5bba24c46fdabe1eb6a6b5a814b026ddf21e7f9c Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Sun, 21 Oct 2018 07:30:47 +0800 Subject: [PATCH] =?UTF-8?q?[B=E7=AB=AF=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=9F?= =?UTF-8?q?=E6=88=B7][=E6=96=B0=E5=A2=9E]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/config/MyBatisConfiguration.java | 22 ++++++ .../interceptor/AuthorizationInterceptor.java | 2 + .../com/iformall/tenant/TenantInfoImpl.java | 78 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java create mode 100644 mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java diff --git a/mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java b/mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java new file mode 100644 index 000000000..66ec7d418 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java @@ -0,0 +1,22 @@ +package com.iformall.config; + +import com.iformall.plugin.MultiTenancy; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Properties; + +@Configuration +public class MyBatisConfiguration { + + @Bean + public MultiTenancy multiTenancy() { + MultiTenancy multiTenancy = new MultiTenancy(); + Properties properties = new Properties(); + properties.setProperty("tenantIdColumn", "tenant_id"); + properties.setProperty("dialect", "mysql"); + properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl"); + multiTenancy.setProperties(properties); + return multiTenancy; + } +} diff --git a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index 9d8504466..f4a2f22ef 100644 --- a/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -27,6 +27,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { private WxMerchantBUserService wxMerchantBUserService; public static final String LOGIN_USER_KEY = "LOGIN_USER_KEY"; + public static final String TENANT_ID = "TENANT_ID"; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -63,6 +64,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { //设置userId到request里,后续根据userId,获取用户信息 request.setAttribute(LOGIN_USER_KEY, wxMerchantBUser.getId()); + request.setAttribute(TENANT_ID, wxMerchantBUser.getTenantId()); return true; } diff --git a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java new file mode 100644 index 000000000..6ef370749 --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -0,0 +1,78 @@ +package com.iformall.tenant; + +import com.iformall.interceptor.AuthorizationInterceptor; +import com.iformall.plugin.TenantInfo; +import org.apache.ibatis.mapping.MappedStatement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +public class TenantInfoImpl implements TenantInfo { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Override + public String getTenantId() { + String tenantId = ""; + try { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + tenantId = (String) request.getAttribute(AuthorizationInterceptor.TENANT_ID); + return tenantId; + } catch (Exception e) { + logger.error(e.getMessage()); + } + return tenantId; + } + + @Override + public boolean doTableFilter(String tableName) { + if ("mall_permission".equals(tableName)) { + return true; + } + if ("mall_user_role".equals(tableName)) { + return true; + } + if ("wx_channel".equals(tableName)) { + return true; + } + if ("wx_business".equals(tableName)) { + return true; + } + if ("wx_coupon_type".equals(tableName)) { + return true; + } + if ("wx_game_template".equals(tableName)) { + return true; + } + if ("wx_group".equals(tableName)) { + return true; + } + if ("wx_mall_apply".equals(tableName)) { + return true; + } + if ("wx_tags".equals(tableName)) { + return true; + } + if ("wx_tags_group".equals(tableName)) { + return true; + } + if ("wx_tags_type".equals(tableName)) { + return true; + } + if ("wx_user_channel".equals(tableName)) { + return true; + } + // wx_profit_sharing_receiver + // wx_profit_sharing_result + return false; + } + + @Override + public boolean doMappedStatementFIlter(MappedStatement ms) { + if ("com.iformall.mapper.WxMerchantBUserMapper.getByToken".equals(ms.getId())) + return true; + return false; + } +}