From ba6e0a729cfa5f3457a8ebfd25a4ad36d06990ee Mon Sep 17 00:00:00 2001 From: easonzhu Date: Mon, 10 Feb 2025 21:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8F=91=E9=80=81=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/SendGroupMessageAppQuery.java | 9 ++++--- .../admin/AdminGroupMessageService.java | 14 ++++------- .../service/app/AppGroupMessageService.java | 3 +-- .../service/common/GroupMessageService.java | 24 +++++++++++++++++++ 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/upchina/group/query/message/SendGroupMessageAppQuery.java b/src/main/java/com/upchina/group/query/message/SendGroupMessageAppQuery.java index 632ef13..04f45bf 100644 --- a/src/main/java/com/upchina/group/query/message/SendGroupMessageAppQuery.java +++ b/src/main/java/com/upchina/group/query/message/SendGroupMessageAppQuery.java @@ -1,10 +1,7 @@ package com.upchina.group.query.message; import com.upchina.common.vo.FrontUserVO; -import com.upchina.group.constant.GroupMessageContentType; -import com.upchina.group.constant.GroupMessageStatus; -import com.upchina.group.constant.GroupMessageType; -import com.upchina.group.constant.GroupMessageUserType; +import com.upchina.group.constant.*; import com.upchina.group.entity.GroupMessage; import io.swagger.annotations.ApiModelProperty; @@ -40,7 +37,9 @@ public class SendGroupMessageAppQuery { message.setUserName(userVO.getUserName()); message.setContentType(GroupMessageContentType.TEXT.value); message.setInteractiveType(interactiveType); - message.setPrivateUserId(userVO.getUserId()); + if (GroupInteractiveType.PRIVATE.value.equals(interactiveType)) { + message.setPrivateUserId(userVO.getUserId()); + } message.setStatus(status.value); message.setCreateUserId(userVO.getUserId()); message.setCreateTime(LocalDateTime.now()); diff --git a/src/main/java/com/upchina/group/service/admin/AdminGroupMessageService.java b/src/main/java/com/upchina/group/service/admin/AdminGroupMessageService.java index 234e671..e7faf99 100644 --- a/src/main/java/com/upchina/group/service/admin/AdminGroupMessageService.java +++ b/src/main/java/com/upchina/group/service/admin/AdminGroupMessageService.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.swing.*; import com.hazelcast.map.IMap; import com.upchina.common.config.cache.CacheKey; @@ -80,7 +81,8 @@ public class AdminGroupMessageService { GroupMessage message = query.toPO(backendUser); groupMessageMapper.insert(message); - publishGroupMessage(message); + groupMessageService.publishMessage(message); + return new OnlyIdVO(message.getId()); } @@ -107,7 +109,7 @@ public class AdminGroupMessageService { groupCacheService.removeMessage(groupMessageInDB); } else if (GroupMessageStatus.AUDITED.equals(targetStatus)) { if (!IsOrNot.IS.value.equals(group.getFirstAudit())) { - publishGroupMessage(groupMessageInDB); + groupMessageService.publishMessage(groupMessageInDB); } } } @@ -277,14 +279,6 @@ public class AdminGroupMessageService { groupInfoService.clearCache(groupId); } - private void publishGroupMessage(GroupMessage message) { - Map advisorMap = advisorInfoService.getAdvisorVoMap(); - GroupMessageVO vo = groupCacheService.getMessage(message, advisorMap); - - groupMessageService.publishGroupMessage(GroupMessageChannel.ALL, GroupMessageType.NORMAL, message.getGroupId(), vo); - groupCacheService.addMessage(message); - } - private void clearCache(Integer messageId) { groupCache.remove(CacheKey.GroupKey.GROUP_MESSAGE_DETAIL + messageId); } diff --git a/src/main/java/com/upchina/group/service/app/AppGroupMessageService.java b/src/main/java/com/upchina/group/service/app/AppGroupMessageService.java index e7f7505..afb54c6 100644 --- a/src/main/java/com/upchina/group/service/app/AppGroupMessageService.java +++ b/src/main/java/com/upchina/group/service/app/AppGroupMessageService.java @@ -122,8 +122,7 @@ public class AppGroupMessageService { GroupMessageVO vo = groupCacheService.getMessage(message, advisorMap); if (!IsOrNot.IS.value.equals(groupVO.getFirstAudit())) { - groupMessageService.publishGroupMessage(GroupMessageChannel.ALL, GroupMessageType.NORMAL, groupId, vo); - groupCacheService.addMessage(message); + groupMessageService.publishMessage(message); } return vo; diff --git a/src/main/java/com/upchina/group/service/common/GroupMessageService.java b/src/main/java/com/upchina/group/service/common/GroupMessageService.java index d08fb5c..e0d7c88 100644 --- a/src/main/java/com/upchina/group/service/common/GroupMessageService.java +++ b/src/main/java/com/upchina/group/service/common/GroupMessageService.java @@ -3,10 +3,15 @@ package com.upchina.group.service.common; import cn.hutool.json.JSONUtil; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.topic.ITopic; +import com.upchina.advisor.service.AdvisorInfoService; +import com.upchina.advisor.vo.AdvisorBasicVO; import com.upchina.common.config.cache.CacheKey; import com.upchina.common.vo.FrontUserVO; +import com.upchina.group.constant.GroupInteractiveType; import com.upchina.group.constant.GroupMessageChannel; import com.upchina.group.constant.GroupMessageType; +import com.upchina.group.entity.GroupMessage; +import com.upchina.group.vo.message.GroupMessageVO; import com.upchina.group.vo.message.GroupWsMessageVO; import com.upchina.video.entity.OnlineUser; import org.springframework.messaging.simp.SimpMessagingTemplate; @@ -26,6 +31,12 @@ public class GroupMessageService { @Resource private HazelcastInstance hazelcastInstance; + @Resource + private GroupCacheService groupCacheService; + + @Resource + private AdvisorInfoService advisorInfoService; + private final Map lastEnterMessageTimeMap = new HashMap<>(); // 进入消息频率控制(本节点) @@ -151,4 +162,17 @@ public class GroupMessageService { publishGroupMessage(GroupMessageChannel.ALL, GroupMessageType.ENTER_GROUP, groupId, frontUser.getUserName()); lastEnterMessageTimeMap.put(groupId, now); } + + public void publishMessage(GroupMessage message) { + Map advisorMap = advisorInfoService.getAdvisorVoMap(); + GroupMessageVO vo = groupCacheService.getMessage(message, advisorMap); + + if (GroupInteractiveType.GROUP.value.equals(message.getInteractiveType())) { + publishGroupMessage(GroupMessageChannel.ALL, GroupMessageType.NORMAL, message.getGroupId(), vo); + } else if (GroupInteractiveType.PRIVATE.value.equals(message.getInteractiveType())) { + publishPrivateMessage(GroupMessageChannel.ALL, GroupMessageType.NORMAL, message.getGroupId(), message.getPrivateUserId(), vo); + } + + groupCacheService.addMessage(message); + } } \ No newline at end of file