Commit 6087944f by Future

发消息优化

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