diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/ContactService.java b/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/ContactService.java index 6fd4c7f..0e07def 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/ContactService.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/ContactService.java @@ -25,5 +25,5 @@ public interface ContactService { Integer getMsgUnReadCount(Message message); - Map getMsgReadInfo(List messages); + Map getMsgReadInfo(List messages, boolean needUnread); } diff --git a/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/impl/ContactServiceImpl.java b/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/impl/ContactServiceImpl.java index 119aef5..8c9f78f 100644 --- a/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/impl/ContactServiceImpl.java +++ b/mallchat-common/src/main/java/com/abin/mallchat/common/chat/service/impl/ContactServiceImpl.java @@ -51,17 +51,23 @@ public class ContactServiceImpl implements ContactService { } @Override - public Map getMsgReadInfo(List messages) { + public Map getMsgReadInfo(List messages, boolean needUnread) { Map> roomGroup = messages.stream().collect(Collectors.groupingBy(Message::getRoomId)); AssertUtil.equal(roomGroup.size(), 1, "只能查相同房间下的消息"); Long roomId = roomGroup.keySet().iterator().next(); - Integer totalCount = contactDao.getTotalCount(roomId); + Integer totalCount = null; + if (needUnread) { + totalCount = contactDao.getTotalCount(roomId); + } + Integer finalTotalCount = totalCount; return messages.stream().map(message -> { MsgReadInfoDTO readInfoDTO = new MsgReadInfoDTO(); readInfoDTO.setMsgId(message.getId()); Integer readCount = contactDao.getReadCount(message); readInfoDTO.setReadCount(readCount); - readInfoDTO.setUnReadCount(totalCount - readCount); + if (needUnread) { + readInfoDTO.setUnReadCount(finalTotalCount - readCount); + } return readInfoDTO; }).collect(Collectors.toMap(MsgReadInfoDTO::getMsgId, Function.identity())); } diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/ChatMessageReadInfoReq.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/ChatMessageReadInfoReq.java index 2b1c585..f8688fa 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/ChatMessageReadInfoReq.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/domain/vo/request/ChatMessageReadInfoReq.java @@ -22,4 +22,6 @@ public class ChatMessageReadInfoReq { @ApiModelProperty("消息id集合(只查本人)") @Size(max = 20) private List msgIds; + @ApiModelProperty("是否需要查未读数") + private boolean needUnread; } diff --git a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/impl/ChatServiceImpl.java b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/impl/ChatServiceImpl.java index c81b4fe..2ba83f6 100644 --- a/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/impl/ChatServiceImpl.java +++ b/mallchat-custom-server/src/main/java/com/abin/mallchat/custom/chat/service/impl/ChatServiceImpl.java @@ -234,7 +234,7 @@ public class ChatServiceImpl implements ChatService { messages.forEach(message -> { AssertUtil.equal(uid, message.getFromUid(), "只能查询自己发送的消息"); }); - return contactService.getMsgReadInfo(messages).values(); + return contactService.getMsgReadInfo(messages, request.isNeedUnread()).values(); } @Override