From 136b5567c849970e5d6391e238ef01bcd7e8b46e Mon Sep 17 00:00:00 2001 From: blue <825657193@qq.com> Date: Fri, 15 Dec 2023 22:16:40 +0800 Subject: [PATCH] =?UTF-8?q?im-client=E6=94=AF=E6=8C=81=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bx/imclient/IMAutoConfiguration.java | 1 + .../main/java/com/bx/imclient/sender/IMSender.java | 6 ++++++ .../imclient/task/GroupMessageResultResultTask.java | 10 ++++++++-- .../imclient/task/PrivateMessageResultResultTask.java | 11 ++++++++--- .../main/java/com/bx/imcommon/model/IMRecvInfo.java | 4 ++++ .../service/impl/GroupMessageServiceImpl.java | 1 + im-platform/src/main/resources/application.yml | 2 ++ .../netty/processor/GroupMessageProcessor.java | 3 ++- .../netty/processor/PrivateMessageProcessor.java | 3 ++- im-ui/src/components/chat/ChatBox.vue | 1 - 10 files changed, 34 insertions(+), 8 deletions(-) diff --git a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java index b3a93fc..9f8fa84 100644 --- a/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java +++ b/im-client/src/main/java/com/bx/imclient/IMAutoConfiguration.java @@ -9,4 +9,5 @@ import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.bx.imclient") public class IMAutoConfiguration { + } diff --git a/im-client/src/main/java/com/bx/imclient/sender/IMSender.java b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java index 0eac628..fafdfe9 100644 --- a/im-client/src/main/java/com/bx/imclient/sender/IMSender.java +++ b/im-client/src/main/java/com/bx/imclient/sender/IMSender.java @@ -9,6 +9,7 @@ import com.bx.imcommon.enums.IMSendCode; import com.bx.imcommon.enums.IMTerminalType; import com.bx.imcommon.model.*; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; @@ -22,6 +23,9 @@ public class IMSender { @Resource(name="IMRedisTemplate") private RedisTemplate redisTemplate; + @Value("${spring.application.name}") + private String appName; + private final MessageListenerMulticaster listenerMulticaster; public void sendPrivateMessage(IMPrivateMessage message) { @@ -35,6 +39,7 @@ public class IMSender { IMRecvInfo recvInfo = new IMRecvInfo(); recvInfo.setCmd(IMCmdType.PRIVATE_MESSAGE.code()); recvInfo.setSendResult(message.getSendResult()); + recvInfo.setServiceName(appName); recvInfo.setSender(message.getSender()); recvInfo.setReceivers(Collections.singletonList(new IMUserInfo(message.getRecvId(), terminal))); recvInfo.setData(message.getData()); @@ -106,6 +111,7 @@ public class IMSender { recvInfo.setCmd(IMCmdType.GROUP_MESSAGE.code()); recvInfo.setReceivers(new LinkedList<>(entry.getValue())); recvInfo.setSender(message.getSender()); + recvInfo.setServiceName(appName); recvInfo.setSendResult(message.getSendResult()); recvInfo.setData(message.getData()); // 推送至队列 diff --git a/im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java b/im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java index 4e6f08c..3150061 100644 --- a/im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java +++ b/im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java @@ -1,11 +1,14 @@ package com.bx.imclient.task; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.bx.imclient.listener.MessageListenerMulticaster; import com.bx.imcommon.contant.IMRedisKey; import com.bx.imcommon.enums.IMListenerType; import com.bx.imcommon.model.IMSendResult; import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -13,17 +16,20 @@ import javax.annotation.Resource; import java.util.concurrent.TimeUnit; @Component -@AllArgsConstructor +@RequiredArgsConstructor public class GroupMessageResultResultTask extends AbstractMessageResultTask { @Resource(name = "IMRedisTemplate") private RedisTemplate redisTemplate; + @Value("${spring.application.name}") + private String appName; + private final MessageListenerMulticaster listenerMulticaster; @Override public void pullMessage() { - String key = IMRedisKey.IM_RESULT_GROUP_QUEUE; + String key = StrUtil.join(":",IMRedisKey.IM_RESULT_GROUP_QUEUE,appName); JSONObject jsonObject = (JSONObject)redisTemplate.opsForList().leftPop(key,10, TimeUnit.SECONDS); if(jsonObject != null) { IMSendResult result = jsonObject.toJavaObject(IMSendResult.class); diff --git a/im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java b/im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java index b90a08e..31cc462 100644 --- a/im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java +++ b/im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java @@ -1,12 +1,15 @@ package com.bx.imclient.task; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.bx.imclient.listener.MessageListenerMulticaster; import com.bx.imcommon.contant.IMRedisKey; import com.bx.imcommon.enums.IMListenerType; import com.bx.imcommon.model.IMSendResult; import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -15,18 +18,20 @@ import java.util.concurrent.TimeUnit; @Slf4j @Component -@AllArgsConstructor +@RequiredArgsConstructor public class PrivateMessageResultResultTask extends AbstractMessageResultTask { - @Resource(name = "IMRedisTemplate") private RedisTemplate redisTemplate; + @Value("${spring.application.name}") + private String appName; + private final MessageListenerMulticaster listenerMulticaster; @Override public void pullMessage() { - String key = IMRedisKey.IM_RESULT_PRIVATE_QUEUE; + String key = StrUtil.join(":",IMRedisKey.IM_RESULT_PRIVATE_QUEUE,appName); JSONObject jsonObject = (JSONObject)redisTemplate.opsForList().leftPop(key,10, TimeUnit.SECONDS); if(jsonObject != null) { IMSendResult result = jsonObject.toJavaObject(IMSendResult.class); diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java b/im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java index 9a6e0df..52c74e6 100644 --- a/im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java +++ b/im-commom/src/main/java/com/bx/imcommon/model/IMRecvInfo.java @@ -27,6 +27,10 @@ public class IMRecvInfo { */ private Boolean sendResult; + /** + * 当前服务名(回调发送结果使用) + */ + private String serviceName; /** * 推送消息体 */ diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index e3ecbaa..b645ab9 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -86,6 +86,7 @@ public class GroupMessageServiceImpl extends ServiceImpl sendMessage = new IMGroupMessage<>(); sendMessage.setSender(new IMUserInfo(session.getUserId(), session.getTerminal())); sendMessage.setRecvIds(userIds); + sendMessage.setSendResult(false); sendMessage.setData(msgInfo); imClient.sendGroupMessage(sendMessage); log.info("发送群聊消息,发送id:{},群聊id:{},内容:{}", session.getUserId(), dto.getGroupId(), dto.getContent()); diff --git a/im-platform/src/main/resources/application.yml b/im-platform/src/main/resources/application.yml index a682483..889a69c 100644 --- a/im-platform/src/main/resources/application.yml +++ b/im-platform/src/main/resources/application.yml @@ -3,6 +3,8 @@ server: port: 8888 #配置项目的数据源 spring: + application: + name: im-platform mvc: pathmatch: matching-strategy: ant_path_matcher diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java index 9772d20..88b3577 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java @@ -1,5 +1,6 @@ package com.bx.imserver.netty.processor; +import cn.hutool.core.util.StrUtil; import com.bx.imcommon.contant.IMRedisKey; import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.enums.IMSendCode; @@ -64,7 +65,7 @@ public class GroupMessageProcessor extends AbstractMessageProcessor result.setCode(sendCode.code()); result.setData(recvInfo.getData()); // 推送到结果队列 - String key = IMRedisKey.IM_RESULT_GROUP_QUEUE; + String key = StrUtil.join(":",IMRedisKey.IM_RESULT_GROUP_QUEUE,recvInfo.getServiceName()); redisTemplate.opsForList().rightPush(key, result); } } diff --git a/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java b/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java index 1f150fd..26803c5 100644 --- a/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java +++ b/im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java @@ -1,5 +1,6 @@ package com.bx.imserver.netty.processor; +import cn.hutool.core.util.StrUtil; import com.bx.imcommon.contant.IMRedisKey; import com.bx.imcommon.enums.IMCmdType; import com.bx.imcommon.enums.IMSendCode; @@ -57,7 +58,7 @@ public class PrivateMessageProcessor extends AbstractMessageProcessor