Просмотр исходного кода

[B端支持多租户][新增]

release_toaliyun_real
Stormeye.Wu 7 лет назад
Родитель
Сommit
5bba24c46f
3 измененных файлов: 102 добавлений и 0 удалений
  1. +22
    -0
      mallinkBApi/src/main/java/com/iformall/config/MyBatisConfiguration.java
  2. +2
    -0
      mallinkBApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java
  3. +78
    -0
      mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java

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

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


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

Загрузка…
Отмена
Сохранить