|
|
@@ -30,6 +30,7 @@ import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.cache.ehcache.EhCacheCacheManager;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
import org.springframework.mobile.device.Device;
|
|
|
import org.springframework.mobile.device.DeviceResolver;
|
|
|
@@ -57,6 +58,7 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 访问拦截
|
|
|
@@ -88,6 +90,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
@Autowired
|
|
|
private RoleDao roleDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ EhCacheCacheManager cacheManager;
|
|
|
+
|
|
|
private final DeviceResolver deviceResolver = new LiteDeviceResolver();
|
|
|
|
|
|
@Autowired
|
|
|
@@ -312,7 +317,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
// 如果是从个人用户切换或者当前企业切换
|
|
|
boolean flag = null == user.getEnterprise() || !user.getEnterprise().getUu().equals(tokenUser.getSpaceUU());
|
|
|
if (!StringUtils.isEmpty(tokenUser.getSpaceUU()) && flag) {
|
|
|
+ user = getUserByToken(user, tokenUser);
|
|
|
user.setCurrentEnterprise(tokenUser.getSpaceUU());
|
|
|
+ request.getSession().setAttribute("user", user);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -335,6 +342,30 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 处理在商城注册企业并切换到新企业未同步到商城问题
|
|
|
+ * @param user
|
|
|
+ * @param tokenUser
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private User getUserByToken(User user, UserAccount tokenUser) {
|
|
|
+ Set<Enterprise> enterprises = user.getEnterprises();
|
|
|
+ if (!CollectionUtils.isEmpty(enterprises)) {
|
|
|
+ List<Enterprise> correctEnterprises = enterprises.stream().filter(enter -> enter.getUu().equals(tokenUser.getSpaceUU())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(correctEnterprises)) {
|
|
|
+ cacheManager.getCacheManager().clearAllStartingWith("com.uas.platform.b2b.model.User");
|
|
|
+ User current = userDao.findOne(tokenUser.getUserUU());
|
|
|
+ if (!StringUtils.isEmpty(current)) {
|
|
|
+ user = current;
|
|
|
+ logger.info("从数据库查找的企业:" + tokenUser.getSpaceUU());
|
|
|
+ } else {
|
|
|
+ logger.info("未查询到用户信息" + tokenUser.getUserUU());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return user;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 检验是否个人用户
|
|
|
*
|