@SuppressWarnings("unchecked") public void updateUser(final User updatedUser) { String serverEncryptPassword = EncryptUtils.clientPwd2ServerPwd(updatedUser.getPassword()); updatedUser.setPassword(serverEncryptPassword); User userInDb = getUser(updatedUser.getUserName()); final boolean existed = (userInDb != null); if (existed) { userDao.merge(updatedUser); // 更新用户的管理范围,权限树 if (!YuepObjectUtils.collectionEquals(userInDb.getMgmtScope(), updatedUser.getMgmtScope())) { mgmtScopeManager.setUserMgmtScope(updatedUser.getUserName(), updatedUser.getMgmtScope()); } if (!YuepObjectUtils.collectionEquals(userInDb.getRoles(), updatedUser.getRoles())) { userPermissionTree.userRolePermissionChanged(updatedUser); } } else { userDao.saveEntity(updatedUser); } // 发送消息 SmMessage msg = new SmMessage(); msg.setMessageBody(updatedUser); if (existed) { msg.setMessageType(SmMessage.TYPE_USER_UPDATE); Map changedInfo = userInDb.getValueCompareObjectMap(updatedUser); msg.setAdditions(changedInfo); } else { msg.setMessageType(SmMessage.TYPE_USER_ADD); } SmCoreContext.publishMessage(msg.getName(), msg); }