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
f7476fd4
Commit
f7476fd4
authored
Sep 28, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码调试
parent
f8e44037
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
43 deletions
+40
-43
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
+40
-43
No files found.
core/src/main/java/com/wecloud/im/action/NormalChatAction.java
View file @
f7476fd4
...
...
@@ -106,10 +106,7 @@ public class NormalChatAction {
// if (log.isDebugEnabled()) {
// log.debug("接收到参数,reqId: {},\n data: {}, ", reqId, data);
// }
//查看接收的群属性,是否万人群
ImConversationQueryVo
conversation
=
imConversationService
.
getCacheImConversationById
(
data
.
getToConversation
());
if
(
conversation
==
null
)
{
log
.
warn
(
"会reqId: {} ,会话id: {}db中不存在"
,
reqId
,
data
.
getToConversation
());
return
;
...
...
@@ -142,59 +139,59 @@ public class NormalChatAction {
channelSender
.
sendMsgLocal
((
NioSocketChannel
)
request
.
getSenderChannel
(),
responseModel
);
return
;
}
Map
<
Long
,
ImConversationMembers
>
memberMap
=
membersList
.
stream
().
collect
(
Collectors
.
toMap
(
ImConversationMembers:
:
getFkClientId
,
member
->
member
));
//
Map<Long, ImConversationMembers> memberMap = membersList.stream().collect(Collectors.toMap(ImConversationMembers::getFkClientId, member -> member));
// 判断为单聊
if
(
ChatTypeEnum
.
SINGLE
.
getCode
().
equals
(
conversation
.
getChatType
()))
{
// 判断是否被拉黑逻辑
if
(
black
(
reqId
,
imClientSender
,
membersList
,
request
.
getSenderChannel
()))
{
return
;
}
if
(!
friend
(
reqId
,
imClientSender
,
data
.
getToConversation
(),
membersList
,
request
.
getSenderChannel
()))
{
return
;
}
}
//
if (ChatTypeEnum.SINGLE.getCode().equals(conversation.getChatType())) {
//
// 判断是否被拉黑逻辑
//
if (black(reqId, imClientSender, membersList, request.getSenderChannel())) {
//
return;
//
}
//
//
if (!friend(reqId, imClientSender, data.getToConversation(), membersList, request.getSenderChannel())) {
//
return;
//
}
//
}
if
(
ChatTypeEnum
.
NORMAL_GROUP
.
getCode
().
equals
(
conversation
.
getChatType
()))
{
if
(
beKickOut
(
reqId
,
imClientSender
,
membersList
,
request
.
getSenderChannel
()))
{
return
;
}
if
(
muted
(
conversation
,
reqId
,
imClientSender
,
membersList
,
memberMap
,
request
.
getSenderChannel
()))
{
return
;
}
if
(
baned
(
conversation
,
reqId
,
imClientSender
,
membersList
,
request
.
getSenderChannel
()))
{
return
;
}
}
//
if (ChatTypeEnum.NORMAL_GROUP.getCode().equals(conversation.getChatType())) {
//
if (beKickOut(reqId, imClientSender, membersList, request.getSenderChannel())) {
//
return;
//
}
//
if (muted(conversation, reqId, imClientSender, membersList, memberMap, request.getSenderChannel())) {
//
return;
//
}
//
if (baned(conversation, reqId, imClientSender, membersList, request.getSenderChannel())) {
//
return;
//
}
//
}
// 消息内容校验
if
(!
checkMsg
(
imClientSender
,
conversation
,
reqId
,
data
,
request
.
getSenderChannel
(),
memberMap
))
{
return
;
}
//
if (!checkMsg(imClientSender, conversation, reqId, data, request.getSenderChannel(), memberMap)) {
//
return;
//
}
ImMessageOnlineSend
imMessageOnlineSend
=
assembleImMessageOnlineSend
(
data
,
imClientSender
,
imApplication
.
getId
());
// 入库 保存收件箱
batchSaveInbox
(
imApplication
,
conversation
,
imMessageOnlineSend
.
getMsgId
(),
membersList
);
// 入库成功后 判断是否是临时会话 如果是,双方会话display状态是否是1(显示),如果不是,需要修改为是
if
(
ChatTypeEnum
.
TEMP
.
getCode
().
equals
(
conversation
.
getChatType
()))
{
// 木有只有私聊一种临时会话类型
List
<
ImConversationMembers
>
tempMemberToUpdate
=
Lists
.
newArrayList
();
for
(
ImConversationMembers
members
:
membersList
)
{
if
(
members
.
getDisplayStatus
()
==
0
)
{
members
.
setDisplayStatus
(
1
);
tempMemberToUpdate
.
add
(
members
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
tempMemberToUpdate
))
{
imConversationMembersService
.
updateBatchById
(
tempMemberToUpdate
);
}
}
//
if (ChatTypeEnum.TEMP.getCode().equals(conversation.getChatType())) {
//
// 木有只有私聊一种临时会话类型
//
List<ImConversationMembers> tempMemberToUpdate = Lists.newArrayList();
//
for (ImConversationMembers members : membersList) {
//
if (members.getDisplayStatus() == 0) {
//
members.setDisplayStatus(1);
//
tempMemberToUpdate.add(members);
//
}
//
}
//
if (CollectionUtils.isNotEmpty(tempMemberToUpdate)) {
//
imConversationMembersService.updateBatchById(tempMemberToUpdate);
//
}
//
}
String
key
=
"push_"
+
conversation
.
getId
();
String
value
=
redisUtils
.
getKey
(
key
);
final
Boolean
isPush
;
if
(
StringUtils
.
isBlank
(
value
))
{
isPush
=
Boolean
.
TRUE
;
redisUtils
.
addKey
(
key
,
"1"
,
Duration
.
ofMinutes
(
2
));
redisUtils
.
addKey
(
key
,
"1"
,
Duration
.
ofMinutes
(
5
));
}
else
{
isPush
=
Boolean
.
FALSE
;
}
...
...
@@ -217,7 +214,7 @@ public class NormalChatAction {
// 在线用户直接发消息
Boolean
sendSuccess
=
sendMsgForOnline
(
member
.
getFkClientId
(),
imMessageOnlineSend
);
if
(
isPush
&&
!
sendSuccess
&&
!
member
.
getDoNotDisturb
())
{
// 异步推送系统通知消息
2
分钟内推一次消息
// 异步推送系统通知消息
5
分钟内推一次消息
PushDTO
pushDTO
=
mqSender
.
buildPushDto
(
push
,
member
.
getFkClientId
(),
member
.
getClientId
(),
imApplication
);
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