身份组相关查询
更新时间: 2024/06/06 16:15:58
服务器身份组相关查询
查询服务器身份组列表
调用getServerRoles
通过分页方式查询服务器身份组列表,查询结果按照身份组优先级从大到小排序。查询参数中priority
设为0,会从最大优先级开始返回,也就是第一页。第一页查询结果还会额外包含 @everyone 身份组,放在返回列表的第一项。
-
API 原型
InvocationFuture<QChatGetServerRolesResult> getServerRoles(QChatGetServerRolesParam param);
其中
QChatGetServerRolesParam
参数说明如下:参数 类型 必填 说明 serverId
Long 是 服务器 ID priority
Long 否 分页锚点优先级(即每页的页尾数据的优先级),填 0 从最高优先级开始查询 limit
Integer 否 查询数量限制。第一页返回结果额外包含@ everyone身份组,自定义身份组数量充足的情况下会返回 limit+1 个身份组 categoryId
Long 否 以频道分组 ID 的名义查询。如果传入该参数,则只需要有该频道分组的频道管理权限( MANAGE_CHANNEL
)即可,否则需要有服务器的管理权限(MANAGE_SERVER
)channelId
Long 否 以频道 ID 的名义查询。如果传入该参数,则只需要拥有该频道的管理权限( MANAGE_CHANNEL
)即可,否则需要有服务器的管理权限(MANAGE_SERVER
) -
示例代码
NIMClient.getService(QChatRoleService.class).getServerRoles(new QChatGetServerRolesParam(943445L,0,100)).setCallback( new RequestCallback<QChatGetServerRolesResult>() { @Override public void onSuccess(QChatGetServerRolesResult result) { //查询成功,返回查询到的Server身份组列表 List<QChatServerRole> roleList = result.getRoleList(); //获取当前账户所在的服务器身份组Id集合 Set<Long> isMemberSet = result.getIsMemberSet(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
查询服务器身份组的成员列表
可调用 getMembersFromServerRole
方法分页查询某服务器身份组下的的成员列表。
该方法仅支持查询自定义身份组下的成员列表,即 CUSTOM
身份组。创建服务器时默认创建的 EVERYONE
身份组不支持调用该方法进行查询。 如调用该方法查询 EVERYONE
身份组的成员, 将报错(错误码 403)。QChatRoleType
下定义了 CUSTOM
和 EVERYONE
两种身份组类型。
-
API 原型
InvocationFuture<QChatGetMembersFromServerRoleResult> getMembersFromServerRole(QChatGetMembersFromServerRoleParam param);
其中
QChatGetMembersFromServerRoleParam
需要传入服务器 ID、服务器身份组ID、查询锚点时间戳和查询数量限制。其中查询下一页时需要传入查询锚点的accid
。 -
示例代码
NIMClient.getService(QChatRoleService.class).getMembersFromServerRole(new QChatGetMembersFromServerRoleParam(943445L,5673L,System.currentTimeMillis(),100)).setCallback( new RequestCallback<QChatGetMembersFromServerRoleResult>() { @Override public void onSuccess(QChatGetMembersFromServerRoleResult result) { //查询成功,返回指定Server身份组下的成员列表 List<QChatServerRoleMember> roleMemberList = result.getRoleMemberList(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
通过 accid 查询服务器身份组列表
调用getServerRolesByAccid
方法,可根据某用户的accid
分页查询该用户所属的服务器身份组列表。
查询结果只会返回自定义身份组,不包含 @everyone 身份组。
-
API 原型
InvocationFuture<QChatGetServerRolesByAccidResult> getServerRolesByAccid(QChatGetServerRolesByAccidParam param);
其中
QChatGetServerRolesByAccidParam
需要传入serverId、accid、查询锚点时间戳和查询数量限制。 -
示例代码
NIMClient.getService(QChatRoleService.class).getServerRolesByAccid(new QChatGetServerRolesByAccidParam(943445L,"test",System.currentTimeMillis(),100)).setCallback( new RequestCallback<QChatGetServerRolesByAccidResult>() { @Override public void onSuccess(QChatGetServerRolesByAccidResult result) { //查询成功,返回该accid所属的Server身份组列表 List<QChatServerRole> roleList = result.getRoleList(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
通过一批 accid 查询服务器身份组列表
调用getExistingServerRolesByAccids
方法,可通过一批用户的accid
查询这些用户所属的服务器身份组列表。
- 查询结果只会返回自定义身份组,不包含@所有人身份组。
- 单个用户最多返回 10 个身份组。
- 返回的身份组按照创建时间逆序返回。
- 单次调用该方法最多可传入 100 个
accid
。
-
API 原型
InvocationFuture<QChatGetExistingServerRolesByAccidsResult> getExistingServerRolesByAccids(QChatGetExistingServerRolesByAccidsParam param);
其中QChatGetExistingServerRolesByAccidsParam需要传入查询的ServerId和accid列表。
-
示例代码
NIMClient.getService(QChatRoleService.class).getExistingServerRolesByAccids(new QChatGetExistingServerRolesByAccidsParam(943445L,accids)).setCallback( new RequestCallback<QChatGetExistingServerRolesByAccidsResult>() { @Override public void onSuccess(QChatGetExistingServerRolesByAccidsResult result) { //查询成功,返回存在的自定义Server身份组Map,key为accid,value为自定义Server身份组 Map<String, List<QChatServerRole>> accidServerRolesMap = result.getAccidServerRolesMap(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
查询服务器身份组是否包含指定成员
调用getExistingAccidsInServerRole
方法,可查询某个服务器身份组是否包含指定成员。
-
API 原型
InvocationFuture<QChatGetExistingAccidsInServerRoleResult> getExistingAccidsInServerRole(QChatGetExistingAccidsInServerRoleParam param);
其中
QChatGetExistingMembersFromServerRoleByAccidsParam
需要传入需要查询的服务器 ID、服务器身份组 ID 和 accid 列表。 -
示例代码
NIMClient.getService(QChatRoleService.class).getExistingAccidsInServerRole(new QChatGetExistingAccidsInServerRoleParam(943445L,5673L,accids)).setCallback( new RequestCallback<QChatGetExistingAccidsInServerRoleResult>() { @Override public void onSuccess(QChatGetExistingAccidsInServerRoleResult result) { //查询成功,返回指定服务器身份组下存在的成员列表 List<String> accidList = result.getAccidList(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
频道身份组相关查询
查询频道身份组列表
调用getChannelRoles
方法可查询某频道下的身份组列表。
-
API 原型
InvocationFuture<QChatGetChannelRolesResult> getChannelRoles(QChatGetChannelRolesParam param);
其中
QChatGetChannelRolesParam
需要传入查询的serverId
、channelId
、查询锚点时间戳timeTag
和查询数量限制limit
。 -
示例代码
QChatChannel channel = getChannel(); NIMClient.getService(QChatRoleService.class).getChannelRoles(new QChatGetChannelRolesParam(channel.getServerId(),channel.getChannelId(),System.currentTimeMillis(),100)).setCallback( new RequestCallback<QChatGetChannelRolesResult>() { @Override public void onSuccess(QChatGetChannelRolesResult result) { //操作成功,返回Channel下的身份组列表 List<QChatChannelRole> roleList = result.getRoleList(); } @Override public void onFailed(int code) { //操作失败,返回错误code } @Override public void onException(Throwable exception) { //操作异常 } });
根据一批服务器身份组查询相应的频道身份组
调用getExistingChannelRolesByServerRoleIds
方法,可通过传入一组服务器身份组 ID 查询继承这些服务器身份组的频道身份组列表。
-
API 原型
/** * 通过服务器身份组Id列表查询频道身份组Id列表 * * 传入服务器Id,频道Id,和一组该服务器下的身份组Id组成的列表, * 返回该频道下继承自这些服务器身份组的频道服务器身份组 * * @param param * @return */ InvocationFuture<QChatGetExistingChannelRolesByServerRoleIdsResult> getExistingChannelRolesByServerRoleIds(QChatGetExistingChannelRolesByServerRoleIdsParam param);
其中
QChatGetExistingChannelRolesByServerRoleIdsParam
需要传入需要查询的serverId
、channelId
和身份组 ID 列表。 -
示例代码
NIMClient.getService(QChatRoleService.class).getExistingChannelRolesByServerRoleIds(new QChatGetExistingChannelRolesByServerRoleIdsParam(943445L,885305L,roids)).setCallback( new RequestCallback<QChatGetExistingChannelRolesByServerRoleIdsResult>() { @Override public void onSuccess(QChatGetExistingChannelRolesByServerRoleIdsResult result) { //查询成功,返回已经配置在该的Channel的身份组列表 List<QChatChannelRole> roleList = result.getRoleList(); } @Override public void onFailed(int code) { //查询失败,返回错误code } @Override public void onException(Throwable exception) { //查询异常 } });
用户定制权限相关查询
查询用户定制权限
调用getMemberRoles
方法,分页查询某频道下某个成员的定制权限列表。
该方法需要拥有 MANAGE_ROLE
权限才能调用。
-
API 原型
InvocationFuture<QChatGetMemberRolesResult> getMemberRoles(QChatGetMemberRolesParam param);
其中
QChatGetMemberRolesParam
需要传入serverId、channelId、查询锚点时间戳和查询数量限制。 -
示例代码
NIMClient.getService(QChatRoleService.class).getMemberRoles(new QChatGetMemberRolesParam(943445L,885305L,System.currentTimeMillis(),100)).setCallback( new RequestCallback<QChatGetMemberRolesResult>() { @Override public void onSuccess(QChatGetMemberRolesResult result) { //操作成功,返回Channel下的成员定制权限列表 List<QChatMemberRole> roleList = result.getRoleList(); } @Override public void onFailed(int code) { //操作失败,返回错误code } @Override public void onException(Throwable exception) { //操作异常 } });
批量查询用户是否拥有定制权限
调用getExistingAccidsOfMemberRoles
方法,可通过传入用户的accid
列表查询这些accid
对应的用户在频道中是否拥有成员定制权限。
-
API 原型
InvocationFuture<QChatGetExistingAccidsOfMemberRolesResult> getExistingAccidsOfMemberRoles(QChatGetExistingAccidsOfMemberRolesParam param);
其中QChatGetExistingAccidsOfMemberRolesParam需要传入需要查询的
serverId
、channelId
和accid
列表。 -
示例代码
NIMClient.getService(QChatRoleService.class).getExistingAccidsOfMemberRoles(new QChatGetExistingAccidsOfMemberRolesParam(943445L,885305L,accids)).setCallback( new RequestCallback<QChatGetExistingAccidsOfMemberRolesResult>() { @Override public void onSuccess(QChatGetExistingAccidsOfMemberRolesResult result) { //查询成功,返回已经存在的成员定制权限的accid列表 List<String> accidList = result.getAccidList(); } @Override public void onFailed(int code) { //查询成员定制权限失败,返回错误code } @Override public void onException(Throwable exception) { //查询成员定制权限异常 } }); } });
查询自己的权限
查询自己是否拥有某个权限
调用checkPermission
方法,可通过传入某个身份组权限资源项查询自己是否拥有某个权限。
-
API 原型
InvocationFuture<QChatCheckPermissionResult> checkPermission(QChatCheckPermissionParam param);
其中
QChatCheckPermissionParam
需要传入需要查询的serverId
、channelId
和身份组权限资源项QChatRoleResource
。- 身份组权限资源项
QChatRoleResource
中的权限分为服务器专有的权限与非服务器专有权限(即服务器和频道下均可配置的权限)。如果查询服务器专有的权限,则QChatCheckPermissionParam
中的channelId
不要传,其他情况则channelId
必须要传。 QChatRoleResource
枚举类中提供了方法供判断权限范围:- boolean
isOnlyServerPermission
:是否是仅服务器才拥有的权限 - boolean
isAllPermission
:是否是服务器和频道都拥有都权限
- boolean
- 身份组权限资源项
-
示例代码
QChatRoleResource roleResource = QChatRoleResource.MANAGE_BLACK_WHITE_LIST;
QChatCheckPermissionParam param;
if(roleResource.isOnlyServerPermission())
{
//仅server才有的权限,使用不需要传channelId的构造方法
param = new QChatCheckPermissionParam(1607312,roleResource);
}else
{
//其他情况,使用需要传channelId的构造方法
param = new QChatCheckPermissionParam(1607312,1492446,roleResource);
}
NIMClient.getService(QChatRoleService.class).checkPermission(param).setCallback(new RequestCallback<QChatCheckPermissionResult>() {
@Override
public void onSuccess(QChatCheckPermissionResult result) {
//查询成功,返回是否有权限布尔值
boolean hasPermission = result.isHasPermission();
}
@Override
public void onFailed(int code) {
//查询失败,返回错误code
}
@Override
public void onException(Throwable exception) {
//查询异常
}
});
查询自己是否拥有某些权限
调用checkPermissions
方法查询自己是否拥有某些权限(单次最多可查 10 个权限)。
-
API 原型
InvocationFuture<QChatCheckPermissionsResult> checkPermissions(QChatCheckPermissionsParam param);
-
示例代码
long serverId = 311254L; //如果只查服务器权限,channelId可不传 long channelId = 211345L; //权限列表,一次最多10个权限 List<QChatRoleResource> permissions = new ArrayList<>(); permissions.add(QChatRoleResource.SEND_MSG); permissions.add(QChatRoleResource.BAN_SERVER_MEMBER); QChatCheckPermissionsParam param = new QChatCheckPermissionsParam(serverId,channelId,permissions); NIMClient.getService(QChatRoleService.class).checkPermissions(param).setCallback(new RequestCallback<QChatCheckPermissionsResult>() { @Override public void onSuccess(QChatCheckPermissionsResult result) { //查询的权限结果,以map方式返回,key为要查询的权限,value为权限结果 Map<QChatRoleResource, QChatRoleOption> permissionMap = result.getPermissions(); } @Override public void onFailed(int code) { } @Override public void onException(Throwable exception) { } });