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 会话编号
*/
public static String generateConversationNo(Long fromUserId, Long receiverId, Integer conversationType) {
if (conversationType.equals(ImConversationTypeEnum.SINGLE.getType())) {
return "s_" + fromUserId + "_" + receiverId;
} else if (conversationType.equals(ImConversationTypeEnum.GROUP.getType())) {
return "g_" + receiverId;
final String SINGLE_PREFIX = "s_";
final String GROUP_PREFIX = "g_";
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;
}

View File

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