Commit 36cd4e3e by Future

群聊消息添加多线程操作

parent ebfb7f06
......@@ -13,6 +13,7 @@ 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.executor.SendMsgThreadPool;
import com.wecloud.im.friend.entity.ImFriend;
import com.wecloud.im.friend.service.ImFriendService;
import com.wecloud.im.mq.MqSender;
......@@ -166,21 +167,36 @@ public class NormalChatAction {
// 入库 保存收件箱
batchSaveInbox(imApplication, conversation, imMessageOnlineSend.getMsgId(), membersList);
// 再给所有人发
for (ImConversationMembers member : membersList) {
if (member.getFkClientId().equals(imClientSender.getId())) {
// 不给自己发
continue;
}
// 入库成功后 判断是否是临时会话 如果是,双方会话display状态是否是1(显示),如果不是,需要修改为是
if (ChatTypeEnum.TEMP.getCode().equals(conversation.getChatType())) {
// 木有只有私聊一种临时会话类型
List<ImConversationMembers> tempMemberToUpdate = Lists.newArrayList();
for (ImConversationMembers members : membersList) {
members.setDisplayStatus(1L);
if (members.getDisplayStatus() == 0) {
members.setDisplayStatus(1);
tempMemberToUpdate.add(members);
}
}
if (CollectionUtils.isNotEmpty(tempMemberToUpdate)) {
imConversationMembersService.updateBatchById(tempMemberToUpdate);
}
}
// 多线程处理消息下发
for (ImConversationMembers member : membersList) {
SendMsgThreadPool.SEND_MSG_THREAD_POOL_EXECUTOR.execute(() -> {
this.sendMsgToMember(member, imClientSender, imMessageOnlineSend);
});
}
imConversationMembersService.updateBatchById(membersList);
// 响应发送方消息id等信息
response(reqId, imMessageOnlineSend.getMsgId(), request.getSenderChannel());
}
private void sendMsgToMember(ImConversationMembers member, ImClient imClientSender, ImMessageOnlineSend imMessageOnlineSend) {
if (member.getFkClientId().equals(imClientSender.getId())) {
// 不给自己发
return;
}
// 在线用户直接发消息
Boolean sendSuccess = sendMsgForOnline(member.getFkClientId(), imMessageOnlineSend);
......@@ -193,13 +209,9 @@ public class NormalChatAction {
// }
}
// 响应发送方消息id等信息
response(reqId, imMessageOnlineSend.getMsgId(), request.getSenderChannel());
}
/**
* 发送消息给在线客户
*
* @param receiverClientId
* @param imMessageOnlineSend
*/
......@@ -217,6 +229,7 @@ public class NormalChatAction {
/**
* 拼装发送消息体
*
* @param data
* @param imClientSender
* @param appId
......@@ -344,9 +357,10 @@ public class NormalChatAction {
/**
* 好友判断
*
* @param
* @Author luozh
* @Date 2022年05月18日 07:28:34
* @param
* @Return
*/
private boolean friend(String reqId, ImClient imClientSender, Long conversationId,
......@@ -450,6 +464,7 @@ public class NormalChatAction {
/**
* 判断被踢出逻辑
*
* @param reqId
* @param imClientSender
* @param membersList
......@@ -477,6 +492,7 @@ public class NormalChatAction {
/**
* 是否禁言判断
*
* @param conversation
* @param reqId
* @param imClientSender
......@@ -519,9 +535,10 @@ public class NormalChatAction {
/**
* 是否封禁
*
* @param
* @Author Shadow
* @Date 2022年06月06日 01:42:33
* @param
* @Return
*/
private boolean baned(ImConversationQueryVo conversation, String reqId, ImClient imClientSender, List<ImConversationMembers> membersList, Channel channel) {
......@@ -553,6 +570,7 @@ public class NormalChatAction {
/**
* 是否禁止发送链接
*
* @Author luozh
* @Date 2022年04月27日 04:39:04
* @Return
......
......@@ -56,7 +56,7 @@ public class ImConversationMembers extends BaseEntity {
@NotNull(message = "单向删除(隐藏)会话, 0不显示, 1显示不能为空")
@ApiModelProperty("单向删除(隐藏)会话, 0不显示, 1显示")
private Long displayStatus;
private Integer displayStatus;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
......
......@@ -18,7 +18,7 @@ public class SendMsgThreadPool {
.setNamePrefix("-sendM-").build();
/**
* 业务处理线程池
* 消息下发处理线程池
*/
public static final ExecutorService SEND_MSG_THREAD_POOL_EXECUTOR =
new ThreadPoolExecutor(WsConstants.CPU_PROCESSORS, WsConstants.CPU_PROCESSORS * 3,
......
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