Commit 6087944f by Future

发消息优化

parent 61a88477
...@@ -175,6 +175,10 @@ public class NormalChatAction { ...@@ -175,6 +175,10 @@ public class NormalChatAction {
final Boolean isPush = ehcacheService.getIsPush("push" + conversation.getId()); final Boolean isPush = ehcacheService.getIsPush("push" + conversation.getId());
// 多线程处理消息下发 // 多线程处理消息下发
for (ImConversationMembers member : membersList) { for (ImConversationMembers member : membersList) {
if (member.getFkClientId().equals(imClientSender.getId())) {
// 不给自己发
continue;
}
SendMsgThreadPool.SEND_MSG_THREAD_POOL_EXECUTOR.execute(() -> { SendMsgThreadPool.SEND_MSG_THREAD_POOL_EXECUTOR.execute(() -> {
this.sendMsgToMember(imApplication, member, imMessageOnlineSend, data.getPush(), isPush); this.sendMsgToMember(imApplication, member, imMessageOnlineSend, data.getPush(), isPush);
}); });
......
package com.wecloud.im.service.impl; package com.wecloud.im.service.impl;
import com.wecloud.im.param.ImConversationQueryVo;
import com.wecloud.im.post.MessageBuilder; import com.wecloud.im.post.MessageBuilder;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -667,17 +668,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -667,17 +668,14 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
this.save(message); this.save(message);
// 拼装发送消息体 // 拼装发送消息体
ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(message, sender, appId); ImMessageOnlineSend imMessageOnlineSend = assembleImMessageOnlineSend(message, sender, appId);
// 入库 保存收件箱
batchSaveInbox(application, senderClientId, conversation, imMessageOnlineSend.getMsgId(), membersList);
// 发送消息 // 发送消息
for (ImConversationMembers members : membersList) { for (ImConversationMembers members : membersList) {
if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) { if (members.getClientId().equals(senderClientId) && !param.getIncludeSender()) {
// 是否是发送者 且includeSender不为true // 是否是发送者 且includeSender不为true
continue; continue;
} }
// 入库 保存收件箱
saveImInbox(application, conversation.getId(), imMessageOnlineSend.getMsgId(),
members, SnowflakeUtil.getId());
// 在线用户直接发消息 // 在线用户直接发消息
sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend); sendMsgForOnline(members.getFkClientId(), imMessageOnlineSend);
...@@ -689,6 +687,30 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -689,6 +687,30 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
return true; return true;
} }
private void batchSaveInbox(ImApplication imApplication, String senderClientId, ImConversation conversation, long messageId,
List<ImConversationMembers> membersList) {
List<ImInbox> inboxes = Lists.newArrayList();
for (ImConversationMembers member : membersList) {
if (senderClientId.equals(member.getClientId())) {
continue;
}
ImInbox imInbox = new ImInbox();
imInbox.setId(SnowflakeUtil.getId());
imInbox.setCreateTime(new Date());
imInbox.setFkAppid(imApplication.getId());
imInbox.setReceiver(member.getFkClientId());
imInbox.setFkMsgId(messageId);
imInbox.setReadMsgStatus(0);
imInbox.setReceiverMsgStatus(0);
imInbox.setFkConversationId(conversation.getId());
inboxes.add(imInbox);
}
if (CollectionUtils.isNotEmpty(inboxes)) {
imInboxService.saveBatch(inboxes);
}
}
@Override @Override
public Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param) { public Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param) {
Long appId = SecurityUtils.getCurrentAppId(); Long appId = SecurityUtils.getCurrentAppId();
......
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