Commit c36bd527 by 罗长华

修复发送单聊消息报错

parent e3cc857f
...@@ -786,33 +786,34 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -786,33 +786,34 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
throw new BusinessException("收件人列表为空"); throw new BusinessException("收件人列表为空");
} }
// 查找conversation列表 // 查找conversation列表
Long senderImClientId = sender.getId(); Long senderImClientId = sender.getId();
Set<Long> receiverImClientIds = receiverList.stream().map(ImClient::getId).collect(Collectors.toSet()); Set<Long> receiverImClientIds = receiverList.stream().map(ImClient::getId).collect(Collectors.toSet());
List<ImConversation> conversationList = List<ImConversation> conversationList =
imConversationService.getConversationBySenderAndReceivers(senderImClientId, receiverImClientIds); imConversationService.getConversationBySenderAndReceivers(senderImClientId, receiverImClientIds);
conversationMapGroupById.putAll(conversationList.stream().collect(Collectors.toMap(ImConversation::getId,
Function.identity(), (v1, v2) -> v1)));
// 查找会话成员
List<Long> conversationIdList = conversationList.stream().map(ImConversation::getId).collect(Collectors.toList());
List<ImConversationMembers> conversationMembersList =
imConversationMembersService.list(Wrappers.<ImConversationMembers>lambdaQuery().in(ImConversationMembers::getFkConversationId, conversationIdList));
conMembersMapGroupByConId.putAll(conversationMembersList.stream().collect(Collectors.groupingBy(ImConversationMembers::getFkConversationId)));
if (conversationMapGroupById.size() == receiverList.size()) {
// 如果会话数量和收件人数量一致,后面的逻辑就不需要走了
return;
}
Set<Long> hasExistConversationReceiverImClientIds =
conversationMembersList.stream()
.map(ImConversationMembers::getFkClientId)
.filter(fkClientId -> !fkClientId.equals(senderImClientId)).collect(Collectors.toSet());
// 根据收件人imClientId对会话/会话成员进行分组 // 根据收件人imClientId对会话/会话成员进行分组
Set<Long> notExistConversationReceiverClientIds = new HashSet<>(receiverImClientIds); Set<Long> notExistConversationReceiverClientIds = new HashSet<>(receiverImClientIds);
notExistConversationReceiverClientIds.removeAll(hasExistConversationReceiverImClientIds);
if (!conversationList.isEmpty()) {
conversationMapGroupById.putAll(conversationList.stream().collect(Collectors.toMap(ImConversation::getId,
Function.identity(), (v1, v2) -> v1)));
// 查找会话成员
List<Long> conversationIdList = conversationList.stream().map(ImConversation::getId).collect(Collectors.toList());
List<ImConversationMembers> conversationMembersList =
imConversationMembersService.list(Wrappers.<ImConversationMembers>lambdaQuery().in(ImConversationMembers::getFkConversationId, conversationIdList));
conMembersMapGroupByConId.putAll(conversationMembersList.stream().collect(Collectors.groupingBy(ImConversationMembers::getFkConversationId)));
Set<Long> hasExistConversationReceiverImClientIds =
conversationMembersList.stream()
.map(ImConversationMembers::getFkClientId)
.filter(fkClientId -> !fkClientId.equals(senderImClientId)).collect(Collectors.toSet());
notExistConversationReceiverClientIds.removeAll(hasExistConversationReceiverImClientIds);
}
// 不存在会话的先创建会话 // 不存在会话的先创建会话
for (Long receiverImClientId : notExistConversationReceiverClientIds) { for (Long receiverImClientId : notExistConversationReceiverClientIds) {
......
...@@ -134,7 +134,6 @@ ...@@ -134,7 +134,6 @@
c.system_flag, c.system_flag,
c.muted, c.muted,
c.is_forbid_add_friend as forbid_add_friend, c.is_forbid_add_friend as forbid_add_friend,
c.is_forbid_send_red_packets as forbid_send_red_packets,
c.is_forbid_send_pic as forbid_send_pic, c.is_forbid_send_pic as forbid_send_pic,
c.is_forbid_send_link as forbid_send_link c.is_forbid_send_link as forbid_send_link
FROM FROM
......
...@@ -235,8 +235,6 @@ alter table `im_conversation_members` ...@@ -235,8 +235,6 @@ alter table `im_conversation_members`
alter table `im_conversation` alter table `im_conversation`
add column `is_forbid_add_friend` tinyint(1) unsigned default 0 comment '是否禁止群里互加好友0否1是'; add column `is_forbid_add_friend` tinyint(1) unsigned default 0 comment '是否禁止群里互加好友0否1是';
alter table `im_conversation` alter table `im_conversation`
add column `is_forbid_send_red_packets` tinyint(1) unsigned default 0 comment '是否禁止发红包0否1是';
alter table `im_conversation`
add column `is_forbid_send_pic` tinyint(1) unsigned default 0 comment '是否禁止发图片0否1是'; add column `is_forbid_send_pic` tinyint(1) unsigned default 0 comment '是否禁止发图片0否1是';
alter table `im_conversation` alter table `im_conversation`
add column `is_forbid_send_link` tinyint(1) unsigned default 0 comment '是否禁止发链接0否1是'; add column `is_forbid_send_link` tinyint(1) unsigned default 0 comment '是否禁止发链接0否1是';
# wecloud-im 前端Websocket对接文档 # wecloud-im 前端Websocket对接文档
...@@ -289,14 +289,14 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响 ...@@ -289,14 +289,14 @@ websocket是异步的 有可能你很快速的发送了几条消息,服务器响
"subTitle":"点击查看" "subTitle":"点击查看"
}, },
"diyAbcd":"aaaa自已定义字段的值", "diyAbcd":"aaaa自已定义字段的值",
"toConversation":1402147846261706752, "toConversation": 1402147846261706752,
"type":-1, "type": -1,
"text":"你好,这是一123个纯文本消息", "text": "你好,这是一123个纯文本消息",
"attrs":{ "attrs":{
"a":"用户自定义的一些键值对", "a":"用户自定义的一些键值对",
"b":"用户自定义的一些键值对" "b":"用户自定义的一些键值对"
} }
} }
} }
``` ```
**参数描述** **参数描述**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment