1.简化messageMarks的逻辑
This commit is contained in:
@@ -43,22 +43,16 @@ public class ChatMessageResp extends BaseEntity {
|
||||
private Integer type;
|
||||
@Schema(description ="消息内容不同的消息类型,内容体不同")
|
||||
private Object body;
|
||||
@Schema(description ="消息标记")
|
||||
private MessageMark messageMark;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class MessageMark {
|
||||
@Schema(description = "扩展标记统计(type为MessageMarkTypeEnum的type字段)")
|
||||
private Map<Integer, MarkItem> markStats;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public static class MarkItem {
|
||||
@Schema(description = "标记数量")
|
||||
private Integer count;
|
||||
@Schema(description = "当前用户是否标记")
|
||||
private Boolean userMarked;
|
||||
}
|
||||
private Map<Integer, MarkItem> messageMarks;
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
public static class MarkItem {
|
||||
@Schema(description = "标记数量")
|
||||
private Integer count;
|
||||
@Schema(description = "当前用户是否标记")
|
||||
private Boolean userMarked;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,29 +60,27 @@ public class MessageAdapter {
|
||||
messageVO.setBody(msgHandler.showMsg(message));
|
||||
}
|
||||
//消息标记
|
||||
messageVO.setMessageMark(buildMsgMark(marks, receiveUid));
|
||||
messageVO.setMessageMarks(buildMsgMark(marks, receiveUid));
|
||||
return messageVO;
|
||||
}
|
||||
|
||||
private static ChatMessageResp.MessageMark buildMsgMark(List<MessageMark> marks, Long receiveUid) {
|
||||
private static Map<Integer, ChatMessageResp.MarkItem> buildMsgMark(List<MessageMark> marks, Long receiveUid) {
|
||||
Map<Integer, List<MessageMark>> typeMap = marks.stream().collect(Collectors.groupingBy(MessageMark::getType));
|
||||
|
||||
ChatMessageResp.MessageMark mark = new ChatMessageResp.MessageMark();
|
||||
Map<Integer, ChatMessageResp.MessageMark.MarkItem> stats = new HashMap<>();
|
||||
// 构造动态统计为主数据源
|
||||
Map<Integer, ChatMessageResp.MarkItem> stats = new HashMap<>();
|
||||
|
||||
// 批量映射操作数量
|
||||
Arrays.stream(MessageMarkTypeEnum.values()).forEach(typeEnum -> {
|
||||
List<MessageMark> list = typeMap.getOrDefault(typeEnum.getType(), Collections.emptyList());
|
||||
|
||||
stats.put(typeEnum.getType(), new ChatMessageResp.MessageMark.MarkItem(list.size(), Optional.ofNullable(receiveUid)
|
||||
stats.put(typeEnum.getType(), new ChatMessageResp.MarkItem(list.size(), Optional.ofNullable(receiveUid)
|
||||
.filter(uid -> list.stream().anyMatch(m -> m != null && Objects.equals(m.getUid(), uid)))
|
||||
.map(uid -> YesOrNoEnum.YES.getBool())
|
||||
.orElse(YesOrNoEnum.NO.getBool())));
|
||||
});
|
||||
|
||||
// 设置动态统计为主数据源
|
||||
mark.setMarkStats(stats);
|
||||
return mark;
|
||||
return stats;
|
||||
}
|
||||
|
||||
private static ChatMessageResp.UserInfo buildFromUser(Long fromUid) {
|
||||
|
||||
Reference in New Issue
Block a user