Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
953bf923
Commit
953bf923
authored
May 11, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交Sdk代码
parent
f670341d
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
459 additions
and
3 deletions
+459
-3
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
+25
-0
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
+50
-1
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
+45
-2
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImGroupOperation.java
+163
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/CreateGroupRequest.java
+32
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/DismissGroupRequest.java
+28
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/JoinGroupRequest.java
+28
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/LeaveGroupRequest.java
+27
-0
im-sdk/src/main/java/com/wecloud/im/sdk/model/ListGroupMembersRequest.java
+22
-0
im-sdk/src/main/java/com/wecloud/im/sdk/sample/CreateGroupSample.java
+31
-0
im-sdk/src/main/java/com/wecloud/im/sdk/utils/CodingUtils.java
+8
-0
No files found.
im-sdk/src/main/java/com/wecloud/im/sdk/ResourcePathConstants.java
View file @
953bf923
...
...
@@ -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
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"
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudIm.java
View file @
953bf923
...
...
@@ -30,7 +30,6 @@ public interface WecloudIm {
* @param userId
* @param headPortrait
* @param nickname
* @param deviceType
* @Return
* @return
*/
...
...
@@ -181,5 +180,55 @@ public interface WecloudIm {
*/
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
);
}
im-sdk/src/main/java/com/wecloud/im/sdk/WecloudImClient.java
View file @
953bf923
...
...
@@ -8,11 +8,14 @@ import cn.hutool.core.lang.Assert;
import
com.wecloud.im.sdk.internal.WecloudImClientOperation
;
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.model.Blacklist
;
import
com.wecloud.im.sdk.model.ChatRoomMember
;
import
com.wecloud.im.sdk.model.ClientLoginRequest
;
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.FriendRequestRequest
;
import
com.wecloud.im.sdk.model.GetFriendsRequest
;
...
...
@@ -21,8 +24,11 @@ import com.wecloud.im.sdk.model.GroupChatMessage;
import
com.wecloud.im.sdk.model.GroupChatStatusMessage
;
import
com.wecloud.im.sdk.model.GroupMembersFriendRequestRequest
;
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.ListConversationRequest
;
import
com.wecloud.im.sdk.model.ListGroupMembersRequest
;
import
com.wecloud.im.sdk.model.ModifyUserRequest
;
import
com.wecloud.im.sdk.model.PageBlacklistRequest
;
import
com.wecloud.im.sdk.model.PageResult
;
...
...
@@ -68,6 +74,8 @@ public class WecloudImClient implements WecloudIm {
private
WecloudImMessageOperation
wecloudImMessageOperation
;
private
WecloudImGroupOperation
wecloudImGroupOperation
;
public
WecloudImClient
(
URL
apiDomain
,
String
appKey
,
String
appSecret
)
{
this
.
apiDomain
=
apiDomain
;
this
.
appKey
=
appKey
;
...
...
@@ -198,11 +206,46 @@ public class WecloudImClient implements WecloudIm {
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
()
{
this
.
imClientOperation
=
new
WecloudImClientOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
imConversationOperation
=
new
WecloudImConversationOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
wecloudImMessageOperation
=
new
WecloudImMessageOperation
(
apiDomain
,
appKey
,
appSecret
);
this
.
wecloudImGroupOperation
=
new
WecloudImGroupOperation
(
apiDomain
,
appKey
,
appSecret
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/internal/WecloudImGroupOperation.java
0 → 100644
View file @
953bf923
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
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/CreateGroupRequest.java
0 → 100644
View file @
953bf923
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
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/DismissGroupRequest.java
0 → 100644
View file @
953bf923
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
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/JoinGroupRequest.java
0 → 100644
View file @
953bf923
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
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/LeaveGroupRequest.java
0 → 100644
View file @
953bf923
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
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/model/ListGroupMembersRequest.java
0 → 100644
View file @
953bf923
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
;
}
im-sdk/src/main/java/com/wecloud/im/sdk/sample/CreateGroupSample.java
0 → 100644
View file @
953bf923
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"
);
}
}
im-sdk/src/main/java/com/wecloud/im/sdk/utils/CodingUtils.java
View file @
953bf923
package
com
.
wecloud
.
im
.
sdk
.
utils
;
import
java.util.Collection
;
/**
*
* @Author luozh
...
...
@@ -20,4 +22,10 @@ public class CodingUtils {
}
}
public
static
void
assertParameterNotEmpty
(
Collection
<?>
param
,
String
paramName
)
{
if
(
param
==
null
||
param
.
isEmpty
())
{
throw
new
NullPointerException
(
"参数:"
+
paramName
+
" 不能为空"
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment