Browse Source

用户修改角色,修改信息方法更新,处理用户修改信息后角色消失的bug

hejq 8 years ago
parent
commit
ca894d5022
1 changed files with 33 additions and 16 deletions
  1. 33 16
      src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

+ 33 - 16
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -236,19 +236,6 @@ public class UserServiceImpl implements UserService {
 					existRoles.add(role);
 				}
 				newUser.setRoles(existRoles);
-			} else {
-				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();
-						}
-					}
-				}
-				newUser.setRoles(existRoles);
 			}
 			try {
 				newUser = userDao.save(newUser);
@@ -274,18 +261,24 @@ public class UserServiceImpl implements UserService {
 	@Override
 	public User updateUserRole(User user) {
 		User newUser = userDao.findOne(user.getUserUU());
+        Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
 		if (newUser == null) {
 			throw new IllegalOperatorException("该用户不存在,请刷新重试");
 		}
 		// 修改用户角色,只对用户的当前企业的角色进行修改
+        StringBuffer oldRoles = new StringBuffer();
+        StringBuffer newRoles = new StringBuffer();
 		if (!CollectionUtils.isEmpty(user.getRoles())) {
 			Set<Role> existRoles = newUser.getRoles();
 			if (existRoles != null) {// 保留用户在其他企业的角色
 				Iterator<Role> iterator = existRoles.iterator();
-				Long currentEnuu = SystemSession.getUser().getEnterprise().getUu();
 				while (iterator.hasNext()) {
 					Role role = iterator.next();
-					if(role.getEnUU().equals(currentEnuu)) {
+					if (role.getEnUU().equals(currentEnuu)) {
+					    if (oldRoles.length() > 0) {
+                            oldRoles.append(",");
+                        }
+                        oldRoles.append(role.getDesc());
 						iterator.remove();
 					}
 				}
@@ -294,11 +287,35 @@ public class UserServiceImpl implements UserService {
 				newUser.setRoles(existRoles);
 			}
 			for(Role role : user.getRoles()) {
+			    if (newRoles.length() > 0) {
+                    newRoles.append(",");
+                }
+                newRoles.append(role.getDesc());
 				existRoles.add(role);
 			}
-		}
+		} else {
+            Set<Role> existRoles = newUser.getRoles();
+            if (!CollectionUtils.isEmpty(existRoles)) {// 保留用户在其他企业的角色
+                Iterator<Role> iterator = existRoles.iterator();
+                while (iterator.hasNext()) {
+                    Role role = iterator.next();
+                    if (role.getEnUU().equals(currentEnuu)) {
+                        if (oldRoles.length() > 0) {
+                            oldRoles.append(",");
+                        }
+                        oldRoles.append(role.getDesc());
+                        iterator.remove();
+                    }
+                }
+            }
+            newUser.setRoles(existRoles);
+        }
 		try {
 			newUser = userDao.save(newUser);
+			if (oldRoles.length() > 0 || newRoles.length() > 0) {
+                usagelogger.log("修改用户信息", "修改角色,用户:" + newUser.getUserUU(),
+                        "修改UU号为" + newUser.getUserUU() + "的角色,从“" + oldRoles.toString() + "”修改成“" + newRoles.toString() + "”");
+            }
 		} catch (Exception e) {
 			throw new RuntimeException(e.getMessage());
 		}