Skip to content

Commit 3e92877

Browse files
authored
feat: add group api (#193)
* 添加获取指定群成员详细资料 api (close #192) * 升级至 v0.4.10
1 parent 534b24d commit 3e92877

File tree

13 files changed

+285
-11
lines changed

13 files changed

+285
-11
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ If you're using Maven, just add the following dependency in `pom.xml`.
2525
<dependency>
2626
<groupId>io.github.doocs</groupId>
2727
<artifactId>im-server-sdk-java</artifactId>
28-
<version>0.4.09</version>
28+
<version>0.4.10</version>
2929
</dependency>
3030
```
3131

README_CN.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ https://doocs.github.io/qcloud-im-server-sdk-java
2525
<dependency>
2626
<groupId>io.github.doocs</groupId>
2727
<artifactId>im-server-sdk-java</artifactId>
28-
<version>0.4.09</version>
28+
<version>0.4.10</version>
2929
</dependency>
3030
```
3131

docs/guide/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 介绍
22

3-
本文档基于腾讯云 IM Server SDK Java <Badge type="tip" text="v0.4.09" vertical="top" /> 编写。
3+
本文档基于腾讯云 IM Server SDK Java <Badge type="tip" text="v0.4.10" vertical="top" /> 编写。
44

55
## 前提条件
66

docs/guide/group.md

+30-1
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,35 @@ GetGroupMemberInfoRequest request = GetGroupMemberInfoRequest.builder()
116116
GetGroupMemberInfoResult result = client.group.getGroupMemberInfo(request);
117117
```
118118

119+
## 获取指定群成员详细资料
120+
121+
App 管理员可根据群组 ID 与群内指定成员 UserID 列表等参数获取指定群组成员的资料。
122+
123+
::: tip
124+
适用的群组类型
125+
126+
| 群组类型 ID | 是否支持此 REST API |
127+
| ----------------- | ---------------------------------------- |
128+
| Private | 支持,同新版本中的 Work(好友工作群) |
129+
| Public | 支持 |
130+
| ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
131+
| AVChatRoom | 不支持 |
132+
| Community(社群) | 支持 |
133+
134+
即时通信 IM 内置上述群组类型,详情介绍请参见 [群组系统](https://cloud.tencent.com/document/product/269/1502)
135+
:::
136+
137+
使用示例:
138+
139+
```java
140+
GetSpecifiedGroupMemberInfoRequest request = GetSpecifiedGroupMemberInfoRequest.builder()
141+
.groupId("MyFirstGroup")
142+
.memberInfoFilter(Collections.singletonList("bingo"))
143+
.build();
144+
145+
GetSpecifiedGroupMemberInfoResult result = client.group.getSpecifiedGroupMemberInfo(request);
146+
```
147+
119148
## 修改群基础资料
120149

121150
App 管理员可以通过该接口修改指定群组的基础信息。
@@ -1471,4 +1500,4 @@ CheckMembersRequest request = CheckMembersRequest.builder()
14711500
.build();
14721501

14731502
CheckMembersResult result = client.group.checkMembers(request);
1474-
```
1503+
```

docs/guide/quickstart.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
<dependency>
1111
<groupId>io.github.doocs</groupId>
1212
<artifactId>im-server-sdk-java</artifactId>
13-
<version>0.4.09</version>
13+
<version>0.4.10</version>
1414
</dependency>
1515
```
1616

1717
### Gradle
1818

1919
```gradle
20-
implementation group: 'io.github.doocs', name: 'im-server-sdk-java', version: '0.4.09'
20+
implementation group: 'io.github.doocs', name: 'im-server-sdk-java', version: '0.4.10'
2121
```
2222

2323
### 下载 JAR

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "qcloud-im-server-sdk-java",
3-
"version": "0.4.09",
3+
"version": "0.4.10",
44
"description": "腾讯云 IM 服务端 SDK API 文档 Java 版",
55
"main": "index.js",
66
"scripts": {

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.doocs</groupId>
88
<artifactId>im-server-sdk-java</artifactId>
9-
<version>0.4.09</version>
9+
<version>0.4.10</version>
1010
<packaging>jar</packaging>
1111

1212
<name>qcloud-im-server-sdk-java</name>

src/main/java/io/github/doocs/im/core/Group.java

+18
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class Group {
3131
public static final String CREATE_GROUP_COMMAND = "create_group";
3232
public static final String GET_GROUP_INFO_COMMAND = "get_group_info";
3333
public static final String GET_GROUP_MEMBER_INFO_COMMAND = "get_group_member_info";
34+
public static final String GET_SPECIFIED_GROUP_MEMBER_INFO_COMMAND = "get_specified_group_member_info";
3435
public static final String MODIFY_GROUP_BASE_INFO_COMMAND = "modify_group_base_info";
3536
public static final String ADD_GROUP_MEMBER_COMMAND = "add_group_member";
3637
public static final String DELETE_GROUP_MEMBER_COMMAND = "delete_group_member";
@@ -154,6 +155,23 @@ public GetGroupMemberInfoResult getGroupMemberInfo(GetGroupMemberInfoRequest get
154155
return HttpUtil.post(url, getGroupMemberInfoRequest, GetGroupMemberInfoResult.class, imClient.getConfig());
155156
}
156157

158+
/**
159+
* 获取指定群成员详细资料
160+
*
161+
* @param getSpecifiedGroupMemberInfoRequest 请求参数
162+
* @return 结果
163+
* @throws IOException 异常
164+
*/
165+
public GetSpecifiedGroupMemberInfoResult getSpecifiedGroupMemberInfo(GetSpecifiedGroupMemberInfoRequest getSpecifiedGroupMemberInfoRequest) throws IOException {
166+
String url = imClient.getUrl(SERVICE_NAME, GET_SPECIFIED_GROUP_MEMBER_INFO_COMMAND);
167+
return HttpUtil.post(url, getSpecifiedGroupMemberInfoRequest, GetSpecifiedGroupMemberInfoResult.class, imClient.getConfig());
168+
}
169+
170+
public GetSpecifiedGroupMemberInfoResult getSpecifiedGroupMemberInfo(GetSpecifiedGroupMemberInfoRequest getSpecifiedGroupMemberInfoRequest, long random) throws IOException {
171+
String url = imClient.getUrl(SERVICE_NAME, GET_SPECIFIED_GROUP_MEMBER_INFO_COMMAND, random);
172+
return HttpUtil.post(url, getSpecifiedGroupMemberInfoRequest, GetSpecifiedGroupMemberInfoResult.class, imClient.getConfig());
173+
}
174+
157175
/**
158176
* 修改群基础资料
159177
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
package io.github.doocs.im.model.request;
2+
3+
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
import java.io.Serializable;
7+
import java.util.List;
8+
9+
/**
10+
* 获取指定群成员详细资料-请求参数
11+
*
12+
* @author bingo
13+
* @since 2024/12/02 08:04
14+
*/
15+
@JsonInclude(JsonInclude.Include.NON_NULL)
16+
public class GetSpecifiedGroupMemberInfoRequest extends GenericRequest implements Serializable {
17+
private static final long serialVersionUID = -1588717038990106029L;
18+
19+
/**
20+
* 需要拉取成员信息的群组的 ID
21+
*/
22+
@JsonProperty("GroupId")
23+
private String groupId;
24+
25+
/**
26+
* 需要拉取指定群成员的UserID列表,数量不得超过50。
27+
*/
28+
@JsonProperty("Member_List_Account")
29+
private List<String> memberListAccount;
30+
31+
/**
32+
* 需要获取哪些信息,如果没有该字段则为群成员全部资料,成员信息字段详情请参见 群成员资料。
33+
*/
34+
@JsonProperty("MemberInfoFilter")
35+
private List<String> memberInfoFilter;
36+
37+
/**
38+
* 选填
39+
* 拉取指定身份的群成员资料。如没有填写该字段,默认为所有身份成员资料,成员身份可以为:“Owner”,“Admin”,“Member”。
40+
*/
41+
@JsonProperty("MemberRoleFilter")
42+
private List<String> memberRoleFilter;
43+
44+
/**
45+
* 默认情况是没有的。该字段用来群成员维度的自定义字段过滤器,指定需要获取的群成员维度的自定义字段
46+
*/
47+
@JsonProperty("AppDefinedDataFilter_GroupMember")
48+
private List<String> appDefinedDataFilterGroupMember;
49+
50+
public GetSpecifiedGroupMemberInfoRequest() {
51+
}
52+
53+
public GetSpecifiedGroupMemberInfoRequest(String groupId, List<String> memberListAccount) {
54+
this.groupId = groupId;
55+
this.memberListAccount = memberListAccount;
56+
}
57+
58+
public GetSpecifiedGroupMemberInfoRequest(String groupId, List<String> memberListAccount,
59+
List<String> memberInfoFilter, List<String> memberRoleFilter,
60+
List<String> appDefinedDataFilterGroupMember) {
61+
this.groupId = groupId;
62+
this.memberListAccount = memberListAccount;
63+
this.memberInfoFilter = memberInfoFilter;
64+
this.memberRoleFilter = memberRoleFilter;
65+
this.appDefinedDataFilterGroupMember = appDefinedDataFilterGroupMember;
66+
}
67+
68+
public String getGroupId() {
69+
return groupId;
70+
}
71+
72+
public void setGroupId(String groupId) {
73+
this.groupId = groupId;
74+
}
75+
76+
public List<String> getMemberListAccount() {
77+
return memberListAccount;
78+
}
79+
80+
public void setMemberListAccount(List<String> memberListAccount) {
81+
this.memberListAccount = memberListAccount;
82+
}
83+
84+
public List<String> getMemberInfoFilter() {
85+
return memberInfoFilter;
86+
}
87+
88+
public void setMemberInfoFilter(List<String> memberInfoFilter) {
89+
this.memberInfoFilter = memberInfoFilter;
90+
}
91+
92+
public List<String> getMemberRoleFilter() {
93+
return memberRoleFilter;
94+
}
95+
96+
public void setMemberRoleFilter(List<String> memberRoleFilter) {
97+
this.memberRoleFilter = memberRoleFilter;
98+
}
99+
100+
public List<String> getAppDefinedDataFilterGroupMember() {
101+
return appDefinedDataFilterGroupMember;
102+
}
103+
104+
public void setAppDefinedDataFilterGroupMember(List<String> appDefinedDataFilterGroupMember) {
105+
this.appDefinedDataFilterGroupMember = appDefinedDataFilterGroupMember;
106+
}
107+
108+
private GetSpecifiedGroupMemberInfoRequest(Builder builder) {
109+
this.groupId = builder.groupId;
110+
this.memberListAccount = builder.memberListAccount;
111+
this.memberInfoFilter = builder.memberInfoFilter;
112+
this.memberRoleFilter = builder.memberRoleFilter;
113+
this.appDefinedDataFilterGroupMember = builder.appDefinedDataFilterGroupMember;
114+
}
115+
116+
public static Builder builder() {
117+
return new Builder();
118+
}
119+
120+
public static final class Builder {
121+
private String groupId;
122+
private List<String> memberListAccount;
123+
private List<String> memberInfoFilter;
124+
private List<String> memberRoleFilter;
125+
private List<String> appDefinedDataFilterGroupMember;
126+
127+
private Builder() {
128+
}
129+
130+
public GetSpecifiedGroupMemberInfoRequest build() {
131+
return new GetSpecifiedGroupMemberInfoRequest(this);
132+
}
133+
134+
public Builder groupId(String groupId) {
135+
this.groupId = groupId;
136+
return this;
137+
}
138+
139+
public Builder memberListAccount(List<String> memberListAccount) {
140+
this.memberListAccount = memberListAccount;
141+
return this;
142+
}
143+
144+
public Builder memberInfoFilter(List<String> memberInfoFilter) {
145+
this.memberInfoFilter = memberInfoFilter;
146+
return this;
147+
}
148+
149+
public Builder memberRoleFilter(List<String> memberRoleFilter) {
150+
this.memberRoleFilter = memberRoleFilter;
151+
return this;
152+
}
153+
154+
public Builder appDefinedDataFilterGroupMember(List<String> appDefinedDataFilterGroupMember) {
155+
this.appDefinedDataFilterGroupMember = appDefinedDataFilterGroupMember;
156+
return this;
157+
}
158+
}
159+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package io.github.doocs.im.model.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import io.github.doocs.im.model.group.MemberProfile;
5+
6+
import java.io.Serializable;
7+
import java.util.List;
8+
9+
/**
10+
* 获取群成员详细资料-结果
11+
*
12+
* @author bingo
13+
* @since 2024/12/02 08:18
14+
*/
15+
public class GetSpecifiedGroupMemberInfoResult extends GenericResult implements Serializable {
16+
private static final long serialVersionUID = -5466167278504273597L;
17+
18+
/**
19+
* 需要拉取成员信息的群组的 ID
20+
*/
21+
@JsonProperty("GroupId")
22+
private String groupId;
23+
24+
/**
25+
* 获取到的群成员列表,其中包含了全部或者指定字段的群成员信息
26+
*/
27+
@JsonProperty("MemberList")
28+
private List<MemberProfile> memberList;
29+
30+
public String getGroupId() {
31+
return groupId;
32+
}
33+
34+
public void setGroupId(String groupId) {
35+
this.groupId = groupId;
36+
}
37+
38+
public List<MemberProfile> getMemberList() {
39+
return memberList;
40+
}
41+
42+
public void setMemberList(List<MemberProfile> memberList) {
43+
this.memberList = memberList;
44+
}
45+
46+
@Override
47+
public String toString() {
48+
return "GetSpecifiedGroupMemberInfoResult{" +
49+
"groupId='" + groupId + '\'' +
50+
", memberList=" + memberList +
51+
", actionStatus='" + actionStatus + '\'' +
52+
", errorInfo='" + errorInfo + '\'' +
53+
", errorCode=" + errorCode +
54+
'}';
55+
}
56+
}

src/main/resources/version.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=0.4.09
1+
version=0.4.10

src/test/java/io/github/doocs/im/core/GroupTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@ void testGetGroupMemberInfo() throws IOException {
9090
Assertions.assertEquals(ErrorCode.SUCCESS.getCode(), result.getErrorCode());
9191
}
9292

93+
@Test
94+
void testGetSpecifiedGroupMemberInfo() throws IOException {
95+
GetSpecifiedGroupMemberInfoRequest request = GetSpecifiedGroupMemberInfoRequest.builder()
96+
.groupId("MyFirstGroup")
97+
.memberInfoFilter(Collections.singletonList("bingo"))
98+
.build();
99+
100+
GetSpecifiedGroupMemberInfoResult result = client.group.getSpecifiedGroupMemberInfo(request);
101+
System.out.println(result);
102+
Assertions.assertEquals(ErrorCode.SUCCESS.getCode(), result.getErrorCode());
103+
}
104+
93105
@Test
94106
void testModifyGroupBaseInfo() throws IOException {
95107
ModifyGroupBaseInfoRequest request = ModifyGroupBaseInfoRequest.builder()

0 commit comments

Comments
 (0)