diff --git a/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java b/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java index 466c7a151..5bad90e4e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java +++ b/mallinkAdmin/src/main/java/com/iformall/interceptor/CurrentTenantInterceptor.java @@ -3,7 +3,11 @@ package com.iformall.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.po.WxMall; +import com.iformall.service.WxMallService; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -21,12 +25,37 @@ import com.iformall.utils.Constant; @Component public class CurrentTenantInterceptor extends HandlerInterceptorAdapter { + @Autowired + private WxMallService wxMallService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - - String tenantId = (String)request.getSession().getAttribute(UserSession.tenantId); - String parenTenantId = (String)request.getSession().getAttribute(UserSession.parentTenantId); - + + //集团版中针对某一商场的业务需要传递mallTenantId + String mallTenantId = request.getHeader("mallTenantId"); + if(StringUtils.isBlank(mallTenantId)){ + mallTenantId = request.getParameter("mallTenantId"); + } + if(StringUtils.isBlank(mallTenantId)){ + try{ + String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); + mallTenantId = JSONObject.parseObject(body).getString("mallTenantId"); + }catch(Exception e){} + } + + String tenantId = null; + String parenTenantId = null; + if(StringUtils.isNotBlank(mallTenantId)){ + tenantId = mallTenantId; + WxMall mall = wxMallService.getByTenantId(tenantId); + if(StringUtils.isNotBlank(mall.getParentTenantId())){ + parenTenantId = mall.getParentTenantId(); + } + }else{ + tenantId = (String)request.getSession().getAttribute(UserSession.tenantId); + parenTenantId = (String)request.getSession().getAttribute(UserSession.parentTenantId); + } + TenantThreadLocal.setCurrentThreadTenant(tenantId, parenTenantId); TenantIgnore annotation = null;