公聊房-改造sendSysMsgService里发送全服房间消息的公共方法

This commit is contained in:
2025-08-22 18:15:25 +08:00
parent 6d93e929fb
commit 8873022807
2 changed files with 55 additions and 2 deletions

View File

@@ -15,9 +15,20 @@ public class Attach {
private String message;
private Object data;
//用于携带给客户端用于区分同一组first和second的消息是单房间消息还是轮询全服房间遍历发送的单房间消息
//已使用公聊房机制解决轮询全服房间发送消息的云信im限频问题
private Integer allRoomMsg;
public Attach(int first, int second, Object data) {
this.first = first;
this.second = second;
this.data = data;
}
public Attach(int first, int second, Object data, int allRoomMsg) {
this.first = first;
this.second = second;
this.data = data;
this.allRoomMsg = allRoomMsg;
}
}

View File

@@ -18,10 +18,12 @@ import com.accompany.common.utils.ReplaceAppDomainUtils;
import com.accompany.common.utils.UUIDUtil;
import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.enumeration.I18nAlertEnum;
import com.accompany.core.model.PartitionInfo;
import com.accompany.core.model.Room;
import com.accompany.core.model.Users;
import com.accompany.core.mybatismapper.RoomMapperExpand;
import com.accompany.core.service.base.BaseService;
import com.accompany.core.service.partition.PartitionInfoService;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@@ -61,6 +63,8 @@ public class SendSysMsgService extends BaseService {
@Autowired
private RoomMapperExpand roomMapperExpand;
@Autowired
private PartitionInfoService partitionInfoService;
/**
* 发送系统通知,捕获异常不抛出。
@@ -546,13 +550,33 @@ public class SendSysMsgService extends BaseService {
});
}
public void sendMessageToPartition(Integer partitionId, int first, int second, Object data) {
public void sendSingleRoomMessage(long roomId, String fromAccId, BaseChatRoomMsg msg) {
try {
String msgId = UUIDUtil.get();
this.erBanNetEaseService.sendChatRoomMsg(roomId, msgId, fromAccId,
msg.getMsgType(), msg.getAttach(), msg.getExt());
} catch (Exception e) {
log.error("发送房间消息失败[roomId : {}, fromAccId : {}, message : {}]",
roomId, fromAccId, msg, e);
}
}
public void sendMessageToPartition(int partitionId, int first, int second, Object data) {
Attach attach = new Attach(first, second, data);
sendMessageToPartition(partitionId, attach);
}
public void sendMessageToPartition(Integer partitionId, Attach attach) {
public void sendMessageToPartition(int partitionId, Attach attach) {
attach.setAllRoomMsg(Constant.Yes1No0.YES);
BaseChatRoomMsg msg = BaseChatRoomMsg.buildBaseChatRoomMsg(attach);
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
if (partitionInfo == null){
return;
}
sendSingleRoomMessage(partitionInfo.getPublicChatRoomId(), SystemConfig.secretaryUid, attach);
sendMessageToPartition(partitionId, msg);
}
@@ -562,7 +586,16 @@ public class SendSysMsgService extends BaseService {
}
public void sendMessageToPartition(Room curRoom, Attach attach) {
attach.setAllRoomMsg(Constant.Yes1No0.YES);
BaseChatRoomMsg msg = BaseChatRoomMsg.buildBaseChatRoomMsg(attach);
PartitionInfo partitionInfo = partitionInfoService.getById(curRoom.getPartitionId());
if (partitionInfo == null){
return;
}
sendSingleRoomMessage(partitionInfo.getPublicChatRoomId(), SystemConfig.secretaryUid, attach);
sendMessageToPartition(curRoom, msg);
}
@@ -608,6 +641,15 @@ public class SendSysMsgService extends BaseService {
}
public void sendFloatingMessageForRoom(FloatingMessageTemplate message) {
int partitionId = message.getPartitionId();
PartitionInfo partitionInfo = partitionInfoService.getById(partitionId);
if (partitionInfo == null){
return;
}
sendFloatingMessageForRoom(partitionInfo.getPublicChatRoomId(), Long.parseLong(SystemConfig.secretaryUid), message);
List<Room> validRooms = this.roomMapperExpand.listValidRoomsByPartitionId(null, message.getPartitionId());
if (CollectionUtils.isEmpty(validRooms)){
return;