Commit b49339d08b3517b9c854eecf04f2ee211385739b

Authored by dylanmay
1 parent 1f58fd2b

conversationNo更新

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 41 * @return 会话编号
42 42 */
43 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 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 49 private ImGroupMemberService imGroupMemberService;
50 50  
51 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 63 @Override
... ... @@ -110,12 +97,7 @@ public class ImMessageServiceImpl implements ImMessageService {
110 97 AdminUserRespDTO fromUser = adminUserApi.getUser(fromUserId);
111 98  
112 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 102 // 4. 保存消息
121 103 ImMessageDO imMessageDO = BeanUtil.copyProperties(message, ImMessageDO.class)
... ...