935090232@qq.com
2021-10-28 58032b964fa5dee3924847943548093af6dcb098
zq-erp/src/main/java/com/matrix/system/common/interceptor/HostInterceptor.java
@@ -1,8 +1,11 @@
package com.matrix.system.common.interceptor;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysCompany;
import com.matrix.system.common.init.InitWebContainer;
import com.matrix.system.common.init.LocalCache;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@@ -15,6 +18,7 @@
/**
 * 域名与公司对应绑定拦截
 *
 * @author JIANGYOUYAO
 * @email 935090232@qq.com
 * @date 2017年11月29日
@@ -35,39 +39,32 @@
    */
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
      SysCompany company= WebUtil.getSessionAttribute(ATTR_COMPANY);
      if (company != null) {
         LogUtil.debug("匹配到公司{}", company.getComName());
         return true;
      } else {
      // 获得请求的域名--由小程序直接传过来companyCode参数对应公司的网址
      String host = request.getHeader("companyCode");
      LogUtil.debug("当前请求域名{}", host);
         @SuppressWarnings("unchecked")
         Map<String, SysCompany> companyMap = (Map<String, SysCompany>) WebUtil.getServletContext()
               .getAttribute("companyMap");
         if(Objects.nonNull(companyMap)){
            Set<String> hostSet = companyMap.keySet();
            for (String key : hostSet) {
               LogUtil.debug("-- 匹配公司key={},host={} 匹配结果={}", key , host, key.contains(host));
               if (key.contains(host)) {
                  // 查到公司后存到sesssion中
                  WebUtil.setSessionAttribute(ATTR_COMPANY, companyMap.get(key));
                  return true;
               }
            }
         }
      }
      LogUtil.debug("没有匹配到对应的公司");
        if (StringUtils.isBlank(host)) {
      return false;
   }
        Map<String, SysCompany> companyMap = LocalCache.get("companyMap");
        SysCompany company=companyMap.get(host);
        if(Objects.nonNull(company)){
            // 查到公司后存到sesssion中
            LogUtil.debug("匹配到公司{}", company.getComName());
            WebUtil.setSessionAttribute(ATTR_COMPANY, company);
            return true;
        }
        LogUtil.debug("没有匹配到对应的公司");
        return false;
    }
   /**
    * 获取当前域名对于的公司ID
     *
    * @return
    */
   public static Long getCompanyId() {