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; + } +}