Commit 953bf923 by 罗长华

提交Sdk代码

parent f670341d
...@@ -86,5 +86,30 @@ public class ResourcePathConstants { ...@@ -86,5 +86,30 @@ public class ResourcePathConstants {
*/ */
public static final String PUBLISH_PRIVATE_CHAT_STATUS_MESSAGE_REQUEST = "/api/imMessage/private/status/publish"; public static final String PUBLISH_PRIVATE_CHAT_STATUS_MESSAGE_REQUEST = "/api/imMessage/private/status/publish";
/**
* 创建群
*/
public static final String CREATE_GROUP_REQUEST = "/api/group/createGroup";
/**
* 解散群
*/
public static final String DISMISS_GROUP_REQUEST = "/api/group/dismissGroup";
/**
* 加入群
*/
public static final String JOIN_GROUP_REQUEST = "/api/group/joinGroup";
/**
* 离开群
*/
public static final String LEAVE_GROUP_REQUEST = "/api/group/leaveGroup";
/**
* 获取群成员列表
*/
public static final String LIST_GROUP_MEMBERS_REQUEST = "/api/group/listGroupMembers";
} }
...@@ -30,7 +30,6 @@ public interface WecloudIm { ...@@ -30,7 +30,6 @@ public interface WecloudIm {
* @param userId * @param userId
* @param headPortrait * @param headPortrait
* @param nickname * @param nickname
* @param deviceType
* @Return * @Return
* @return * @return
*/ */
...@@ -181,5 +180,55 @@ public interface WecloudIm { ...@@ -181,5 +180,55 @@ public interface WecloudIm {
*/ */
Boolean publishPrivateStatusMessage(PrivateChatStatusMessage privateChatStatusMessage); Boolean publishPrivateStatusMessage(PrivateChatStatusMessage privateChatStatusMessage);
/**
* 创建群组
* @Author luozh
* @Date 2022年05月09日 06:34:58
* @param userId 用户id
* @param groupName 用户名称
* @param memberIds 群成员
* @Return 创建结果 true/false
*/
Long createGroup(String groupOwnerUserId, String groupName, String memberIds);
/**
* 解散群组(非群组创建者也可以解散群组)
* @Author luozh
* @Date 2022年05月09日 06:42:18
* @param userId 用户id
* @param groupId 群组id
* @Return 解散结果 true/false
*/
Boolean dismissGroup(String userId, String groupId);
/**
* 加入群组
* @Author luozh
* @Date 2022年05月09日 06:43:07
* @param groupId 要加入的群id
* @param userIds 要加入群的用户id
* @Return 加入结果 true/false
*/
Integer joinGroup(String groupId, String userIds);
/**
* 离开群组
* @Author luozh
* @Date 2022年05月09日 06:43:07
* @param groupId 要离开的群id
* @param userIds 要离开群的用户id
* @Return 加入结果 true/false
*/
Integer leaveGroup(String groupId, String userIds);
/**
* 获取群成员列表
* @Author luozh
* @Date 2022年05月09日 06:46:10
* @param groupId 群组id
* @Return 群成员id
*/
List<String> listGroupMembers(String groupId);
} }
...@@ -8,11 +8,14 @@ import cn.hutool.core.lang.Assert; ...@@ -8,11 +8,14 @@ import cn.hutool.core.lang.Assert;
import com.wecloud.im.sdk.internal.WecloudImClientOperation; import com.wecloud.im.sdk.internal.WecloudImClientOperation;
import com.wecloud.im.sdk.internal.WecloudImConversationOperation; import com.wecloud.im.sdk.internal.WecloudImConversationOperation;
import com.wecloud.im.sdk.internal.WecloudImGroupOperation;
import com.wecloud.im.sdk.internal.WecloudImMessageOperation; import com.wecloud.im.sdk.internal.WecloudImMessageOperation;
import com.wecloud.im.sdk.model.Blacklist; import com.wecloud.im.sdk.model.Blacklist;
import com.wecloud.im.sdk.model.ChatRoomMember; import com.wecloud.im.sdk.model.ChatRoomMember;
import com.wecloud.im.sdk.model.ClientLoginRequest; import com.wecloud.im.sdk.model.ClientLoginRequest;
import com.wecloud.im.sdk.model.Conversation; import com.wecloud.im.sdk.model.Conversation;
import com.wecloud.im.sdk.model.CreateGroupRequest;
import com.wecloud.im.sdk.model.DismissGroupRequest;
import com.wecloud.im.sdk.model.Friend; import com.wecloud.im.sdk.model.Friend;
import com.wecloud.im.sdk.model.FriendRequestRequest; import com.wecloud.im.sdk.model.FriendRequestRequest;
import com.wecloud.im.sdk.model.GetFriendsRequest; import com.wecloud.im.sdk.model.GetFriendsRequest;
...@@ -21,8 +24,11 @@ import com.wecloud.im.sdk.model.GroupChatMessage; ...@@ -21,8 +24,11 @@ import com.wecloud.im.sdk.model.GroupChatMessage;
import com.wecloud.im.sdk.model.GroupChatStatusMessage; import com.wecloud.im.sdk.model.GroupChatStatusMessage;
import com.wecloud.im.sdk.model.GroupMembersFriendRequestRequest; import com.wecloud.im.sdk.model.GroupMembersFriendRequestRequest;
import com.wecloud.im.sdk.model.ImClient; import com.wecloud.im.sdk.model.ImClient;
import com.wecloud.im.sdk.model.JoinGroupRequest;
import com.wecloud.im.sdk.model.LeaveGroupRequest;
import com.wecloud.im.sdk.model.ListChatRoomMemberRequest; import com.wecloud.im.sdk.model.ListChatRoomMemberRequest;
import com.wecloud.im.sdk.model.ListConversationRequest; import com.wecloud.im.sdk.model.ListConversationRequest;
import com.wecloud.im.sdk.model.ListGroupMembersRequest;
import com.wecloud.im.sdk.model.ModifyUserRequest; import com.wecloud.im.sdk.model.ModifyUserRequest;
import com.wecloud.im.sdk.model.PageBlacklistRequest; import com.wecloud.im.sdk.model.PageBlacklistRequest;
import com.wecloud.im.sdk.model.PageResult; import com.wecloud.im.sdk.model.PageResult;
...@@ -68,6 +74,8 @@ public class WecloudImClient implements WecloudIm { ...@@ -68,6 +74,8 @@ public class WecloudImClient implements WecloudIm {
private WecloudImMessageOperation wecloudImMessageOperation; private WecloudImMessageOperation wecloudImMessageOperation;
private WecloudImGroupOperation wecloudImGroupOperation;
public WecloudImClient(URL apiDomain, String appKey, String appSecret) { public WecloudImClient(URL apiDomain, String appKey, String appSecret) {
this.apiDomain = apiDomain; this.apiDomain = apiDomain;
this.appKey = appKey; this.appKey = appKey;
...@@ -198,11 +206,46 @@ public class WecloudImClient implements WecloudIm { ...@@ -198,11 +206,46 @@ public class WecloudImClient implements WecloudIm {
return wecloudImMessageOperation.publishPrivateStatusMessage(request); return wecloudImMessageOperation.publishPrivateStatusMessage(request);
} }
@Override
public Long createGroup(String groupOwnerUserId, String groupName, String memberIds) {
CreateGroupRequest createGroupRequest =
CreateGroupRequest.builder().userId(groupOwnerUserId).groupName(groupName).memberIds(memberIds).build();
return wecloudImGroupOperation.createGroup(createGroupRequest);
}
@Override
public Boolean dismissGroup(String userId, String groupId) {
DismissGroupRequest dismissGroupRequest =
DismissGroupRequest.builder().userId(userId).groupId(groupId).build();
return wecloudImGroupOperation.dismissGroup(dismissGroupRequest);
}
@Override
public Integer joinGroup(String groupId, String userIds) {
JoinGroupRequest joinGroupRequest =
JoinGroupRequest.builder().userIds(userIds).groupId(groupId).build();
return wecloudImGroupOperation.joinGroup(joinGroupRequest);
}
@Override
public Integer leaveGroup(String groupId, String userIds) {
LeaveGroupRequest leaveGroupRequest =
LeaveGroupRequest.builder().userIds(userIds).groupId(groupId).build();
return wecloudImGroupOperation.leaveGroup(leaveGroupRequest);
}
@Override
public List<String> listGroupMembers(String groupId) {
ListGroupMembersRequest listGroupMembersRequest =
ListGroupMembersRequest.builder().groupId(groupId).build();
return wecloudImGroupOperation.listGroupMembers(listGroupMembersRequest);
}
private void initOperations() { private void initOperations() {
this.imClientOperation = new WecloudImClientOperation(apiDomain, appKey, appSecret); this.imClientOperation = new WecloudImClientOperation(apiDomain, appKey, appSecret);
this.imConversationOperation = new WecloudImConversationOperation(apiDomain, appKey, appSecret); this.imConversationOperation = new WecloudImConversationOperation(apiDomain, appKey, appSecret);
this.wecloudImMessageOperation = new WecloudImMessageOperation(apiDomain, appKey, appSecret); this.wecloudImMessageOperation = new WecloudImMessageOperation(apiDomain, appKey, appSecret);
this.wecloudImGroupOperation = new WecloudImGroupOperation(apiDomain, appKey, appSecret);
} }
} }
package com.wecloud.im.sdk.internal;
import java.net.URL;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.wecloud.im.sdk.common.HttpMethod;
import com.wecloud.im.sdk.common.RequestMessage;
import com.wecloud.im.sdk.model.CreateGroupRequest;
import com.wecloud.im.sdk.model.DismissGroupRequest;
import com.wecloud.im.sdk.model.JoinGroupRequest;
import com.wecloud.im.sdk.model.LeaveGroupRequest;
import com.wecloud.im.sdk.model.ListGroupMembersRequest;
import static com.wecloud.im.sdk.ResourcePathConstants.CREATE_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.DISMISS_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.JOIN_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.LEAVE_GROUP_REQUEST;
import static com.wecloud.im.sdk.ResourcePathConstants.LIST_GROUP_MEMBERS_REQUEST;
import static com.wecloud.im.sdk.utils.CodingUtils.assertParameterNotBlank;
/**
* 群组操作
* @Author luozh
* @Date 2022年05月10日 09:30
* @Version 1.0
*/
public class WecloudImGroupOperation extends WecloudImOperation {
public WecloudImGroupOperation(URL apiDomain, String appKey, String appSecret) {
super(apiDomain, appKey, appSecret);
}
/**
* 创建群组
* @Author luozh
* @Date 2022年05月10日 10:27:41
* @param createGroupRequest
* @Return
*/
public Long createGroup(CreateGroupRequest createGroupRequest) {
String userId = createGroupRequest.getUserId();
String memberIds = createGroupRequest.getMemberIds();
// 必填参数校验
assertParameterNotBlank(userId, "userId");
assertParameterNotBlank(memberIds, "memberIds");
// 校验通过 构建参数
TypeReference<Map<String, String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String, String> param = JSONObject.parseObject(JSON.toJSONString(createGroupRequest), typeReference);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(CREATE_GROUP_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(createGroupRequest).build();
Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Long.class);
}
/**
* 解散群组
* @Author luozh
* @Date 2022年05月10日 10:27:54
* @param dismissGroupRequest
* @Return
*/
public Boolean dismissGroup(DismissGroupRequest dismissGroupRequest) {
String userId = dismissGroupRequest.getUserId();
String groupId = dismissGroupRequest.getGroupId();
// 必填参数校验
assertParameterNotBlank(userId, "userId");
assertParameterNotBlank(groupId, "groupId");
// 校验通过 构建参数
TypeReference<Map<String, String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String, String> param = JSONObject.parseObject(JSON.toJSONString(dismissGroupRequest), typeReference);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(DISMISS_GROUP_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(dismissGroupRequest).build();
doOperation(request);
return true;
}
/**
* 加入群组
* @Author luozh
* @Date 2022年05月10日 10:28:07
* @param joinGroupRequest
* @Return
*/
public Integer joinGroup(JoinGroupRequest joinGroupRequest) {
String groupId = joinGroupRequest.getGroupId();
String userIds = joinGroupRequest.getUserIds();
// 必填参数校验
assertParameterNotBlank(groupId, "groupId");
assertParameterNotBlank(userIds, "userIds");
// 校验通过 构建参数
TypeReference<Map<String, String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String, String> param = JSONObject.parseObject(JSON.toJSONString(joinGroupRequest), typeReference);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(JOIN_GROUP_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(joinGroupRequest).build();
Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Integer.class);
}
/**
* 离开群组
* @Author luozh
* @Date 2022年05月10日 10:28:21
* @param leaveGroupRequest
* @Return
*/
public Integer leaveGroup(LeaveGroupRequest leaveGroupRequest) {
String groupId = leaveGroupRequest.getGroupId();
String userIds = leaveGroupRequest.getUserIds();
// 必填参数校验
assertParameterNotBlank(groupId, "groupId");
assertParameterNotBlank(userIds, "userIds");
// 校验通过 构建参数
TypeReference<Map<String, String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String, String> param = JSONObject.parseObject(JSON.toJSONString(leaveGroupRequest), typeReference);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(LEAVE_GROUP_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(leaveGroupRequest).build();
Object result = doOperation(request);
return JSON.parseObject(JSON.toJSONString(result), Integer.class);
}
/**
* 获取群成员列表
* @Author luozh
* @Date 2022年05月10日 10:28:34
* @param listGroupMembersRequest
* @Return
*/
public List<String> listGroupMembers(ListGroupMembersRequest listGroupMembersRequest) {
String groupId = listGroupMembersRequest.getGroupId();
// 必填参数校验
assertParameterNotBlank(groupId, "groupId");
// 校验通过 构建参数
TypeReference<Map<String, String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String, String> param = JSONObject.parseObject(JSON.toJSONString(listGroupMembersRequest), typeReference);
// 发送请求
RequestMessage request = new WecloudRequestMessageBuilder().setEndpoint(LIST_GROUP_MEMBERS_REQUEST)
.setMethod(HttpMethod.POST).setParameters(param)
.setOriginalRequest(listGroupMembersRequest).build();
Object result = doOperation(request);
TypeReference<List<String>> resultType = new TypeReference<List<String>>() {
};
return JSON.parseObject(JSON.toJSONString(result), resultType);
}
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* 创建群
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class CreateGroupRequest extends WebServiceRequest {
/**
* 群主id
*/
private String userId;
/**
* 群名
*/
private String groupName;
/**
* 群成员
*/
private String memberIds;
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* 解散群
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class DismissGroupRequest extends WebServiceRequest {
/**
* 操作解散群的用户 ID,可以为任何用户 ID ,非群组创建者也可以解散群组
*/
private String userId;
/**
* 要解散的群的群组 ID
*/
private String groupId;
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* 加入群
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class JoinGroupRequest extends WebServiceRequest {
/**
* 要加入群的用户 ID
*/
private String userIds;
/**
* 要加入的群的群组 ID
*/
private String groupId;
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* 离开(踢出)群
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class LeaveGroupRequest extends WebServiceRequest {
/**
* 用户Id
*/
private String userIds;
/**
* 群组id
*/
private String groupId;
}
package com.wecloud.im.sdk.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* 查询群组成员
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
@Builder
public class ListGroupMembersRequest extends WebServiceRequest {
/**
* 群id
*/
private String groupId;
}
package com.wecloud.im.sdk.sample;
import com.wecloud.im.sdk.WecloudIm;
import com.wecloud.im.sdk.WecloudImClientBuilder;
/**
*
* @Author luozh
* @Date 2022年05月10日 14:52
* @Version 1.0
*/
public class CreateGroupSample {
private static final String ENDPOINT = "http://127.0.0.1:8082";
private static final String APP_KEY = "QizKVHcILRWp6Td2";
private static final String APP_SECRET = "287d04828099fb7de871e9dda845fa8b6b2302faf2ab3737";
public static void main(String[] args) {
WecloudIm im = new WecloudImClientBuilder().build(ENDPOINT, APP_KEY, APP_SECRET);
String userId = "1513691265777217536";
String groupName = "至暗时刻";
String memberIds = "1518881158560100352,1519502299280605184,1519873933917179904";
// im.createGroup(userId, groupName, memberIds);
im.listGroupMembers("1519507173539995648");
}
}
package com.wecloud.im.sdk.utils; package com.wecloud.im.sdk.utils;
import java.util.Collection;
/** /**
* *
* @Author luozh * @Author luozh
...@@ -20,4 +22,10 @@ public class CodingUtils { ...@@ -20,4 +22,10 @@ public class CodingUtils {
} }
} }
public static void assertParameterNotEmpty(Collection<?> param, String paramName) {
if (param == null || param.isEmpty()) {
throw new NullPointerException("参数:" + paramName + " 不能为空");
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment