Quellcode durchsuchen

修改当前企业的用户信息时,保留用户在其他企业的角色不变

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7215 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg vor 9 Jahren
Ursprung
Commit
1ad33f7cf6

+ 20 - 2
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -175,8 +175,25 @@ public class UserServiceImpl implements UserService {
 			newUser.setUserIdcode(user.getUserIdcode());
 			newUser.setEnterprise(SystemSession.getUser().getEnterprise());
 			newUser.setIp(SystemSession.getUser().getIp());
-			if (!CollectionUtils.isEmpty(user.getRoles())) {// 修改用户角色
-				newUser.setRoles(user.getRoles());
+			// 修改用户角色,只对用户的当前企业的角色进行修改
+			if (!CollectionUtils.isEmpty(user.getRoles())) {
+				Set<Role> existRoles = newUser.getRoles();
+				if(!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
+					Iterator<Role> iterator = existRoles.iterator();
+					Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
+					while (iterator.hasNext()) {
+						Role role = iterator.next();
+						if(role.getEnUU().equals(currentEnuu)) {
+							iterator.remove();
+						}
+					}
+				} else {
+					existRoles = new HashSet<Role>();
+				}
+				for(Role role : user.getRoles()) {
+					existRoles.add(role);
+				}
+				newUser.setRoles(existRoles);
 			}
 			try {
 				// if
@@ -202,6 +219,7 @@ public class UserServiceImpl implements UserService {
 			}
 			if (SystemSession.getUser().getUserUU().equals(newUser.getUserUU())) {
 				newUser.setCurrentEnterprise(SystemSession.getUser().getEnterprise().getUu());
+				newUser.setCurrentEnterpriseRoles();
 				SystemSession.setUser(newUser);
 			}
 			return newUser;