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
06010e08
Commit
06010e08
authored
May 06, 2022
by
14759289890
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善privateMessagePublish功能
parent
a01e30ee
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
60 deletions
+52
-60
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
+52
-60
No files found.
core/src/main/java/com/wecloud/im/service/impl/ImMessageServiceImpl.java
View file @
06010e08
package
com
.
wecloud
.
im
.
service
.
impl
;
package
com
.
wecloud
.
im
.
service
.
impl
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.shiro.util.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
@@ -33,42 +9,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...
@@ -33,42 +9,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.wecloud.dispatch.common.BaseRequest
;
import
com.wecloud.dispatch.common.BaseRequest
;
import
com.wecloud.im.entity.ImApiMessageOnlineSend
;
import
com.wecloud.im.entity.*
;
import
com.wecloud.im.entity.ImApplication
;
import
com.wecloud.im.entity.ImClient
;
import
com.wecloud.im.entity.ImConversation
;
import
com.wecloud.im.entity.ImConversationMembers
;
import
com.wecloud.im.entity.ImInbox
;
import
com.wecloud.im.entity.ImMessage
;
import
com.wecloud.im.entity.ImMessageOnlineSend
;
import
com.wecloud.im.mapper.ImMessageMapper
;
import
com.wecloud.im.mapper.ImMessageMapper
;
import
com.wecloud.im.mq.MqSender
;
import
com.wecloud.im.mq.MqSender
;
import
com.wecloud.im.param.ChatContentVo
;
import
com.wecloud.im.param.*
;
import
com.wecloud.im.param.GetReadersParam
;
import
com.wecloud.im.param.add.ImConversationCreate
;
import
com.wecloud.im.param.GroupChatMessageParam
;
import
com.wecloud.im.param.GroupChatStatusMessageParam
;
import
com.wecloud.im.param.ImClientSimpleDto
;
import
com.wecloud.im.param.ImHistoryMessagePageParam
;
import
com.wecloud.im.param.MsgDeleteParam
;
import
com.wecloud.im.param.PrivateChatMessageParam
;
import
com.wecloud.im.param.PrivateChatStatusMessageParam
;
import
com.wecloud.im.param.PushExtParam
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgRecall
;
import
com.wecloud.im.param.add.ImMsgSendToOnlineClient
;
import
com.wecloud.im.param.add.ImMsgSendToOnlineClient
;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.param.add.ImMsgUpdate
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.sdk.enums.ChatTypeEnum
;
import
com.wecloud.im.service.ContextService
;
import
com.wecloud.im.service.*
;
import
com.wecloud.im.service.ImApplicationService
;
import
com.wecloud.im.service.ImClientService
;
import
com.wecloud.im.service.ImConversationMembersService
;
import
com.wecloud.im.service.ImConversationService
;
import
com.wecloud.im.service.ImInboxService
;
import
com.wecloud.im.service.ImMessageService
;
import
com.wecloud.im.thousandchat.service.ThousandChatService
;
import
com.wecloud.im.thousandchat.service.ThousandChatService
;
import
com.wecloud.im.vo.ImMessageOfflineListVo
;
import
com.wecloud.im.vo.*
;
import
com.wecloud.im.vo.OfflineMsgDto
;
import
com.wecloud.im.vo.ReaderList
;
import
com.wecloud.im.vo.ReaderVo
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.MsgTypeEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.enums.WsResponseCmdEnum
;
import
com.wecloud.im.ws.model.WsResponse
;
import
com.wecloud.im.ws.model.WsResponse
;
...
@@ -80,6 +32,23 @@ import com.wecloud.pushserver.client.model.constant.MqConstant;
...
@@ -80,6 +32,23 @@ import com.wecloud.pushserver.client.model.constant.MqConstant;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
import
com.wecloud.pushserver.client.model.dto.PushDTO
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.JsonUtils
;
import
com.wecloud.utils.SnowflakeUtil
;
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.exception.BusinessException
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.shiro.util.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -667,24 +636,27 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -667,24 +636,27 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
public
Boolean
privateMessagePublish
(
PrivateChatMessageParam
param
)
{
public
Boolean
privateMessagePublish
(
PrivateChatMessageParam
param
)
{
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
Long
appId
=
SecurityUtils
.
getCurrentAppId
();
ImApplication
application
=
imApplicationService
.
getCacheById
(
appId
);
ImApplication
application
=
imApplicationService
.
getCacheById
(
appId
);
// 获取发件人信息
// 获取发件人信息
String
senderClientId
=
param
.
getFromUserId
();
String
senderClientId
=
param
.
getFromUserId
();
ImClient
sender
=
imClientService
.
getCacheImClient
(
appId
,
senderClientId
);
ImClient
sender
=
imClientService
.
getCacheImClient
(
appId
,
senderClientId
);
if
(
sender
==
null
)
{
if
(
sender
==
null
)
{
throw
new
BusinessException
(
"id为 "
+
senderClientId
+
" 的发件人不存在"
);
throw
new
BusinessException
(
"id为 "
+
senderClientId
+
" 的发件人不存在"
);
}
}
// 获取收件人信息
// 获取收件人信息
String
toUserIdsStr
=
param
.
getToUserIds
();
String
toUserIdsStr
=
param
.
getToUserIds
();
List
<
String
>
toUserIdList
=
Arrays
.
asList
(
toUserIdsStr
.
split
(
","
));
List
<
String
>
toUserIdList
=
Arrays
.
asList
(
toUserIdsStr
.
split
(
","
));
List
<
ImClient
>
clientList
=
imClientService
.
list
(
Wrappers
.<
ImClient
>
lambdaQuery
().
eq
(
ImClient:
:
getFkAppid
,
List
<
ImClient
>
clientList
=
imClientService
.
list
(
Wrappers
.<
ImClient
>
lambdaQuery
().
eq
(
ImClient:
:
getFkAppid
,
appId
).
in
(
ImClient:
:
getClientId
,
toUserIdList
));
appId
).
in
(
ImClient:
:
getClientId
,
toUserIdList
));
Map
<
Long
,
ImClient
>
clientMapById
=
clientList
.
stream
().
collect
(
Collectors
.
toMap
(
ImClient:
:
getId
,
Function
.
identity
()));
if
(
clientList
.
isEmpty
())
{
if
(
clientList
.
isEmpty
())
{
throw
new
BusinessException
(
"收件人列表为空"
);
throw
new
BusinessException
(
"收件人列表为空"
);
}
}
// 查找conversation列表
// 查找conversation列表
Long
senderImClientId
=
sender
.
getId
();
Long
senderImClientId
=
sender
.
getId
();
List
<
Long
>
receiverImClientIds
=
clientList
.
stream
().
map
(
ImClient:
:
getId
).
collect
(
Collectors
.
toLis
t
());
Set
<
Long
>
receiverImClientIds
=
clientList
.
stream
().
map
(
ImClient:
:
getId
).
collect
(
Collectors
.
toSe
t
());
List
<
ImConversation
>
conversationList
=
List
<
ImConversation
>
conversationList
=
imConversationService
.
getConversationBySenderAndReceivers
(
senderImClientId
,
receiverImClientIds
);
imConversationService
.
getConversationBySenderAndReceivers
(
senderImClientId
,
receiverImClientIds
);
Map
<
Long
,
ImConversation
>
conversationMapGroupById
=
Map
<
Long
,
ImConversation
>
conversationMapGroupById
=
...
@@ -697,13 +669,33 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
...
@@ -697,13 +669,33 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
Map
<
Long
,
List
<
ImConversationMembers
>>
conMembersMapGroupByConId
=
Map
<
Long
,
List
<
ImConversationMembers
>>
conMembersMapGroupByConId
=
conversationMembersList
.
stream
().
collect
(
Collectors
.
groupingBy
(
ImConversationMembers:
:
getFkConversationId
));
conversationMembersList
.
stream
().
collect
(
Collectors
.
groupingBy
(
ImConversationMembers:
:
getFkConversationId
));
Map
<
Long
,
ImConversationMembers
>
receiverConversationMembersMap
=
Map
<
Long
,
ImConversationMembers
>
receiverConversationMembersMap
=
conversationMembersList
.
stream
()
.
filter
(
member
->
{
conversationMembersList
.
stream
()
return
!
member
.
getFkClientId
().
equals
(
senderImClientId
);
.
filter
(
member
->
!
member
.
getFkClientId
().
equals
(
senderImClientId
))
})
.
collect
(
Collectors
.
toMap
(
ImConversationMembers:
:
getFkClientId
,
Function
.
identity
()));
.
collect
(
Collectors
.
toMap
(
ImConversationMembers:
:
getFkClientId
,
Function
.
identity
()));
// 根据收件人imClientId对会话/会话成员进行分组
// 根据收件人imClientId对会话/会话成员进行分组
Map
<
Long
,
ImConversation
>
conMapGroupByReceiverImClientId
=
new
HashMap
<>();
Set
<
Long
>
existConversationReceiverClientIds
=
receiverConversationMembersMap
.
keySet
();
Map
<
Long
,
List
<
ImConversationMembers
>>
conMemberMap
=
new
HashMap
<>();
Set
<
Long
>
notExistConversationReceiverClientIds
=
new
HashSet
<>(
receiverImClientIds
);
notExistConversationReceiverClientIds
.
removeAll
(
existConversationReceiverClientIds
);
// 不存在会话的先创建会话
notExistConversationReceiverClientIds
.
forEach
(
receiverImClientId
->
{
ImClient
receiver
=
clientMapById
.
get
(
receiverImClientId
);
List
<
String
>
clientIds
=
new
ArrayList
<>();
clientIds
.
add
(
sender
.
getClientId
());
clientIds
.
add
(
receiver
.
getClientId
());
ImConversationCreate
conversationCreate
=
new
ImConversationCreate
();
conversationCreate
.
setName
(
null
);
conversationCreate
.
setAttributes
(
null
);
conversationCreate
.
setClientIds
(
clientIds
);
conversationCreate
.
setChatType
(
1
);
ImConversationCreateVo
createVo
=
imConversationService
.
createImConversation
(
conversationCreate
);
ImConversation
conversation
=
new
ImConversation
();
conversation
.
setId
(
createVo
.
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