Я делаю приложение чата. Когда я получаю историю чата пользователя, он переносит все записи, которые присутствуют в базе данных. Мне просто нужна только история чата за последние 3 дня этого пользователя. Для этого нужно применить нумерацию страниц с указанием даты.
Я делюсь своим примером кода здесь
Это контроллер:
@GetMapping("/getAllGroupChatHistory/{userId}")
ArrayList<ResultGroupChatHistoryDTO> getAllGroupChatHistory(@PathVariable long userId){
return messagingService.getAllGroupChatHistory(userId);
}
Это serviceImpl
public ArrayList<ResultGroupChatHistoryDTO> getAllGroupChatHistory(long userId) {
List<GroupEntity> groupMembers = groupRepository.findAll();
List<GroupEntity> listgroupMembers = new ArrayList<GroupEntity>();
groupMembers.forEach(groupMember -> {
if (groupMember.getParticipates().contains(userId)) {
listgroupMembers.add(groupMember);
}
});
System.out.println("list" + listgroupMembers);
List grpIds = listgroupMembers.stream().map(grpEntity -> grpEntity.getGroup_id()).collect(Collectors.toList());
ArrayList<ResultGroupChatHistoryDTO> finalresult = new ArrayList();
for (int val = 0; val < grpIds.size(); val++) {
ResultGroupChatHistoryDTO rchatDTO = new ResultGroupChatHistoryDTO();
int grpId = (int) grpIds.get(val);
List<GroupChatEntity> senderHistory = groupChatRepository.findChatByGroupId(grpId);
ArrayList<GroupChatHistoryDTO> message = new ArrayList();
for (int i = 0; i < senderHistory.size(); i++) {
GroupChatHistoryDTO chatDTO = new GroupChatHistoryDTO();
GroupChatEntity groupChatEntity = senderHistory.get(i);
chatDTO.setId(groupChatEntity.getSender_id());
chatDTO.setSenderName(groupChatEntity.getReciever_name());
chatDTO.setTime(groupChatEntity.getSent_time());
chatDTO.setLastMessage(groupChatEntity.getMessage());
message.add(chatDTO);
}
rchatDTO.setMessages(message);
rchatDTO.setId(val);
finalresult.add(rchatDTO);
}
return finalresult;
}
Я использую mongoRepository подключиться. Как мне нужно применить нумерацию страниц по дате последних 3 дней?