Commit b49339d08b3517b9c854eecf04f2ee211385739b
1 parent
1f58fd2b
conversationNo更新
Showing
2 changed files
with
18 additions
and
29 deletions
yudao-module-im/yudao-module-im-api/src/main/java/cn/iocoder/yudao/module/im/enums/conversation/ImConversationTypeEnum.java
| @@ -41,11 +41,18 @@ public enum ImConversationTypeEnum implements IntArrayValuable { | @@ -41,11 +41,18 @@ public enum ImConversationTypeEnum implements IntArrayValuable { | ||
| 41 | * @return 会话编号 | 41 | * @return 会话编号 |
| 42 | */ | 42 | */ |
| 43 | public static String generateConversationNo(Long fromUserId, Long receiverId, Integer conversationType) { | 43 | public static String generateConversationNo(Long fromUserId, Long receiverId, Integer conversationType) { |
| 44 | - if (conversationType.equals(ImConversationTypeEnum.SINGLE.getType())) { | ||
| 45 | - return "s_" + fromUserId + "_" + receiverId; | ||
| 46 | - } else if (conversationType.equals(ImConversationTypeEnum.GROUP.getType())) { | ||
| 47 | - return "g_" + receiverId; | 44 | + final String SINGLE_PREFIX = "s_"; |
| 45 | + final String GROUP_PREFIX = "g_"; | ||
| 46 | + | ||
| 47 | + if (ImConversationTypeEnum.SINGLE.getType().equals(conversationType)) { | ||
| 48 | + long minId = Math.min(fromUserId, receiverId); | ||
| 49 | + long maxId = Math.max(fromUserId, receiverId); | ||
| 50 | + return SINGLE_PREFIX + minId + "_" + maxId; | ||
| 51 | + | ||
| 52 | + } else if (ImConversationTypeEnum.GROUP.getType().equals(conversationType)) { | ||
| 53 | + return GROUP_PREFIX + receiverId; | ||
| 48 | } | 54 | } |
| 55 | + | ||
| 49 | return null; | 56 | return null; |
| 50 | } | 57 | } |
| 51 | 58 |
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/message/ImMessageServiceImpl.java
| @@ -49,28 +49,15 @@ public class ImMessageServiceImpl implements ImMessageService { | @@ -49,28 +49,15 @@ public class ImMessageServiceImpl implements ImMessageService { | ||
| 49 | private ImGroupMemberService imGroupMemberService; | 49 | private ImGroupMemberService imGroupMemberService; |
| 50 | 50 | ||
| 51 | @Override | 51 | @Override |
| 52 | - public List<ImMessageDO> getMessageList(ImMessageListReqVO listReqVO) { | ||
| 53 | - // TODO @dylan:userId 从 controller 传递,service 保持无状态 | ||
| 54 | - // 1. 获得会话编号 | ||
| 55 | - Long loginUserId = getLoginUserId(); | ||
| 56 | - // TODO @dylan:修复下 generateConversationNo 方法,fromUserId、receiverId 需要小的放前面,大的放后面。这样,可以保证一定只生成唯一的。 | ||
| 57 | - String no1 = generateConversationNo(loginUserId, listReqVO.getReceiverId(), listReqVO.getConversationType()); | ||
| 58 | - String no2 = generateConversationNo(listReqVO.getReceiverId(),loginUserId, listReqVO.getConversationType()); | ||
| 59 | - | ||
| 60 | - // 2. 查询历史消息 | ||
| 61 | - ImMessageDO message = new ImMessageDO() | ||
| 62 | - .setSendTime(listReqVO.getSendTime()) | ||
| 63 | - .setConversationNo(no1); | ||
| 64 | - List<ImMessageDO> list = imMessageMapper.selectMessageList(message); | 52 | + public List<ImMessageDO> getMessageList(ImMessageListReqVO listReqVO, Long loginUserId) { |
| 65 | 53 | ||
| 66 | - if (!list.isEmpty()) { | ||
| 67 | - return list; | ||
| 68 | - } | 54 | + String no = generateConversationNo(loginUserId, listReqVO.getReceiverId(), listReqVO.getConversationType()); |
| 69 | 55 | ||
| 70 | - message.setConversationNo(no2); | ||
| 71 | - list = imMessageMapper.selectMessageList(message); | 56 | + ImMessageDO message = new ImMessageDO() |
| 57 | + .setSendTime(listReqVO.getSendTime()) | ||
| 58 | + .setConversationNo(no); | ||
| 72 | 59 | ||
| 73 | - return list; | 60 | + return imMessageMapper.selectMessageList(message); |
| 74 | } | 61 | } |
| 75 | 62 | ||
| 76 | @Override | 63 | @Override |
| @@ -110,12 +97,7 @@ public class ImMessageServiceImpl implements ImMessageService { | @@ -110,12 +97,7 @@ public class ImMessageServiceImpl implements ImMessageService { | ||
| 110 | AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId); | 97 | AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId); |
| 111 | 98 | ||
| 112 | // 3. 生成conversationNo | 99 | // 3. 生成conversationNo |
| 113 | - String conversationNo = ""; | ||
| 114 | - if (fromUserId == message.getConversationUserId()) { | ||
| 115 | - conversationNo = generateConversationNo(fromUserId, message.getReceiverId(), message.getConversationType()); | ||
| 116 | - } else { | ||
| 117 | - conversationNo = generateConversationNo(message.getReceiverId(), fromUserId, message.getConversationType()); | ||
| 118 | - } | 100 | + String conversationNo = generateConversationNo(fromUserId, message.getReceiverId(), message.getConversationType()); |
| 119 | 101 | ||
| 120 | // 4. 保存消息 | 102 | // 4. 保存消息 |
| 121 | ImMessageDO imMessageDO = BeanUtil.copyProperties(message, ImMessageDO.class) | 103 | ImMessageDO imMessageDO = BeanUtil.copyProperties(message, ImMessageDO.class) |