Commit 5ba178d5 by Future

系统通知推送

parent 4b9b590f
......@@ -189,6 +189,15 @@ public class NormalChatAction {
imConversationMembersService.updateBatchById(tempMemberToUpdate);
}
}
String key = "push_" + conversation.getId();
String value = redisUtils.getKey(key);
final Boolean isPush;
if (StringUtils.isBlank(value)) {
isPush = Boolean.TRUE;
redisUtils.addKey(key, "1", Duration.ofMinutes(2));
} else {
isPush = Boolean.FALSE;
}
// 多线程处理消息下发
for (ImConversationMembers member : membersList) {
if (member.getFkClientId().equals(imClientSender.getId())) {
......@@ -196,7 +205,7 @@ public class NormalChatAction {
continue;
}
SendMsgThreadPool.SEND_MSG_THREAD_POOL_EXECUTOR.execute(() -> {
this.sendMsgToMember(imApplication, member, imMessageOnlineSend, data.getPush());
this.sendMsgToMember(imApplication, member, imMessageOnlineSend, data.getPush(), isPush);
});
}
......@@ -204,23 +213,17 @@ public class NormalChatAction {
response(reqId, imMessageOnlineSend.getMsgId(), request.getSenderChannel());
}
private void sendMsgToMember(ImApplication imApplication, ImConversationMembers member, ImMessageOnlineSend imMessageOnlineSend, PushVO push) {
private void sendMsgToMember(ImApplication imApplication, ImConversationMembers member, ImMessageOnlineSend imMessageOnlineSend, PushVO push, Boolean isPush) {
// 在线用户直接发消息
Boolean sendSuccess = sendMsgForOnline(member.getFkClientId(), imMessageOnlineSend);
if (!sendSuccess && !member.getDoNotDisturb()) {
String key = "push_" + member.getFkClientId();
String value = redisUtils.getKey(key);
if (StringUtils.isBlank(value)) {
if (isPush && !sendSuccess && !member.getDoNotDisturb()) {
// 异步推送系统通知消息 2分钟内推一次消息
redisUtils.addKey(key, "1", Duration.ofMinutes(2));
PushDTO pushDTO = mqSender.buildPushDto(push, member.getFkClientId(), member.getClientId(), imApplication);
if (pushDTO != null) {
mqSender.orderSend(MqConstant.Topic.IM_ORDER_MSG_TOPIC, MqConstant.Tag.IM_ORDER_MSG_TAG, pushDTO);
}
}
}
}
/**
* 发送消息给在线客户
......
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