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