conversationNo更新

This commit is contained in:
dylanmay 2025-01-04 20:08:24 +08:00
parent 1f58fd2be4
commit b49339d08b
2 changed files with 17 additions and 28 deletions

View File

@ -41,11 +41,18 @@ public enum ImConversationTypeEnum implements IntArrayValuable {
* @return 会话编号 * @return 会话编号
*/ */
public static String generateConversationNo(Long fromUserId, Long receiverId, Integer conversationType) { public static String generateConversationNo(Long fromUserId, Long receiverId, Integer conversationType) {
if (conversationType.equals(ImConversationTypeEnum.SINGLE.getType())) { final String SINGLE_PREFIX = "s_";
return "s_" + fromUserId + "_" + receiverId; final String GROUP_PREFIX = "g_";
} else if (conversationType.equals(ImConversationTypeEnum.GROUP.getType())) {
return "g_" + receiverId; if (ImConversationTypeEnum.SINGLE.getType().equals(conversationType)) {
long minId = Math.min(fromUserId, receiverId);
long maxId = Math.max(fromUserId, receiverId);
return SINGLE_PREFIX + minId + "_" + maxId;
} else if (ImConversationTypeEnum.GROUP.getType().equals(conversationType)) {
return GROUP_PREFIX + receiverId;
} }
return null; return null;
} }

View File

@ -49,28 +49,15 @@ public class ImMessageServiceImpl implements ImMessageService {
private ImGroupMemberService imGroupMemberService; private ImGroupMemberService imGroupMemberService;
@Override @Override
public List<ImMessageDO> getMessageList(ImMessageListReqVO listReqVO) { public List<ImMessageDO> getMessageList(ImMessageListReqVO listReqVO, Long loginUserId) {
// TODO @dylanuserId controller 传递service 保持无状态
// 1. 获得会话编号 String no = generateConversationNo(loginUserId, listReqVO.getReceiverId(), listReqVO.getConversationType());
Long loginUserId = getLoginUserId();
// TODO @dylan修复下 generateConversationNo 方法fromUserIdreceiverId 需要小的放前面大的放后面这样可以保证一定只生成唯一的
String no1 = generateConversationNo(loginUserId, listReqVO.getReceiverId(), listReqVO.getConversationType());
String no2 = generateConversationNo(listReqVO.getReceiverId(),loginUserId, listReqVO.getConversationType());
// 2. 查询历史消息
ImMessageDO message = new ImMessageDO() ImMessageDO message = new ImMessageDO()
.setSendTime(listReqVO.getSendTime()) .setSendTime(listReqVO.getSendTime())
.setConversationNo(no1); .setConversationNo(no);
List<ImMessageDO> list = imMessageMapper.selectMessageList(message);
if (!list.isEmpty()) { return imMessageMapper.selectMessageList(message);
return list;
}
message.setConversationNo(no2);
list = imMessageMapper.selectMessageList(message);
return list;
} }
@Override @Override
@ -110,12 +97,7 @@ public class ImMessageServiceImpl implements ImMessageService {
AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId); AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId);
// 3. 生成conversationNo // 3. 生成conversationNo
String conversationNo = ""; String conversationNo = generateConversationNo(fromUserId, message.getReceiverId(), message.getConversationType());
if (fromUserId == message.getConversationUserId()) {
conversationNo = generateConversationNo(fromUserId, message.getReceiverId(), message.getConversationType());
} else {
conversationNo = generateConversationNo(message.getReceiverId(), fromUserId, message.getConversationType());
}
// 4. 保存消息 // 4. 保存消息
ImMessageDO imMessageDO = BeanUtil.copyProperties(message, ImMessageDO.class) ImMessageDO imMessageDO = BeanUtil.copyProperties(message, ImMessageDO.class)