Forráskód Böngészése

fix:修复用户新注册企业未找到bug

Hu Jie 7 éve
szülő
commit
afa48c98dc

+ 15 - 3
src/main/java/com/uas/platform/b2b/filter/SSOInterceptor.java

@@ -29,6 +29,7 @@ import com.uas.sso.web.spring.AbstractSSOInterceptor;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 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;
@@ -88,6 +89,9 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 	@Autowired
     private RoleDao roleDao;
 
+	@Autowired
+	EhCacheCacheManager cacheManager;
+
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
     @Autowired
@@ -312,8 +316,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, token);
+					user = getUserByToken(user, tokenUser);
 					user.setCurrentEnterprise(tokenUser.getSpaceUU());
+					request.getSession().setAttribute("user", user);
 				}
 			}
 		}
@@ -336,12 +341,19 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 		}
 	}
 
-	private User getUserByToken(User user, UserAccount tokenUser, SSOToken token) {
+	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)) {
-				user = getUserByToken(token);
+				cacheManager.getCacheManager().clearAllStartingWith("com.uas.platform.b2b.model.User");
+				User current = userDao.findOne(tokenUser.getUserUU());
+				if (!StringUtils.isEmpty(current)) {
+					System.out.println("从数据库查找的企业:" + tokenUser.getSpaceUU());
+					user = current;
+				} else {
+					System.out.println("未查询到用户信息" + tokenUser.getUserUU());
+				}
 			}
 		}
 		return user;