diff --git a/src/main/java/org/sadtech/social/core/service/MessageService.java b/src/main/java/org/sadtech/social/core/service/MessageService.java index a5ca63e..9ffaf9c 100644 --- a/src/main/java/org/sadtech/social/core/service/MessageService.java +++ b/src/main/java/org/sadtech/social/core/service/MessageService.java @@ -16,20 +16,30 @@ public interface MessageService { /** * Получить список сообщений за заданный временной интервал + * * @param timeFrom Начало интервала - * @param timeTo Конец интервала + * @param timeTo Конец интервала * @return Список сообщений */ List getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); /** * Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал + * * @param timeFrom Начало интервала - * @param timeTo Конец интервала + * @param timeTo Конец интервала * @return Список сообщений */ List getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); List getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); + /** + * Возвращает новые сообщения пользователей по дате добавления в хранилище. + * + * @param now Текущяя дата и время + * @return Последнее сообщение пользователя от последней переданной даты now + */ + List getNewMessage(LocalDateTime now); + } diff --git a/src/main/java/org/sadtech/social/core/service/impl/BoardCommentServiceImpl.java b/src/main/java/org/sadtech/social/core/service/impl/BoardCommentServiceImpl.java index b004d96..d0f2fe5 100644 --- a/src/main/java/org/sadtech/social/core/service/impl/BoardCommentServiceImpl.java +++ b/src/main/java/org/sadtech/social/core/service/impl/BoardCommentServiceImpl.java @@ -42,6 +42,11 @@ public class BoardCommentServiceImpl implements BoardCommentService { return getBoardComments(mails); } + @Override + public List getNewMessage(LocalDateTime now) { + return null; + } + private List getBoardComments(List mails) { Set people = new HashSet<>(); List returnMails = new ArrayList<>(); diff --git a/src/main/java/org/sadtech/social/core/service/impl/MailServiceImpl.java b/src/main/java/org/sadtech/social/core/service/impl/MailServiceImpl.java index 561d6fd..3e9f35f 100644 --- a/src/main/java/org/sadtech/social/core/service/impl/MailServiceImpl.java +++ b/src/main/java/org/sadtech/social/core/service/impl/MailServiceImpl.java @@ -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 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 getNewMessage(LocalDateTime now) { + List lastEventByAddDateTime = Collections.emptyList(); + if (newMessage) { + lastEventByAddDateTime = getLastEventByAddDateTime(oldDateTime, now); + newMessage = false; + } + oldDateTime = now; + return lastEventByAddDateTime; + } + private List getReturnMails(List mails) { Set people = new HashSet<>(); List returnMails = new ArrayList<>();