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
85156e3e
Commit
85156e3e
authored
May 06, 2022
by
罗长华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化代码,完成群聊事件发送接口
parent
1f19ec16
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
27 deletions
+82
-27
core/src/main/java/com/wecloud/im/param/GroupChatMessageParam.java
+0
-3
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+82
-24
No files found.
core/src/main/java/com/wecloud/im/param/GroupChatMessageParam.java
View file @
85156e3e
...
@@ -40,9 +40,6 @@ public class GroupChatMessageParam {
...
@@ -40,9 +40,6 @@ public class GroupChatMessageParam {
@ApiModelProperty
(
"是否包含发送用户"
)
@ApiModelProperty
(
"是否包含发送用户"
)
private
Boolean
includeSender
;
private
Boolean
includeSender
;
@ApiModelProperty
(
"是否存储此条消息"
)
private
Boolean
persisted
;
@ApiModelProperty
(
"是否为@消息"
)
@ApiModelProperty
(
"是否为@消息"
)
private
Boolean
mentioned
;
private
Boolean
mentioned
;
...
...
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
85156e3e
...
@@ -15,6 +15,7 @@ import java.util.Date;
...
@@ -15,6 +15,7 @@ import java.util.Date;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
...
@@ -579,16 +580,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -579,16 +580,19 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
conversation
.
getId
()));
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
conversation
.
getId
()));
if
(
param
.
getToUserIds
()
!=
null
&&
!
param
.
getToUserIds
().
isEmpty
())
{
// 定向发送
membersList
=
membersList
.
stream
().
filter
(
members
->
param
.
getToUserIds
().
contains
(
members
.
getClientId
())).
collect
(
Collectors
.
toList
());
}
// 组装消息
// 组装消息
ImMessage
message
=
assembleImMessage
(
appId
,
sender
,
conversation
.
getId
(),
param
.
getMessageType
(),
ImMessage
message
=
assembleImMessage
(
appId
,
sender
,
conversation
.
getId
(),
param
.
getMessageType
(),
false
,
param
.
getContent
());
param
.
getContent
());
if
(
param
.
getPersisted
())
{
// 持久化
// 持久化
this
.
save
(
message
);
this
.
save
(
message
);
}
// 拼装发送消息体
// 拼装发送消息体
ImMessageOnlineSend
imMessageOnlineSend
=
assembleImMessageOnlineSend
(
message
,
sender
,
appId
);
ImMessageOnlineSend
imMessageOnlineSend
=
assembleImMessageOnlineSend
(
message
,
sender
,
appId
);
// 发送消息
// 发送消息
for
(
ImConversationMembers
members
:
membersList
)
{
for
(
ImConversationMembers
members
:
membersList
)
{
if
(
members
.
getClientId
().
equals
(
senderClientId
)
&&
!
param
.
getIncludeSender
())
{
if
(
members
.
getClientId
().
equals
(
senderClientId
)
&&
!
param
.
getIncludeSender
())
{
...
@@ -602,32 +606,59 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -602,32 +606,59 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
// 在线用户直接发消息
// 在线用户直接发消息
sendMsgForOnline
(
members
.
getFkClientId
(),
imMessageOnlineSend
);
sendMsgForOnline
(
members
.
getFkClientId
(),
imMessageOnlineSend
);
// 异步推送系统通知消息
// 离线消息推送
if
(!
param
.
getSilent
())
{
pushMsgToOfflineMembers
(
application
,
members
,
param
.
getPushContent
(),
param
.
getPushExt
());
// 不是静默推送
PushVO
pushVO
=
new
PushVO
();
pushVO
.
setData
(
JsonUtils
.
beanCopyDeep
(
param
.
getPushContent
(),
HashMap
.
class
));
if
(
param
.
getPushExt
()
!=
null
)
{
PushExtParam
pushExt
=
param
.
getPushExt
();
pushVO
.
setTitle
(
pushExt
.
getTitle
());
}
ImClient
receiver
=
new
ImClient
();
receiver
.
setId
(
members
.
getFkClientId
());
receiver
.
setClientId
(
members
.
getClientId
());
PushDTO
pushDTO
=
mqSender
.
buildPushDto
(
pushVO
,
receiver
,
application
);
if
(
pushDTO
!=
null
)
{
mqSender
.
orderSend
(
MqConstant
.
Topic
.
IM_ORDER_MSG_TOPIC
,
MqConstant
.
Tag
.
IM_ORDER_MSG_TAG
,
pushDTO
);
}
}
}
}
});
});
return
true
;
return
true
;
}
}
@Override
@Override
public
Boolean
groupStatusMessagePublish
(
GroupChatStatusMessageParam
param
)
{
public
Boolean
groupStatusMessagePublish
(
GroupChatStatusMessageParam
param
)
{
return
null
;
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
ImApplication
application
=
imApplicationService
.
getCacheById
(
appId
);
// 获取发件人信息
String
senderClientId
=
param
.
getFromUserId
();
ImClient
sender
=
imClientService
.
getCacheImClient
(
appId
,
senderClientId
);
if
(
sender
==
null
)
{
throw
new
BusinessException
(
"id为 "
+
senderClientId
+
" 的发件人不存在"
);
}
// 获取群聊信息
String
conversationIdsStr
=
param
.
getToGroupIds
();
List
<
String
>
conversationIdList
=
Arrays
.
asList
(
conversationIdsStr
.
split
(
","
));
List
<
ImConversation
>
conversationList
=
imConversationService
.
listByIds
(
conversationIdList
);
// 校验群聊信息
if
(
conversationList
.
size
()
<=
0
)
{
throw
new
BusinessException
(
"群聊ids为 "
+
conversationIdsStr
+
" 的群聊列表不存在"
);
}
conversationList
.
forEach
(
conversation
->
{
// 获取群成员
List
<
ImConversationMembers
>
membersList
=
imConversationMembersService
.
list
(
new
QueryWrapper
<
ImConversationMembers
>().
lambda
()
.
eq
(
ImConversationMembers:
:
getFkConversationId
,
conversation
.
getId
()));
// 组装消息
ImMessage
message
=
assembleImMessage
(
appId
,
sender
,
conversation
.
getId
(),
param
.
getMessageType
(),
true
,
param
.
getContent
());
// 持久化
this
.
save
(
message
);
// 拼装发送消息体
ImMessageOnlineSend
imMessageOnlineSend
=
assembleImMessageOnlineSend
(
message
,
sender
,
appId
);
// 发送消息
for
(
ImConversationMembers
members
:
membersList
)
{
if
(
members
.
getClientId
().
equals
(
senderClientId
)
&&
!
param
.
getIncludeSender
())
{
// 是否是发送者 且includeSender不为true
continue
;
}
// 在线用户直接发消息
sendMsgForOnline
(
members
.
getFkClientId
(),
imMessageOnlineSend
);
}
});
return
true
;
}
}
@Override
@Override
...
@@ -679,7 +710,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -679,7 +710,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
* @Return ImMessage
* @Return ImMessage
*/
*/
private
ImMessage
assembleImMessage
(
Long
appId
,
ImClient
sender
,
Long
toConversationId
,
String
messageType
,
private
ImMessage
assembleImMessage
(
Long
appId
,
ImClient
sender
,
Long
toConversationId
,
String
messageType
,
String
content
)
{
Boolean
event
,
String
content
)
{
long
messageId
=
SnowflakeUtil
.
getId
();
long
messageId
=
SnowflakeUtil
.
getId
();
ImMessage
imMessage
=
new
ImMessage
();
ImMessage
imMessage
=
new
ImMessage
();
...
@@ -690,7 +721,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -690,7 +721,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
imMessage
.
setFkAppid
(
appId
);
imMessage
.
setFkAppid
(
appId
);
imMessage
.
setSender
(
sender
.
getId
());
imMessage
.
setSender
(
sender
.
getId
());
imMessage
.
setWithdraw
(
false
);
imMessage
.
setWithdraw
(
false
);
imMessage
.
setEvent
(
false
);
imMessage
.
setEvent
(
event
);
imMessage
.
setSystemFlag
(
false
);
imMessage
.
setSystemFlag
(
false
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setSendStatus
(
2
);
imMessage
.
setMsgType
(
Integer
.
valueOf
(
messageType
));
imMessage
.
setMsgType
(
Integer
.
valueOf
(
messageType
));
...
@@ -738,5 +769,32 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -738,5 +769,32 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
channelSender
.
sendMsg
(
responseModel
,
receiverClientId
);
channelSender
.
sendMsg
(
responseModel
,
receiverClientId
);
}
}
/**
* 推送消息至离线成员
* @Author luozh
* @Date 2022年05月06日 05:23:58
* @param application
* @param members
* @param pushContent
* @param pushExt
* @Return
*/
private
void
pushMsgToOfflineMembers
(
ImApplication
application
,
ImConversationMembers
members
,
String
pushContent
,
PushExtParam
pushExt
)
{
// 不是静默推送
PushVO
pushVO
=
new
PushVO
();
pushVO
.
setData
(
JSONObject
.
parseObject
(
pushContent
,
HashMap
.
class
));
if
(
pushExt
!=
null
)
{
pushVO
.
setTitle
(
pushExt
.
getTitle
());
}
ImClient
receiver
=
new
ImClient
();
receiver
.
setId
(
members
.
getFkClientId
());
receiver
.
setClientId
(
members
.
getClientId
());
PushDTO
pushDTO
=
mqSender
.
buildPushDto
(
pushVO
,
receiver
,
application
);
if
(
pushDTO
!=
null
)
{
mqSender
.
orderSend
(
MqConstant
.
Topic
.
IM_ORDER_MSG_TOPIC
,
MqConstant
.
Tag
.
IM_ORDER_MSG_TAG
,
pushDTO
);
}
}
}
}
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