| 
					
				 | 
			
			
				@@ -1,7 +1,12 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.teacher.interceptor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.TenantInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.TenantInfoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.tenant.TenantContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Component; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -14,10 +19,36 @@ public class TenantInterceptor extends HandlerInterceptorAdapter { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private TenantInfoService tenantInfoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysUserFeignService sysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		tenantInfoService.saveTenantContextHolder(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		final String TENANT_ID = "tenantId"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String tenantId = request.getParameter(TENANT_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isBlank(tenantId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tenantId = request.getHeader(TENANT_ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isBlank(tenantId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUser sysUser = sysUserFeignService.queryUserInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (sysUser != null && sysUser.getTenantId() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				tenantId = sysUser.getTenantId().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (StringUtils.isNotBlank(tenantId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			TenantContextHolder.setTenantId(Integer.parseInt(tenantId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (Integer.parseInt(tenantId) != -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//				log.info("==> " + request.getRequestURL()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				TenantInfo tenantInfo = tenantInfoService.baseMapper().getOpenTenant(Integer.parseInt(tenantId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (tenantInfo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					request.setAttribute("datasourceId", tenantInfo.getDataSource()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new BizException("机构服务已停用,请联系机构管理员"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |