Изменил логику получения новых сообщений

This commit is contained in:
Mark Struchkov 2019-08-17 23:27:50 +03:00
parent a9f329271b
commit cb0b82045d
3 changed files with 33 additions and 2 deletions

View File

@ -16,20 +16,30 @@ public interface MessageService<T extends Message> {
/**
* Получить список сообщений за заданный временной интервал
*
* @param timeFrom Начало интервала
* @param timeTo Конец интервала
* @param timeTo Конец интервала
* @return Список сообщений
*/
List<T> getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
/**
* Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал
*
* @param timeFrom Начало интервала
* @param timeTo Конец интервала
* @param timeTo Конец интервала
* @return Список сообщений
*/
List<T> getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
List<T> getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
/**
* Возвращает новые сообщения пользователей по дате добавления в хранилище.
*
* @param now Текущяя дата и время
* @return Последнее сообщение пользователя от последней переданной даты now
*/
List<T> getNewMessage(LocalDateTime now);
}

View File

@ -42,6 +42,11 @@ public class BoardCommentServiceImpl implements BoardCommentService {
return getBoardComments(mails);
}
@Override
public List<BoardComment> getNewMessage(LocalDateTime now) {
return null;
}
private List<BoardComment> getBoardComments(List<BoardComment> mails) {
Set<Integer> people = new HashSet<>();
List<BoardComment> returnMails = new ArrayList<>();

View File

@ -6,7 +6,9 @@ import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.ContentRepository;
import org.sadtech.social.core.service.MailService;
import java.time.Clock;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@ -18,10 +20,13 @@ import java.util.Set;
public class MailServiceImpl implements MailService {
private final ContentRepository<Mail> mailRepository;
private boolean newMessage = false;
private LocalDateTime oldDateTime = LocalDateTime.now(Clock.tickSeconds(ZoneId.systemDefault()));
@Override
public void add(Mail mail) {
mailRepository.add(mail);
newMessage = true;
log.info("Сообщение добавлено в репозиторий | {}", mail);
}
@ -53,6 +58,17 @@ public class MailServiceImpl implements MailService {
}
}
@Override
public List<Mail> getNewMessage(LocalDateTime now) {
List<Mail> lastEventByAddDateTime = Collections.emptyList();
if (newMessage) {
lastEventByAddDateTime = getLastEventByAddDateTime(oldDateTime, now);
newMessage = false;
}
oldDateTime = now;
return lastEventByAddDateTime;
}
private List<Mail> getReturnMails(List<Mail> mails) {
Set<Integer> people = new HashSet<>();
List<Mail> returnMails = new ArrayList<>();