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
4022001d
Commit
4022001d
authored
Feb 09, 2022
by
Future
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
事件消息存储 msgType补存
parent
0319f9a1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
57 deletions
+44
-57
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
+43
-57
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
+1
-0
No files found.
core/src/main/java/com/wecloud/im/service/impl/ImConversationServiceImpl.java
View file @
4022001d
...
...
@@ -34,6 +34,7 @@ import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.sender.ChannelSender
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.SnowflakeUtil
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.enums.BaseEnum
;
...
...
@@ -42,7 +43,6 @@ import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.shiro.jwt.JwtToken
;
import
io.geekidea.springbootplus.framework.shiro.util.JwtUtil
;
import
com.wecloud.utils.SnowflakeUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
...
...
@@ -295,11 +295,11 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"operator"
,
imClientSender
.
getClientId
());
//操作的client ID
content
.
put
(
"passivityOperator"
,
clientToConversation
.
getClientId
());
//被操作的client ID
content
.
put
(
"type"
,
MsgTypeEnum
.
INVITE_CLIENT_JOIN_CONVERSATION
.
getUriCode
());
//xx邀请xx加入会话 -1007
imMessage
.
setContent
(
JsonUtils
.
encodeJson
(
content
));
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setMsgType
(
MsgTypeEnum
.
INVITE_CLIENT_JOIN_CONVERSATION
.
getUriCode
());
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
...
...
@@ -310,52 +310,18 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
imMessage
.
setFkConversationId
(
imClientToConversation
.
getConversationId
());
boolean
save
=
imMessageService
.
save
(
imMessage
);
// 遍历发送
for
(
ImConversationMembers
conversationMembers
:
membersList
)
{
// 查询接收方
ImClient
imClientReceiver
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImClient:
:
getId
,
conversationMembers
.
getFkClientId
()));
if
(
imClientReceiver
==
null
)
{
continue
;
}
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setType
(
MsgTypeEnum
.
INVITE_CLIENT_JOIN_CONVERSATION
.
getUriCode
());
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
());
Map
<
String
,
String
>
contentMap
=
new
HashMap
<>();
// 操作的client ID
contentMap
.
put
(
"operator"
,
imClientSender
.
getClientId
());
// 被操作的client ID
contentMap
.
put
(
"passivityOperator"
,
clientToConversation
.
getClientId
());
imMessageOnlineSend
.
setContent
(
contentMap
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
imClientReceiver
.
getId
());
// 遍历发送给已在群内的成员
for
(
ImConversationMembers
conversationMember
:
membersList
)
{
sendEventMsgToMember
(
imApplication
,
conversationMember
.
getFkClientId
(),
imMessage
,
imClientSender
,
clientToConversation
);
}
// 发送给刚被拉入群的成员
sendEventMsgToMember
(
imApplication
,
clientToConversation
.
getId
(),
imMessage
,
imClientSender
,
clientToConversation
);
}
// 将群成员数量减
imConversationMapper
.
addMemberCount
(
imApplication
.
getId
(),
imClientToConversation
.
getConversationId
(),
needAddCount
);
ImConversationQueryVo
conversation
=
imConversationMapper
.
getImConversationById
(
imClientToConversation
.
getConversationId
());
if
(
conversation
.
getMemberCount
()
>
2000
)
{
if
(
conversation
.
getMemberCount
()
>
2000
)
{
// 升级为万人群
imConversationMapper
.
upgradeToThousandChat
(
imApplication
.
getId
(),
imClientToConversation
.
getConversationId
());
}
...
...
@@ -364,6 +330,37 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
}
private
void
sendEventMsgToMember
(
ImApplication
imApplication
,
Long
conversationMemberClientId
,
ImMessage
imMessage
,
ImClient
clientSender
,
ImClient
clientToConversation
)
{
// 查询接收方
ImClient
imClientReceiver
=
imClientService
.
getOne
(
new
QueryWrapper
<
ImClient
>().
lambda
()
.
eq
(
ImClient:
:
getFkAppid
,
imApplication
.
getId
())
.
eq
(
ImClient:
:
getId
,
conversationMemberClientId
));
if
(
imClientReceiver
==
null
)
{
return
;
}
// 封装响应的实体
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
imMessage
.
getId
());
imMessageOnlineSend
.
setType
(
imMessage
.
getMsgType
());
imMessageOnlineSend
.
setSender
(
clientSender
.
getClientId
());
imMessageOnlineSend
.
setContent
(
JsonUtils
.
decodeJson2Map
(
imMessage
.
getContent
()));
imMessageOnlineSend
.
setConversationId
(
imMessage
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
// 向接收方推送
WsResponse
<
ImMessageOnlineSend
>
responseModel
=
new
WsResponse
<>();
responseModel
.
setCmd
(
WsResponseCmdEnum
.
CONVERSATION_EVENT_MSG
.
getCmdCode
());
ApiResult
<
Boolean
>
result
=
ApiResult
.
result
(
ApiCode
.
SUCCESS
);
responseModel
.
setCode
(
result
.
getCode
());
responseModel
.
setMsg
(
result
.
getMessage
());
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
imClientReceiver
.
getId
());
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ApiResult
<
Boolean
>
delClientToConversation
(
ImClientToConversation
imClientToConversation
)
throws
Exception
{
...
...
@@ -425,11 +422,11 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"operator"
,
imClientSender
.
getClientId
());
//操作的client ID
content
.
put
(
"passivityOperator"
,
client2
.
getClientId
());
//被操作的client ID
content
.
put
(
"type"
,
MsgTypeEnum
.
REMOVE_CLIENT_CONVERSATION
.
getUriCode
());
//xx被xx移出会话 -1008
imMessage
.
setContent
(
JsonUtils
.
encodeJson
(
content
));
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setMsgType
(
MsgTypeEnum
.
REMOVE_CLIENT_CONVERSATION
.
getUriCode
());
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
...
...
@@ -455,14 +452,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
ImMessageOnlineSend
imMessageOnlineSend
=
new
ImMessageOnlineSend
();
imMessageOnlineSend
.
setMsgId
(
messageId
);
imMessageOnlineSend
.
setType
(
MsgTypeEnum
.
REMOVE_CLIENT_CONVERSATION
.
getUriCod
e
());
imMessageOnlineSend
.
setType
(
imMessage
.
getMsgTyp
e
());
imMessageOnlineSend
.
setSender
(
imClientSender
.
getClientId
());
Map
<
String
,
Object
>
contentMap
=
new
HashMap
<>();
// 操作的client ID
contentMap
.
put
(
"operator"
,
imClientSender
.
getClientId
());
// 被操作的client ID
contentMap
.
put
(
"passivityOperator"
,
client2
.
getClientId
());
imMessageOnlineSend
.
setContent
(
contentMap
);
imMessageOnlineSend
.
setContent
(
content
);
imMessageOnlineSend
.
setConversationId
(
conversationMembers
.
getFkConversationId
());
imMessageOnlineSend
.
setWithdraw
(
Boolean
.
FALSE
);
imMessageOnlineSend
.
setEvent
(
Boolean
.
TRUE
);
...
...
@@ -476,9 +468,7 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
responseModel
.
setData
(
imMessageOnlineSend
);
responseModel
.
setReqId
(
null
);
channelSender
.
sendMsg
(
responseModel
,
imClientReceiver
.
getId
());
}
}
// 将群成员数量减
...
...
@@ -540,13 +530,9 @@ public class ImConversationServiceImpl extends BaseServiceImpl<ImConversationMap
long
messageId
=
SnowflakeUtil
.
getId
();
ImMessage
imMessage
=
new
ImMessage
();
Map
<
String
,
Object
>
content
=
new
HashMap
<>();
content
.
put
(
"type"
,
MsgTypeEnum
.
LEAVE_CONVERSATION
.
getUriCode
());
// xx主动退出会话
String
asString
=
JsonUtils
.
encodeJson
(
content
);;
imMessage
.
setContent
(
asString
);
// 保存消息至消息表
imMessage
.
setId
(
messageId
);
imMessage
.
setMsgType
(
MsgTypeEnum
.
LEAVE_CONVERSATION
.
getUriCode
());
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
imApplication
.
getId
());
imMessage
.
setSender
(
imClientSender
.
getId
());
...
...
core/src/main/java/com/wecloud/im/service/impl/ImInboxServiceImpl.java
View file @
4022001d
...
...
@@ -179,6 +179,7 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 消息实体
ImMessage
imMessage
=
new
ImMessage
();
imMessage
.
setId
(
msgId
);
imMessage
.
setMsgType
(
msgTypeEnum
.
getUriCode
());
imMessage
.
setCreateTime
(
new
Date
());
imMessage
.
setFkAppid
(
curentClient
.
getFkAppid
());
imMessage
.
setSender
(
curentClient
.
getId
());
...
...
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