public Mono<UserRole> queryStoredOrDefaultUserRoleByUserId(@NotNull Long userId) {
        Mono<Long> userRoleIdMono = userService.queryUserRoleIdByUserId(userId)
                .defaultIfEmpty(DEFAULT_USER_ROLE_ID);
        return userRoleIdMono.flatMap(userRoleId -> queryUserRoleById(userRoleId).switchIfEmpty(
                Mono.error(ResponseException.get(ResponseStatusCode.SERVER_INTERNAL_ERROR,
                        "The role ("
                                + userRoleId
                                + ") of the user ("
                                + userId
                                + ") was not found"))));
    }
@implNote Note that we don't need to remove corresponding groups in {@link #idToRole} because
          their data will be synced in the watch callback.
turms-service/src/main/java/im/turms/service/domain/user/service/UserRoleService.java