feat(sdk): add new admin APIs to Java SDK
- queryUserState - kickUsers - batchSendMessage - adminSetMsgRead - importMessages - checkFriends - modifyGroupMemberInfo Also add FriendCheckResult and ImportMessageRequest models.
这个提交包含在:
父节点
3f4d78f175
当前提交
edd2adc5aa
@ -1030,6 +1030,93 @@ public final class XuqmImServerSdk {
|
|||||||
return response.data();
|
return response.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, Boolean> queryUserState(List<String> userIds) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("userIds", String.join(",", userIds));
|
||||||
|
ApiResponse<Map<String, Boolean>> response = request(
|
||||||
|
"GET",
|
||||||
|
buildUri("/api/im/admin/users/state", query),
|
||||||
|
null,
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<>() {}
|
||||||
|
);
|
||||||
|
return response.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void kickUsers(String appId, List<String> userIds) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("appId", appId);
|
||||||
|
request(
|
||||||
|
"POST",
|
||||||
|
buildUri("/api/im/admin/users/kick", query),
|
||||||
|
Map.of("userIds", userIds),
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<ApiResponse<Void>>() {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ImMessage> batchSendMessage(String appId, List<String> toIds, String msgType, String content) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("appId", appId);
|
||||||
|
ApiResponse<List<ImMessage>> response = request(
|
||||||
|
"POST",
|
||||||
|
buildUri("/api/im/admin/messages/batch-send", query),
|
||||||
|
Map.of("toIds", toIds, "msgType", msgType, "content", content),
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<>() {}
|
||||||
|
);
|
||||||
|
return response.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void adminSetMsgRead(String appId, String userId) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("appId", appId);
|
||||||
|
request(
|
||||||
|
"POST",
|
||||||
|
buildUri("/api/im/admin/messages/read", query),
|
||||||
|
Map.of("userId", userId),
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<ApiResponse<Void>>() {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ImMessage> importMessages(String appId, List<ImportMessageRequest> requests) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("appId", appId);
|
||||||
|
ApiResponse<List<ImMessage>> response = request(
|
||||||
|
"POST",
|
||||||
|
buildUri("/api/im/admin/messages/import", query),
|
||||||
|
requests,
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<>() {}
|
||||||
|
);
|
||||||
|
return response.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FriendCheckResult> checkFriends(String appId, List<String> friendIds) {
|
||||||
|
Map<String, String> query = new LinkedHashMap<>();
|
||||||
|
query.put("appId", appId);
|
||||||
|
ApiResponse<List<FriendCheckResult>> response = request(
|
||||||
|
"POST",
|
||||||
|
buildUri("/api/im/friends/check", query),
|
||||||
|
Map.of("friendIds", friendIds),
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<>() {}
|
||||||
|
);
|
||||||
|
return response.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupView modifyGroupMemberInfo(String groupId, String userId, String nickName) {
|
||||||
|
ApiResponse<GroupView> response = request(
|
||||||
|
"PUT",
|
||||||
|
buildUri("/api/im/groups/" + encode(groupId) + "/members/" + encode(userId) + "/info", appQuery()),
|
||||||
|
Map.of("nickName", nickName),
|
||||||
|
authorizedHeaders(),
|
||||||
|
new TypeReference<>() {}
|
||||||
|
);
|
||||||
|
return response.data();
|
||||||
|
}
|
||||||
|
|
||||||
public void setConversationPinned(String targetId, String chatType, boolean pinned) {
|
public void setConversationPinned(String targetId, String chatType, boolean pinned) {
|
||||||
Map<String, String> query = appQuery();
|
Map<String, String> query = appQuery();
|
||||||
query.put("chatType", chatType);
|
query.put("chatType", chatType);
|
||||||
@ -1816,6 +1903,19 @@ public final class XuqmImServerSdk {
|
|||||||
|
|
||||||
public record RequestBatch(List<String> requestIds) {}
|
public record RequestBatch(List<String> requestIds) {}
|
||||||
|
|
||||||
|
public record FriendCheckResult(String userId, boolean isFriend) {}
|
||||||
|
|
||||||
|
public record ImportMessageRequest(
|
||||||
|
String messageId,
|
||||||
|
String fromUserId,
|
||||||
|
String toId,
|
||||||
|
String chatType,
|
||||||
|
String msgType,
|
||||||
|
String content,
|
||||||
|
String status,
|
||||||
|
String createdAt
|
||||||
|
) {}
|
||||||
|
|
||||||
public static final class ImSdkException extends RuntimeException {
|
public static final class ImSdkException extends RuntimeException {
|
||||||
public ImSdkException(String message) {
|
public ImSdkException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户